Struct RpcLoop

Source
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>

Source

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).

Source

pub fn get_raw_peer(&self) -> RawPeer<W>

Gets a reference to the peer.

Source

pub fn mainloop<R, RF, H>( &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> Freeze for RpcLoop<W>

§

impl<W> RefUnwindSafe for RpcLoop<W>

§

impl<W> Send for RpcLoop<W>
where W: Send,

§

impl<W> Sync for RpcLoop<W>
where W: Send,

§

impl<W> Unpin for RpcLoop<W>

§

impl<W> UnwindSafe for RpcLoop<W>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.