Skip to content

Instantly share code, notes, and snippets.

@narodnik
Created July 5, 2020 10:33
Show Gist options
  • Save narodnik/ece819783ce8a6d18027e62a71f6a2c6 to your computer and use it in GitHub Desktop.
Save narodnik/ece819783ce8a6d18027e62a71f6a2c6 to your computer and use it in GitHub Desktop.
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