Skip to main content

atomr_remote/
lib.rs

1//! `atomr-remote`. akka.net: `src/core/Akka.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//! ## Module map
20//!
21//! | Akka.NET | atomr |
22//! |---|---|
23//! | `Akka.Remote.RemoteSettings` | [`settings::RemoteSettings`] |
24//! | `Akka.Remote.AddressUidExtension` | [`address_uid::AddressUid`] |
25//! | `Akka.Remote.Transport.Transport` | [`transport::Transport`] |
26//! | `Akka.Remote.Transport.DotNetty.TcpTransport` | [`transport::TcpTransport`] |
27//! | `Akka.Remote.Transport.AkkaProtocolTransport` | [`transport::AkkaProtocolTransport`] |
28//! | `Akka.Remote.Transport.ThrottleTransportAdapter` | [`transport::ThrottleTransport`] |
29//! | `Akka.Remote.Transport.FailureInjectorTransportAdapter` | [`transport::FailureInjectorTransport`] |
30//! | `Akka.Remote.Transport.TestTransport` | [`transport::TestTransport`] |
31//! | `Akka.Remote.EndpointManager` | [`endpoint_manager::EndpointManager`] |
32//! | `Akka.Remote.Endpoint` (Reader+Writer) | [`endpoint::EndpointHandle`] |
33//! | `Akka.Remote.Transport.AckedDelivery` | [`acked_delivery`] |
34//! | `Akka.Remote.RemoteActorRef` | [`remote_ref::RemoteActorRefImpl`] |
35//! | `Akka.Remote.RemoteActorRefProvider` | [`provider::RemoteActorRefProvider`] |
36//! | `Akka.Remote.RemoteSystemDaemon` | [`system_daemon::RemoteSystemDaemon`] |
37//! | `Akka.Remote.RemoteDeployer` | [`system_daemon::RemoteDeployer`] |
38//! | `Akka.Remote.RemoteWatcher` | [`remote_watcher::RemoteWatcher`] |
39//! | `Akka.Remote.RemoteMetricsExtension` | [`metrics::RemoteMetrics`] |
40//! | `Akka.Remote.DefaultFailureDetectorRegistry` | [`failure_detector_registry::FailureDetectorRegistry`] |
41//! | `Akka.Remote.Routing.RemoteRouterConfig` | [`router::RemoteRouterConfig`] |
42
43#![forbid(unsafe_code)]
44#![deny(rust_2018_idioms)]
45
46pub mod acked_delivery;
47pub mod address_uid;
48pub mod cache;
49pub mod chunking;
50pub mod codec;
51pub mod deadline_detector;
52pub mod endpoint;
53pub mod endpoint_manager;
54pub mod envelope;
55pub mod error;
56pub mod failure_detector;
57pub mod failure_detector_registry;
58pub mod metrics;
59pub mod pdu;
60pub mod phi_accrual;
61pub mod provider;
62pub mod reader_writer;
63pub mod remote_props;
64pub mod remote_ref;
65pub mod remote_watcher;
66pub mod router;
67pub mod send_queue;
68pub mod serialization;
69pub mod settings;
70pub mod system;
71pub mod system_daemon;
72pub mod tls;
73pub mod transport;
74
75pub use address_uid::AddressUid;
76pub use cache::LruCache;
77pub use chunking::{Chunk, ChunkError, Chunker, Reassembler};
78pub use deadline_detector::DeadlineFailureDetector;
79pub use endpoint::{EndpointHandle, InboundEnvelope};
80pub use endpoint_manager::{AssociationState, EndpointManager};
81pub use envelope::RemoteEnvelope;
82pub use error::{RemoteError, RemoteErrorKind};
83pub use failure_detector::FailureDetector;
84pub use failure_detector_registry::FailureDetectorRegistry;
85pub use metrics::{RemoteMetrics, RemoteMetricsRow, RemoteMetricsSnapshot};
86pub use pdu::{AckInfo, AkkaPdu, AssociateInfo, DisassociateReason, PROTOCOL_VERSION};
87pub use phi_accrual::PhiAccrualFailureDetector;
88pub use provider::RemoteActorRefProvider;
89pub use reader_writer::{spawn_reader_writer, RawTransport, ReaderWriterHandle};
90pub use remote_props::{register_bincode as register_remote_props, RemotePropsError, RemotePropsRegistry};
91pub use remote_ref::RemoteActorRefImpl;
92pub use remote_watcher::RemoteWatcher;
93pub use router::{RemoteRouterConfig, RemoteRouterStrategy};
94pub use send_queue::{BoundedSendQueue, SendOutcome};
95pub use serialization::{
96    SerializeError, SerializerRegistry, TypeCodec, BINCODE_SERIALIZER_ID, JSON_SERIALIZER_ID,
97    SYSTEM_SERIALIZER_ID,
98};
99pub use settings::{RemoteSettings, SendQueueOverflow};
100pub use system::RemoteSystem;
101pub use system_daemon::{LocalDispatch, RemoteDeployer, RemoteSystemDaemon};
102pub use tls::{parse_pem_blocks, TlsConfig, TlsError};
103pub use transport::{
104    AkkaProtocolTransport, FailureInjectorTransport, InboundFrame, InjectionMode, TcpTransport,
105    TestTransport, ThrottleMode, ThrottleTransport, Transport, TransportError,
106};