Trait futures_zmq::prelude::StreamSocket
source · pub trait StreamSocket: IntoInnerSocket {
fn recv(self) -> <Self::Socket as InnerSocket<Self>>::Response { ... }
fn stream(self) -> <Self::Socket as InnerSocket<Self>>::Stream { ... }
}
Expand description
This trait provides the basic Stream support for ZeroMQ Sockets. It depends on IntoInnerSocket
, but
provides implementations for sink
and recv
.
Provided Methods
sourcefn recv(self) -> <Self::Socket as InnerSocket<Self>>::Response
fn recv(self) -> <Self::Socket as InnerSocket<Self>>::Response
Receive a single multipart message from the socket.
Example, using the Rep wrapper type
extern crate futures;
extern crate tokio;
extern crate tokio_zmq;
extern crate zmq;
use std::sync::Arc;
use futures::Future;
use tokio_zmq::{prelude::*, async_types::MultipartStream, Error, Multipart, Rep};
fn main() {
let context = Arc::new(zmq::Context::new());
let fut = Rep::builder(context)
.connect("tcp://localhost:5568")
.build()
.and_then(|rep| {
rep.recv().and_then(|(multipart, _)| {
for msg in &multipart {
if let Some(msg) = msg.as_str() {
println!("Message: {}", msg);
}
}
Ok(multipart)
})
});
// tokio::run(fut.map(|_| ()).or_else(|e| {
// println!("Error: {}", e);
// Ok(())
// }));
}
sourcefn stream(self) -> <Self::Socket as InnerSocket<Self>>::Stream
fn stream(self) -> <Self::Socket as InnerSocket<Self>>::Stream
Receive a stream of multipart messages from the socket.
Example, using a Sub wrapper type
extern crate zmq;
extern crate futures;
extern crate tokio;
extern crate tokio_zmq;
use std::sync::Arc;
use futures::{Future, Stream};
use tokio_zmq::{prelude::*, async_types::MultipartStream, Error, Multipart, Sub};
fn main() {
let context = Arc::new(zmq::Context::new());
let fut = Sub::builder(context)
.connect("tcp://localhost:5569")
.filter(b"")
.build()
.and_then(|sub| {
sub.stream().for_each(|multipart| {
for msg in multipart {
if let Some(msg) = msg.as_str() {
println!("Message: {}", msg);
}
}
Ok(())
})
});
// tokio::run(fut.map(|_| ()).or_else(|e| {
// println!("Error: {}", e);
// Ok(())
// }));
}