pub struct Server { /* private fields */ }Expand description
Configured-but-not-running server.
Build one with ServerBuilder,
then call Server::start to spawn the background tasks.
Implementations§
Source§impl Server
impl Server
Sourcepub fn command_extension(&self) -> Option<&Arc<dyn CommandExtension>>
pub fn command_extension(&self) -> Option<&Arc<dyn CommandExtension>>
Borrow the crate::embed::CommandExtension
this server was built with, if any.
Sourcepub async fn start(self) -> Result<ServerHandle, EmbedError>
pub async fn start(self) -> Result<ServerHandle, EmbedError>
Spawn background tasks on the current tokio runtime and
return a ServerHandle.
start is non-blocking. The returned handle is Clone + Send + Sync.
§Client plane and in-process traffic
A client connecting to the bound listen: socket is
served end to end: the request is parsed, routed through
the cluster dispatcher, and for a request that resolves to
the local node the configured Datastore hook produces
the reply – the same hook
ServerHandle::inject_request uses for in-process
traffic. inject_request remains available for callers
that prefer to drive the engine without a socket hop.
The dyn_listen: (peer-plane) socket binds for address
reporting; embedded multi-node setups forward between
in-process nodes through the in-process registry, so a raw
cross-process peer connection to dyn_listen: is accepted
and closed. Cross-process peer serving is provided by the
dynomited binary.
§Examples
use dynomite::embed::ServerBuilder;
use dynomite::conf::DataStore;
let server = ServerBuilder::new("dyn_o_mite")
.listen("127.0.0.1:0".parse().unwrap())
.dyn_listen("127.0.0.1:0".parse().unwrap())
.data_store(DataStore::Valkey)
.servers(vec![dynomite::conf::ConfServer::parse("127.0.0.1:6379:1").unwrap()])
.tokens_str("0")
.enable_gossip(false)
.build()
.unwrap();
let handle = server.start().await.unwrap();
handle.shutdown().await.unwrap();Source§impl Server
impl Server
Sourcepub fn builder(pool_name: impl Into<String>) -> ServerBuilder
pub fn builder(pool_name: impl Into<String>) -> ServerBuilder
Convenience entry point.
§Examples
use dynomite::embed::Server;
let _b = Server::builder("dyn_o_mite");Sourcepub async fn start_with(
builder: ServerBuilder,
) -> Result<ServerHandle, EmbedError>
pub async fn start_with( builder: ServerBuilder, ) -> Result<ServerHandle, EmbedError>
One-shot “validate, build, and start” helper.
Equivalent to calling builder.build()?.start().await. The
chained-call form remains available for embedders that
want to inspect the Server before spawning tasks; this
helper exists because most embedders only ever build then
immediately start.
§Errors
Returns the same EmbedError variants that
ServerBuilder::build and Server::start surface.
§Examples
use dynomite::embed::{Server, ServerBuilder};
use dynomite::conf::DataStore;
let builder = ServerBuilder::new("dyn_o_mite")
.listen("127.0.0.1:0".parse().unwrap())
.dyn_listen("127.0.0.1:0".parse().unwrap())
.data_store(DataStore::Valkey)
.servers(vec![dynomite::conf::ConfServer::parse("127.0.0.1:6379:1").unwrap()])
.tokens_str("0");
let handle = Server::start_with(builder).await.unwrap();
handle.shutdown().await.unwrap();