Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. use std::net::{SocketAddr, TcpStream};
  2. use std::sync::mpsc;
  3. use std::thread;
  4.  
  5. pub struct TelnetConfig {
  6. pub address: SocketAddr,
  7. }
  8.  
  9. pub enum TelnetClientMessage {
  10. Outbound(String),
  11. }
  12.  
  13. pub struct TelnetClient {
  14. config: TelnetConfig,
  15. telnet_socket: Option<TcpStream>,
  16. }
  17.  
  18. impl TelnetClient {
  19. pub fn new(config: TelnetConfig) -> TelnetClient {
  20. let myself = TelnetClient {
  21. config,
  22. telnet_socket: None,
  23. };
  24. return myself;
  25. }
  26.  
  27. pub fn start(&self) -> (mpsc::SyncSender<TelnetClientMessage>, thread::JoinHandle<()>, thread::JoinHandle<()>) {
  28. let (send_to_me, outbound_mailbox) = mpsc::sync_channel(0); // 0 byte buffer
  29.  
  30. let mailbox_thread = thread::spawn(move || {self.mailbox_loop(outbound_mailbox); });
  31. let telnet_thread = thread::spawn(|| { self.telnet_loop(); });
  32. return (send_to_me, telnet_thread, mailbox_thread);
  33. }
  34.  
  35. fn mailbox_loop(&mut self, mailbox: mpsc::Receiver<TelnetClientMessage>) {
  36. /* Outbound(x) => Send stuff to Telnet server */
  37. }
  38. fn telnet_loop(&mut self) { /* read from TcpStream and process it. */ }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement