1#![cfg_attr(docsrs, feature(doc_cfg))]
44#![deny(missing_docs)]
45#![allow(clippy::type_complexity)]
46
47mod adaptive_batcher;
48mod bridge;
49mod cleanup_tuner;
50mod config;
51mod error;
52mod health;
53mod integration;
54mod message;
55mod peer_scoring;
56mod peer_state;
57
58mod plumtree;
59mod pooled_transport;
60mod rate_limiter;
61mod runner;
62mod scheduler;
63pub mod testing;
64mod transport;
65
66#[cfg(feature = "metrics")]
67mod metrics;
68
69#[cfg(test)]
70mod peer_state_test;
71
72pub use adaptive_batcher::{AdaptiveBatcher, BatcherConfig, BatcherStats};
74
75pub use cleanup_tuner::{
77 BackpressureHint, CleanupConfig, CleanupParameters, CleanupReason, CleanupStats, CleanupTuner,
78 EfficiencyTrend, PressureTrend,
79};
80
81pub use config::PlumtreeConfig;
83
84pub use error::{Error, ErrorKind, Result};
86
87pub use health::{
89 CacheHealth, DeliveryHealth, HealthReport, HealthReportBuilder, HealthStatus, PeerHealth,
90};
91
92pub use message::{
94 CacheStats, MessageCache, MessageId, MessageTag, PlumtreeMessage, PlumtreeMessageRef,
95};
96
97pub use peer_state::{
99 AddPeerResult, PeerState, PeerStateBuilder, PeerStats, PeerTopology, RemovePeerResult,
100};
101
102pub use peer_scoring::{PeerScore, PeerScoring, ScoringConfig, ScoringStats};
104
105pub use plumtree::{
107 IncomingMessage, NoopDelegate, OutgoingMessage, Plumtree, PlumtreeDelegate, PlumtreeHandle,
108 SeenMapStats,
109};
110
111pub use runner::{create_plumtree_with_channels, PlumtreeRunnerWithTransport};
113
114#[allow(deprecated)]
116pub use runner::{PlumtreeRunner, PlumtreeRunnerBuilder};
117
118pub use integration::{
120 decode_plumtree_envelope, decode_plumtree_message, encode_plumtree_envelope,
121 encode_plumtree_envelope_into, encode_plumtree_message, envelope_encoded_len,
122 is_plumtree_message, BroadcastEnvelope, IdCodec, PlumtreeEventHandler, PlumtreeMemberlist,
123 PlumtreeNodeDelegate,
124};
125
126pub use scheduler::{ExpiredGraft, GraftTimer, IHaveQueue, IHaveScheduler, PendingIHave};
128
129pub use rate_limiter::{GlobalRateLimiter, RateLimiter};
131
132pub use transport::{ChannelTransport, ChannelTransportError, NoopTransport, Transport};
134
135#[cfg(feature = "quic")]
137#[cfg_attr(docsrs, doc(cfg(feature = "quic")))]
138pub use transport::quic::{
139 CongestionConfig, CongestionController, ConnectionConfig, ConnectionStats, MapPeerResolver,
140 MessagePriorities, MigrationConfig, PeerResolver, PlumtreeQuicConfig, QuicConfig, QuicError,
141 QuicStats, QuicTransport, StreamConfig, TlsConfig, ZeroRttConfig,
142};
143
144pub use pooled_transport::{PoolConfig, PoolStats, PooledTransport, PooledTransportError};
146
147pub use scheduler::FailedGraft;
149
150pub use bridge::{
152 AddressExtractor, BridgeConfig, BridgeEventDelegate, LazarusHandle, LazarusStats,
153 MemberlistStack, MemberlistStackError, PlumtreeBridge, PlumtreeStackBuilder,
154};
155
156pub use bridge::persistence;
158
159pub mod memberlist {
161 pub use memberlist_core::*;
162}