Created
July 5, 2020 10:33
-
-
Save narodnik/ece819783ce8a6d18027e62a71f6a2c6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct TitanClient { | |
} | |
impl TitanClient { | |
fn new() -> Self { | |
TitanClient { | |
} | |
} | |
fn stop(&self) { | |
//stream.get_ref().shutdown(Shutdown::Both).expect("shutdown call failed"); | |
} | |
async fn wait_shutdown_signal(&self, stopped: Arc<bool>) { | |
} | |
async fn start(&self) -> io::Result<()> { | |
let mut stream = Arc::new(try_connect().await); | |
println!("Connected to {}", stream.get_ref().peer_addr()?); | |
let (s, r) = async_channel::bounded::<()>(1); | |
let mut stopped = Arc::new(false); | |
let _ = smol::Task::spawn(self.wait_shutdown_signal(stopped.clone())); | |
loop { | |
let mut magic = [0u8; 4]; | |
stream.read_exact(&mut magic).await?; | |
let mut command = [0u8; 1]; | |
stream.read_exact(&mut command).await?; | |
let mut payload_len = [0u8; 4]; | |
stream.read_exact(&mut payload_len).await?; | |
let payload_len = u32::from_be_bytes(payload_len); | |
let mut payload = vec![0u8; payload_len as usize]; | |
stream.read_exact(&mut payload).await?; | |
} | |
Ok(()) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment