Skip to main content

Crate dactor

Crate dactor 

Source
Expand description

§dactor

An abstract framework for distributed actors in Rust.

dactor provides framework-agnostic traits for building actor-based systems. It defines the core abstractions for actor spawning, message delivery, timer scheduling, processing groups, and cluster membership events — without coupling to any specific actor framework.

§Core Traits

  • ActorRef — Typed handle to a running actor (tell, ask, stream, feed)
  • Actor — Core actor trait with lifecycle hooks
  • Handler — Per-message-type handler trait
  • ClusterEvents — Subscribe to node join/leave notifications
  • TimerHandle — Cancellable scheduled timer
  • Clock — Time abstraction for deterministic testing

§Adapter Crates

Use dactor with a concrete actor framework via an adapter:

Re-exports§

pub use actor::cancel_after;
pub use actor::ReduceHandler;
pub use actor::Actor;
pub use actor::ActorContext;
pub use actor::ActorError;
pub use actor::ActorRef;
pub use actor::SpawnConfig;
pub use actor::AskReply;
pub use actor::Handler;
pub use actor::ExpandHandler;
pub use actor::TransformHandler;
pub use broadcast::BroadcastReceipt;
pub use broadcast::BroadcastRef;
pub use broadcast::BroadcastTellResult;
pub use broadcast::BroadcastTellOutcome;
pub use group::ProcessingGroup;
pub use circuit_breaker::CircuitBreakerInterceptor;
pub use circuit_breaker::CircuitState;
pub use clock::Clock;
pub use clock::SystemClock;
pub use cluster::AdapterCluster;
pub use cluster::ClusterEventEmitter;
pub use cluster::HealthChecker;
pub use cluster::HealthStatus;
pub use cluster::UnreachableHandler;
pub use cluster::ClusterEvent;
pub use cluster::ClusterEvents;
pub use cluster::NodeRejectionReason;
pub use cluster::SubscriptionId;
pub use dead_letter::CollectingDeadLetterHandler;
pub use dead_letter::DeadLetterEvent;
pub use dead_letter::DeadLetterHandler;
pub use dead_letter::DeadLetterInfo;
pub use dead_letter::DeadLetterReason;
pub use dead_letter::LoggingDeadLetterHandler;
pub use errors::ActorSendError;
pub use errors::ClusterError;
pub use errors::GroupError;
pub use errors::RuntimeError;
pub use errors::ErrorAction;
pub use errors::ErrorCode;
pub use errors::NotSupportedError;
pub use interceptor::intercept_outbound_stream_item;
pub use interceptor::Disposition;
pub use interceptor::InboundContext;
pub use interceptor::InboundInterceptor;
pub use interceptor::InterceptResult;
pub use interceptor::Outcome;
pub use interceptor::SendMode;
pub use interceptor::notify_drop;
pub use interceptor::DropNotice;
pub use interceptor::DropObserver;
pub use interceptor::OutboundContext;
pub use interceptor::OutboundInterceptor;
pub use interceptor::collect_handler_wrappers;
pub use interceptor::apply_handler_wrappers;
pub use interceptor::HandlerWrapper;
pub use mailbox::MailboxConfig;
pub use mailbox::MessageComparer;
pub use mailbox::OverflowStrategy;
pub use mailbox::StrictPriorityComparer;
pub use message::Message;
pub use message::HeaderValue;
pub use message::Headers;
pub use message::MessageId;
pub use message::Priority;
pub use message::RuntimeHeaders;
pub use metrics::ActorMetricsHandle;
pub use metrics::ActorMetricsSnapshot;
pub use metrics::MetricsInterceptor;
pub use metrics::MetricsRegistry;
pub use metrics::RuntimeMetrics;
pub use node::ActorId;
pub use node::NodeId;
pub use outbound_queue::OutboundPriorityQueue;
pub use outbound_queue::AgingWireComparer;
pub use outbound_queue::EnvelopeMetadata;
pub use outbound_queue::StrictPriorityWireComparer;
pub use outbound_queue::WireEnvelopeComparer;
pub use persistence::recover_durable_state;
pub use persistence::recover_event_sourced;
pub use persistence::DurableState;
pub use persistence::EventSourced;
pub use persistence::InMemoryStorage;
pub use persistence::InMemoryStorageProvider;
pub use persistence::JournalEntry;
pub use persistence::JournalStorage;
pub use persistence::PersistError;
pub use persistence::PersistFailurePolicy;
pub use persistence::PersistenceId;
pub use persistence::PersistentActor;
pub use persistence::RecoveryFailurePolicy;
pub use persistence::SaveConfig;
pub use persistence::SequenceId;
pub use persistence::SnapshotConfig;
pub use persistence::SnapshotEntry;
pub use persistence::SnapshotStorage;
pub use persistence::StateStorage;
pub use persistence::StorageProvider;
pub use pool::Keyed;
pub use pool::PoolConfig;
pub use pool::PoolRef;
pub use pool::PoolRouting;
pub use virtual_pool::VirtualPoolRef;
pub use registry::ActorRegistry;
pub use remote::receive_envelope_body;
pub use remote::receive_envelope_body_versioned;
pub use remote::ClusterDiscovery;
pub use remote::ClusterState;
pub use remote::DiscoveredPeer;
pub use remote::DiscoveryError;
pub use remote::HeaderRegistry;
pub use remote::MessageSerializer;
pub use remote::MessageVersionHandler;
pub use remote::PeerVersionInfo;
pub use remote::RemoteMessage;
pub use remote::SerializationError;
pub use remote::StaticSeeds;
pub use remote::WireEnvelope;
pub use remote::WireHeaders;
pub use remote_ref::ActorRefEnvelope;
pub use remote_ref::ActorRefTypeMismatch;
pub use remote_ref::RemoteActorRef;
pub use remote_ref::RemoteActorRefBuilder;
pub use stream::BatchConfig;
pub use stream::BatchReader;
pub use stream::BatchWriter;
pub use stream::StreamReceiver;
pub use stream::BoxStream;
pub use stream::StreamSendError;
pub use stream::StreamSender;
pub use supervision::ChildTerminated;
pub use supervision::AllForOne;
pub use supervision::OneForOne;
pub use supervision::RestForOne;
pub use supervision::SupervisionAction;
pub use supervision::SupervisionStrategy;
pub use system_actors::CancelManager;
pub use system_actors::CancelRequest;
pub use system_actors::CancelResponse;
pub use system_actors::NodeDirectory;
pub use system_actors::PeerInfo;
pub use system_actors::PeerStatus;
pub use system_actors::SpawnManager;
pub use system_actors::SpawnRequest;
pub use system_actors::SpawnResponse;
pub use system_actors::SystemActorConfig;
pub use system_actors::UnwatchRequest;
pub use system_actors::WatchManager;
pub use system_actors::WatchNotification;
pub use system_actors::WatchRequest;
pub use system_actors::validate_handshake;
pub use system_actors::verify_peer_identity;
pub use system_actors::HandshakeRequest;
pub use system_actors::HandshakeResponse;
pub use system_actors::RejectionReason;
pub use system_actors::is_system_message_type;
pub use system_actors::SYSTEM_MSG_TYPE_CANCEL;
pub use system_actors::SYSTEM_MSG_TYPE_CONNECT_PEER;
pub use system_actors::SYSTEM_MSG_TYPE_DISCONNECT_PEER;
pub use system_actors::SYSTEM_MSG_TYPE_SPAWN;
pub use system_actors::SYSTEM_MSG_TYPE_UNWATCH;
pub use system_actors::SYSTEM_MSG_TYPE_WATCH;
pub use system_router::RoutingError;
pub use system_router::RoutingOutcome;
pub use system_router::SystemMessageRouter;
pub use throttle::ActorRateLimiter;
pub use timer::TimerHandle;
pub use timer::send_after;
pub use timer::send_interval;
pub use transport::InMemoryTransport;
pub use transport::Transport;
pub use transport::TransportError;
pub use transport::TransportRegistry;
pub use type_registry::TypeRegistry;
pub use type_registry::ActorFactory;
pub use type_registry::ErasedActorFactory;
pub use wire_interceptor::MaxBodySizeInterceptor;
pub use wire_interceptor::RateLimitWireInterceptor;
pub use wire_interceptor::WireDisposition;
pub use wire_interceptor::WireInterceptor;
pub use wire_interceptor::WireInterceptorPipeline;
pub use wire_interceptor::WireProcessResult;
pub use wire_interceptor::WireRejectError;
pub use worker_ref::WorkerRef;
pub use version::DACTOR_WIRE_VERSION;
pub use version::ParseWireVersionError;
pub use version::WireVersion;

Modules§

actor
Core actor traits and types (Actor, ActorRef, Handler, etc.).
broadcast
Broadcast messaging for actor groups (BroadcastRef, tell, ask). Broadcast messaging for actor groups.
circuit_breaker
Circuit breaker interceptor for fault isolation. Circuit breaker interceptor for per-actor fault isolation.
clock
Clock abstraction for deterministic testing.
cluster
Cluster membership events and subscriptions.
dead_letter
Dead letter handling for undeliverable messages.
dispatch
Message dispatch envelopes for tell, ask, stream, feed, and transform. Type-erased dispatch infrastructure for delivering messages to actors.
errors
Error types for actor operations.
group
Named processing groups for actor pub/sub. Named processing groups for actor pub/sub.
interceptor
Inbound and outbound message interceptors. Inbound interceptor pipeline.
mailbox
Mailbox capacity and overflow configuration.
message
Message trait and header types.
metrics
Metrics collection interceptor and registry. Per-actor metrics with lock-free recording and windowed queries.
node
Node and actor identity types.
outbound_queue
Per-destination outbound priority queue for remote messages. Per-destination outbound priority queue for remote messages.
persistence
Persistence support: journals, snapshots, and durable state.
pool
Actor pool routing and configuration. Actor pool with configurable routing strategies.
prelude
Convenience re-exports of the most commonly used types.
proto
Protobuf serialization for system messages and wire envelope framing. Protobuf serialization for system messages and wire envelope framing.
registry
Named actor registry for service location.
remote
Remote actor types, wire format, and cluster discovery. Remote actor type definitions.
remote_ref
Remote actor reference for cross-node communication. Remote actor reference that serializes messages and sends via transport.
runtime_support
Shared runtime helpers for adapter implementations. Shared runtime helpers for adapter implementations.
stream
Streaming primitives (StreamSender, StreamReceiver, batching).
supervision
Supervision strategies (OneForOne, AllForOne, RestForOne). Supervision primitives for the actor system.
system_actors
System actors for remote operations (spawn, watch, cancel, directory). System actors for remote operations.
system_router
Transport routing for incoming system messages to native actor mailboxes. Transport routing for incoming system messages.
throttle
Rate limiting for actors.
timer
Timer scheduling (send_after, send_interval). Timer utilities for scheduling delayed and periodic messages.
transport
Abstract transport for remote actor communication. Abstract transport for remote actor communication.
type_registry
Type registry for remote message deserialization and actor factories. Type registry for remote message deserialization and actor factory lookup.
version
Wire protocol version for cluster compatibility checks. Wire protocol version for dactor cluster communication.
virtual_pool
Virtual actor pool with single-threaded routing task. Virtual actor pool with single-threaded routing.
wire_interceptor
Envelope-level interceptor for incoming remote messages. Envelope-level interceptor for incoming remote messages.
worker_ref
Worker reference for distributed actor pools (local + remote). Worker reference for distributed actor pools.

Structs§

CancellationToken
A token which can be used to signal a cancellation request to one or more tasks.

Attribute Macros§

async_trait