pub struct RpcLoop<W: Write + 'static> { /* private fields */ }
Expand description
A structure holding the state of a main loop for handling RPC’s.
Implementations§
Source§impl<W: Write + Send> RpcLoop<W>
impl<W: Write + Send> RpcLoop<W>
Sourcepub fn new(writer: W) -> Self
pub fn new(writer: W) -> Self
Creates a new RpcLoop
with the given output stream (which is used for
sending requests and notifications, as well as responses).
Sourcepub fn get_raw_peer(&self) -> RawPeer<W>
pub fn get_raw_peer(&self) -> RawPeer<W>
Gets a reference to the peer.
Sourcepub fn mainloop<R, RF, H>(
&mut self,
rf: RF,
handler: &mut H,
) -> Result<(), ReadError>
pub fn mainloop<R, RF, H>( &mut self, rf: RF, handler: &mut H, ) -> Result<(), ReadError>
Starts the event loop, reading lines from the reader until EOF, or an error occurs.
Returns Ok()
in the EOF case, otherwise returns the
underlying ReadError
.
§Note:
The reader is supplied via a closure, as basically a workaround
so that the reader doesn’t have to be Send
. Internally, the
main loop starts a separate thread for I/O, and at startup that
thread calls the given closure.
Calls to the handler happen on the caller’s thread.
Calls to the handler are guaranteed to preserve the order as they appear on on the channel. At the moment, there is no way for there to be more than one incoming request to be outstanding.