Skip to main content

Module embed

Module embed 

Source
Expand description

Public embedding API for the Dynomite engine.

dynomite::embed is the surface an embedding program uses to construct, run, observe, and shut down a Dynomite engine in-process. The same surface drives the dynomited binary; the binary is a thin wrapper around this module rather than a parallel code path.

§Two-tier API

  1. Server::builder returns a ServerBuilder - a typed, fluent, validated-at-build builder that mirrors every YAML-visible crate::conf::ConfPool field plus typed setters for hook traits with no YAML form.
  2. Server::start returns immediately; the tokio runtime owns the background work. The caller drives the running server through a ServerHandle.

§Hooks

Five public traits expose every cross-cutting concern an embedder may want to override:

Every trait has at least one default implementation shipped in-crate, and the crate-root re-exports below mean a typical embedder writes use dynomite::embed::{Server, ServerBuilder, ServerHandle}; without reaching into the submodules.

§Examples

use dynomite::embed::{Server, ServerBuilder};
use dynomite::conf::DataStore;
let server: 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::Redis)
    .servers(vec![dynomite::conf::ConfServer::parse("127.0.0.1:6379:1").unwrap()])
    .tokens_str("0")
    .build()
    .unwrap();
let handle = server.start().await.unwrap();
assert_eq!(handle.peers().len(), 1);
handle.shutdown().await.unwrap();

Re-exports§

pub use crate::io::reactor::ConnRole;
pub use crate::io::reactor::TcpTransport;
pub use crate::io::reactor::Transport;
pub use self::builder::ServerBuilder;
pub use self::error::EmbedError;
pub use self::events::CloseReason;
pub use self::events::ConnId;
pub use self::events::ConnRoleTag;
pub use self::events::EventStream;
pub use self::events::PeerDownReason;
pub use self::events::PeerId;
pub use self::events::ServerEvent;
pub use self::extension::CommandExtension;
pub use self::extension::HsetOutcome;
pub use self::hooks::BoxFuture;
pub use self::hooks::CryptoProvider;
pub use self::hooks::CryptoProviderError;
pub use self::hooks::Datastore;
pub use self::hooks::DatastoreError;
pub use self::hooks::DnsSeedsProvider;
pub use self::hooks::FloridaSeedsProvider;
pub use self::hooks::LoggingMetricsSink;
pub use self::hooks::MemcacheDatastore;
pub use self::hooks::MemoryDatastore;
pub use self::hooks::MetricsError;
pub use self::hooks::MetricsSink;
pub use self::hooks::Protocol;
pub use self::hooks::RedisDatastore;
pub use self::hooks::RustCryptoProvider;
pub use self::hooks::SeedsProvider;
pub use self::hooks::SimpleSeedsProvider;
pub use self::server::Server;
pub use self::server::ServerHandle;
pub use self::snapshots::DatacenterSnapshot;
pub use self::snapshots::PeerSnapshot;
pub use self::snapshots::RackSnapshot;
pub use self::snapshots::RingSnapshot;

Modules§

builder
Fluent builder for crate::embed::Server.
error
Error types for the embedding API.
events
Server-wide event stream.
extension
Command-dispatch extension hook.
hooks
Pluggable hook traits exposed to embedders.
server
Embedding-API server runtime.
snapshots
Owned point-in-time topology snapshots.