Struct sc_network::config::RequestResponseConfig [−][src]
pub struct RequestResponseConfig {
pub name: Cow<'static, str>,
pub max_request_size: u64,
pub max_response_size: u64,
pub request_timeout: Duration,
pub inbound_queue: Option<Sender<IncomingRequest>>,
}Expand description
Configuration for a single request-response protocol.
Fields
name: Cow<'static, str>Name of the protocol on the wire. Should be something like /foo/bar.
max_request_size: u64Maximum allowed size, in bytes, of a request.
Any request larger than this value will be declined as a way to avoid allocating too much memory for it.
max_response_size: u64Maximum allowed size, in bytes, of a response.
Any response larger than this value will be declined as a way to avoid allocating too much memory for it.
request_timeout: DurationDuration after which emitted requests are considered timed out.
If you expect the response to come back quickly, you should set this to a smaller duration.
inbound_queue: Option<Sender<IncomingRequest>>Channel on which the networking service will send incoming requests.
Every time a peer sends a request to the local node using this protocol, the networking service will push an element on this channel. The receiving side of this channel then has to pull this element, process the request, and send back the response to send back to the peer.
The size of the channel has to be carefully chosen. If the channel is full, the networking service will discard the incoming request send back an error to the peer. Consequently, the channel being full is an indicator that the node is overloaded.
You can typically set the size of the channel to T / d, where T is the
request_timeout and d is the expected average duration of CPU and I/O it takes to
build a response.
Can be None if the local node does not support answering incoming requests.
If this is None, then the local node will not advertise support for this protocol towards
other peers. If this is Some but the channel is closed, then the local node will
advertise support for this protocol, but any incoming request will lead to an error being
sent back.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for ProtocolConfigimpl Send for ProtocolConfigimpl Sync for ProtocolConfigimpl Unpin for ProtocolConfigimpl !UnwindSafe for ProtocolConfigBlanket Implementations
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any, Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s. Read more
Instruments this type with the provided Span, returning an
Instrumented wrapper. Read more
Instruments this type with the provided Span, returning an
Instrumented wrapper. Read more
The counterpart to unchecked_from.
Consume self to return an equivalent value of T.
pub fn vzip(self) -> VAttaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more
impl<T> MaybeDebug for T where
T: Debug, impl<T> MaybeDebug for T where
T: Debug,