pub struct TMultiplexedOutputProtocol<P>where
P: TOutputProtocol,{ /* private fields */ }Expand description
TOutputProtocol that prefixes the service name to all outgoing Thrift
messages.
A TMultiplexedOutputProtocol should be used when multiple Thrift services
send messages over a single I/O channel. By prefixing service identifiers
to outgoing messages receivers are able to demux them and route them to the
appropriate service processor. Rust receivers must use a TMultiplexedProcessor
to process incoming messages, while other languages must use their
corresponding multiplexed processor implementations.
For example, given a service TestService and a service call test_call,
this implementation would identify messages as originating from
TestService:test_call.
§Examples
Create and use a TMultiplexedOutputProtocol.
use thrift::protocol::{TMessageIdentifier, TMessageType, TOutputProtocol};
use thrift::protocol::{TBinaryOutputProtocol, TMultiplexedOutputProtocol};
use thrift::transport::TTcpChannel;
let mut channel = TTcpChannel::new();
channel.open("localhost:9090").unwrap();
let protocol = TBinaryOutputProtocol::new(channel, true);
let mut protocol = TMultiplexedOutputProtocol::new("service_name", protocol);
let ident = TMessageIdentifier::new("svc_call", TMessageType::Call, 1);
protocol.write_message_begin(&ident).unwrap();Implementations§
Source§impl<P> TMultiplexedOutputProtocol<P>where
P: TOutputProtocol,
impl<P> TMultiplexedOutputProtocol<P>where
P: TOutputProtocol,
Sourcepub fn new(service_name: &str, wrapped: P) -> TMultiplexedOutputProtocol<P>
pub fn new(service_name: &str, wrapped: P) -> TMultiplexedOutputProtocol<P>
Create a TMultiplexedOutputProtocol that identifies outgoing messages
as originating from a service named service_name and sends them over
the wrapped TOutputProtocol. Outgoing messages are encoded and sent
by wrapped, not by this instance.