Trait RequestResponse

pub trait RequestResponse: Send + Sync {
    // Required methods
    fn send_request(
        &self,
        request: Message,
        timeout: Duration,
    ) -> Result<Message, NerveError>;
    fn handle_response(
        &self,
        request_id: u64,
        response: Message,
    ) -> Result<(), NerveError>;
    fn cleanup_expired_requests(&self) -> Result<usize, NerveError>;
    fn pending_request_count(&self) -> Result<usize, NerveError>;
    fn is_request_pending(&self, request_id: u64) -> Result<bool, NerveError>;
    fn cancel_request(&self, request_id: u64) -> Result<bool, NerveError>;
}
Expand description

Request-response interface

Required Methods§

fn send_request( &self, request: Message, timeout: Duration, ) -> Result<Message, NerveError>

Send a request and wait for response

fn handle_response( &self, request_id: u64, response: Message, ) -> Result<(), NerveError>

Handle an incoming response

fn cleanup_expired_requests(&self) -> Result<usize, NerveError>

Clean up expired requests

fn pending_request_count(&self) -> Result<usize, NerveError>

Get pending request count

fn is_request_pending(&self, request_id: u64) -> Result<bool, NerveError>

Check if a request is still pending

fn cancel_request(&self, request_id: u64) -> Result<bool, NerveError>

Cancel a pending request

Implementations on Foreign Types§

§

impl RequestResponse for SimpleRequestResponse

§

fn send_request( &self, request: Message, timeout: Duration, ) -> Result<Message, NerveError>

§

fn handle_response( &self, request_id: u64, response: Message, ) -> Result<(), NerveError>

§

fn cleanup_expired_requests(&self) -> Result<usize, NerveError>

§

fn pending_request_count(&self) -> Result<usize, NerveError>

§

fn is_request_pending(&self, _request_id: u64) -> Result<bool, NerveError>

§

fn cancel_request(&self, _request_id: u64) -> Result<bool, NerveError>

Implementors§

§

impl RequestResponse for nerve::communication::SimpleRequestResponse