Skip to main content

atomr_remote/
lib.rs

1//! `atomr-remote`.
2//!
3//! Cross-process actor remoting for `atomr`. Two `ActorSystem`s on
4//! different machines (or different ports on the same machine) become
5//! reachable from each other once each side has called
6//! [`RemoteSystem::start`] with overlapping codecs.
7//!
8//! ```no_run
9//! # async fn run() -> Result<(), Box<dyn std::error::Error>> {
10//! use atomr_core::prelude::*;
11//! use atomr_remote::{RemoteSettings, RemoteSystem};
12//!
13//! let sys_a = ActorSystem::create("A", atomr_config::Config::reference()).await?;
14//! let remote_a = RemoteSystem::start(sys_a.clone(), "127.0.0.1:0".parse()?, RemoteSettings::default()).await?;
15//! remote_a.register_bincode::<String>();
16//! # Ok(()) }
17//! ```
18
19#![forbid(unsafe_code)]
20#![deny(rust_2018_idioms)]
21
22pub mod acked_delivery;
23pub mod address_uid;
24pub mod cache;
25pub mod chunking;
26pub mod codec;
27pub mod deadline_detector;
28pub mod endpoint;
29pub mod endpoint_manager;
30pub mod envelope;
31pub mod error;
32pub mod failure_detector;
33pub mod failure_detector_registry;
34pub mod metrics;
35pub mod pdu;
36pub mod phi_accrual;
37pub mod provider;
38pub mod reader_writer;
39pub mod remote_props;
40pub mod remote_ref;
41pub mod remote_watcher;
42pub mod router;
43pub mod send_queue;
44pub mod serialization;
45pub mod settings;
46pub mod system;
47pub mod system_daemon;
48pub mod tls;
49pub mod transport;
50
51pub use address_uid::AddressUid;
52pub use cache::LruCache;
53pub use chunking::{Chunk, ChunkError, Chunker, Reassembler};
54pub use deadline_detector::DeadlineFailureDetector;
55pub use endpoint::{EndpointHandle, InboundEnvelope};
56pub use endpoint_manager::{AssociationState, EndpointManager};
57pub use envelope::RemoteEnvelope;
58pub use error::{RemoteError, RemoteErrorKind};
59pub use failure_detector::FailureDetector;
60pub use failure_detector_registry::FailureDetectorRegistry;
61pub use metrics::{RemoteMetrics, RemoteMetricsRow, RemoteMetricsSnapshot};
62pub use pdu::{AckInfo, AkkaPdu, AssociateInfo, DisassociateReason, PROTOCOL_VERSION};
63pub use phi_accrual::PhiAccrualFailureDetector;
64pub use provider::RemoteActorRefProvider;
65pub use reader_writer::{spawn_reader_writer, RawTransport, ReaderWriterHandle};
66pub use remote_props::{register_bincode as register_remote_props, RemotePropsError, RemotePropsRegistry};
67pub use remote_ref::RemoteActorRefImpl;
68pub use remote_watcher::RemoteWatcher;
69pub use router::{RemoteRouterConfig, RemoteRouterStrategy};
70pub use send_queue::{BoundedSendQueue, SendOutcome};
71pub use serialization::{
72    SerializeError, SerializerRegistry, TypeCodec, BINCODE_SERIALIZER_ID, JSON_SERIALIZER_ID,
73    SYSTEM_SERIALIZER_ID,
74};
75pub use settings::{RemoteSettings, SendQueueOverflow};
76pub use system::RemoteSystem;
77pub use system_daemon::{LocalDispatch, RemoteDeployer, RemoteSystemDaemon};
78pub use tls::{parse_pem_blocks, TlsConfig, TlsError};
79pub use transport::{
80    AkkaProtocolTransport, FailureInjectorTransport, InboundFrame, InjectionMode, TcpTransport,
81    TestTransport, ThrottleMode, ThrottleTransport, Transport, TransportError,
82};