[][src]Struct xi_rpc::RpcLoop

pub struct RpcLoop<W: Write + 'static> { /* fields omitted */ }

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]

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

impl<W> Unpin for RpcLoop<W>

impl<W> Sync for RpcLoop<W> where
    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]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]