pub struct TcpServer<Kind, P> { /* private fields */ }
Expand description
A builder for TCP servers.
Setting up a server needs, at minimum:
- A server protocol implementation
- An address
- A service to provide
In addition to those basics, the builder provides some additional configuration, which is expected to grow over time.
See the crate docs for an example.
Implementations§
Source§impl<Kind, P> TcpServer<Kind, P>
impl<Kind, P> TcpServer<Kind, P>
Sourcepub fn new(protocol: P, addr: SocketAddr) -> TcpServer<Kind, P>
pub fn new(protocol: P, addr: SocketAddr) -> TcpServer<Kind, P>
Starts building a server for the given protocol and address, with default configuration.
Generally, a protocol is implemented not by implementing the
BindServer
trait directly, but instead by implementing one of the
protocol traits:
pipeline::ServerProto
multiplex::ServerProto
streaming::pipeline::ServerProto
streaming::multiplex::ServerProto
See the crate documentation for more details on those traits.
Sourcepub fn addr(&mut self, addr: SocketAddr)
pub fn addr(&mut self, addr: SocketAddr)
Set the address for the server.
Sourcepub fn threads(&mut self, threads: usize)
pub fn threads(&mut self, threads: usize)
Set the number of threads running simultaneous event loops (Unix only).
Sourcepub fn serve<S>(&self, new_service: S)where
S: NewService + Send + Sync + 'static,
S::Instance: 'static,
P::ServiceError: 'static,
P::ServiceResponse: 'static,
P::ServiceRequest: 'static,
S::Request: From<P::ServiceRequest>,
S::Response: Into<P::ServiceResponse>,
S::Error: Into<P::ServiceError>,
pub fn serve<S>(&self, new_service: S)where
S: NewService + Send + Sync + 'static,
S::Instance: 'static,
P::ServiceError: 'static,
P::ServiceResponse: 'static,
P::ServiceRequest: 'static,
S::Request: From<P::ServiceRequest>,
S::Response: Into<P::ServiceResponse>,
S::Error: Into<P::ServiceError>,
Start up the server, providing the given service on it.
This method will block the current thread until the server is shut down.
Sourcepub fn with_handle<F, S>(&self, new_service: F)where
F: Fn(&Handle) -> S + Send + Sync + 'static,
S: NewService + Send + Sync + 'static,
S::Instance: 'static,
P::ServiceError: 'static,
P::ServiceResponse: 'static,
P::ServiceRequest: 'static,
S::Request: From<P::ServiceRequest>,
S::Response: Into<P::ServiceResponse>,
S::Error: Into<P::ServiceError>,
pub fn with_handle<F, S>(&self, new_service: F)where
F: Fn(&Handle) -> S + Send + Sync + 'static,
S: NewService + Send + Sync + 'static,
S::Instance: 'static,
P::ServiceError: 'static,
P::ServiceResponse: 'static,
P::ServiceRequest: 'static,
S::Request: From<P::ServiceRequest>,
S::Response: Into<P::ServiceResponse>,
S::Error: Into<P::ServiceError>,
Start up the server, providing the given service on it, and providing access to the event loop handle.
The new_service
argument is a closure that is given an event loop
handle, and produces a value implementing NewService
. That value is in
turn used to make a new service instance for each incoming connection.
This method will block the current thread until the server is shut down.