[−][src]Struct xi_rpc::RpcLoop
A structure holding the state of a main loop for handling RPC's.
Methods
impl<W: Write + Send> RpcLoop<W>
[src]
pub fn new(writer: W) -> Self
[src]
Creates a new RpcLoop
with the given output stream (which is used for
sending requests and notifications, as well as responses).
pub fn get_raw_peer(&self) -> RawPeer<W>
[src]
Gets a reference to the peer.
pub fn mainloop<R, RF, H>(
&mut self,
rf: RF,
handler: &mut H
) -> Result<(), ReadError> where
R: BufRead,
RF: Send + FnOnce() -> R,
H: Handler,
[src]
&mut self,
rf: RF,
handler: &mut H
) -> Result<(), ReadError> where
R: BufRead,
RF: Send + FnOnce() -> R,
H: Handler,
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.
Auto Trait Implementations
impl<W> Send for RpcLoop<W> where
W: Send,
W: Send,
impl<W> Unpin for RpcLoop<W>
impl<W> Sync for RpcLoop<W> where
W: Send,
W: Send,
impl<W> !UnwindSafe for RpcLoop<W>
impl<W> !RefUnwindSafe for RpcLoop<W>
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,