Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. use futures::{Sink, Stream, future, Future};
  2. use std::io;
  3.  
  4. pub enum Request {
  5. Discover,
  6. }
  7.  
  8. pub enum Response {
  9. Discover,
  10. }
  11.  
  12. pub struct Coordinator<T: Sink + Stream> {
  13. transport: T,
  14. }
  15.  
  16. impl<T> Coordinator<T>
  17. where
  18. T: Sink<SinkItem = Request, SinkError = io::Error> + Stream<Item = Response, Error=io::Error>,
  19. {
  20. pub fn new(transport: T) -> Coordinator<T> {
  21. Coordinator {
  22. transport,
  23. }
  24. }
  25.  
  26. pub fn discover(&self) -> Box<Future<Item = (), Error = io::Error>> {
  27. let request = Request::Discover;
  28. let done = self.transport.send(request).and_then(
  29. |transport| {
  30. transport.for_each(|response| {
  31. // do something
  32. future::ok(())
  33. })
  34. }
  35. );
  36. Box::new(done)
  37. }
  38. }
  39.  
  40.  
  41.  
  42. fn main() {
  43. let str1 = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUREOUJINzJ1djFEYit2Qmplemxadkh2ZTdabUhzQklHeWFyeXRidjNxOXFvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFTXd6MXVVT09IQm9YTE0vN0lwclplMmt3cVorMGMwamR2L3ZmeURoS3diVFF2azZWL1pBNApnOXozRlJudXVMdmJKa3l6enl6V2hlT1VxbythQW93UFFnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=";
  44. let str2 = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUVhdVY0YWt2NjkzaEwwSjFjRkw3MU5UYXdDb0FmSmFzUUpHdk9jN0FkV25vQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFMlJlYVA3VmhUWmtXN0tmYlAxdnBMdEVrZ21saklsdHh3ZFYvUlA2WDFyU3ZSYTBkN1RpdwphczRmSHRZYm8xMHNiMzZSS0tQU2VaZDVIN25XaTdqb2tBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=";
  45. assert_ne!(str1, str2);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement