tejmagar / tej-protoc-rust

A custom tej_protocol implemented in Rust langauge for fast file and message transfer. Also, checkout Python implementation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tej-protoc

A custom tej_protocol implemented in Rust language for fast file and message transfer. Also, checkout Python implementation.

Installation

[dependencies]
tej-protoc = { git = "https://github.com/tejmagar/tej-protoc-rust" }

Example Usage

Client

Simple client demo

use std::net::{Shutdown, TcpStream};
use tej_protoc::protoc::decoder::{decode_tcp_stream, DecodedResponse};


fn handle_decoded_response(tcp_stream: &mut TcpStream, decoded_response: DecodedResponse) {
    println!("{:?}", decoded_response);
}

fn test_client() {
    let mut tcp_stream = TcpStream::connect("127.0.0.1:1234").unwrap();

    loop {
        let decoded_response = decode_tcp_stream(&mut tcp_stream);

        match decoded_response {
            Ok(response) => {
                handle_decoded_response(&mut tcp_stream, response);
            }

            Err(error) => {
                eprintln!("{}", error);

                match (tcp_stream.shutdown(Shutdown::Both)) {
                    Ok(_) => {}
                    Err(error) => {
                        eprintln!("Failed to shutdown tcp stream. {:?}", error);
                    }
                }
            }
        }
    }
}

Server

fn test_server() {
    println!("Starting server in 127.0.0.1:1234");
    let server = TcpListener::bind("127.0.0.1:1234").unwrap();

    for tcp_stream in server.incoming() {
        thread::spawn(move || {
            print!("Connected");
            let mut tcp_stream = tcp_stream.unwrap();
            let bytes = build_bytes_for_message(&"Test 123".as_bytes().to_vec());
            tcp_stream.write_all(&bytes).unwrap();

            loop {
                let result = decode_tcp_stream(&mut tcp_stream);
                println!("{:?}", result);
            }
        });
    }
}

About

A custom tej_protocol implemented in Rust langauge for fast file and message transfer. Also, checkout Python implementation.


Languages

Language:Rust 92.3%Language:Python 7.7%