ipfrs_transport/
lib.rs

1//! IPFRS Transport - TensorSwap and data exchange protocols
2//!
3//! This crate implements the transport layer for IPFRS including:
4//! - TensorSwap protocol for efficient tensor streaming
5//! - Bitswap-compatible block exchange
6//! - GraphSync for DAG traversal
7//! - Enhanced want list management with priority queues
8//! - Peer scoring and selection strategies
9//! - QUIC transport with connection pooling
10//! - Content routing with DHT integration
11//! - CDN edge node caching
12//! - Comprehensive diagnostics and health monitoring
13//! - Automatic configuration tuning
14//! - Performance statistics aggregation
15//! - Observability with structured logging
16//! - Prometheus metrics export
17//! - Load testing utilities
18
19pub mod advanced_scheduling;
20pub mod auto_tuner;
21pub mod bitswap;
22pub mod cdn_edge;
23pub mod config_advisor;
24pub mod connection_migration;
25pub mod content_routing;
26pub mod diagnostics;
27pub mod erasure;
28pub mod facade;
29pub mod graphsync;
30pub mod health_monitor;
31pub mod load_tester;
32pub mod messages;
33pub mod metrics;
34pub mod multi_transport;
35pub mod multicast;
36pub mod nat_traversal;
37pub mod observability;
38pub mod partition;
39pub mod peer_manager;
40pub mod prefetch;
41pub mod prometheus_exporter;
42pub mod quic;
43pub mod range_request;
44pub mod recovery;
45pub mod request_coalescing;
46pub mod session;
47pub mod stats_aggregator;
48pub mod tcp;
49pub mod tensorswap;
50pub mod test_utils;
51pub mod throttle;
52pub mod transport;
53pub mod utils;
54pub mod want_list;
55pub mod websocket;
56
57pub use graphsync::{
58    AggregationStrategy, DagTraversal, GradientAggregator, GradientAggregatorStats,
59    GradientMessage, GradientStream, GraphSync, Selector, TraversalCheckpoint, TraversalMode,
60    TraversalState, TraversalStats,
61};
62
63pub use bitswap::{BitswapConfig, BitswapExchange, BitswapStats};
64pub use cdn_edge::{
65    EdgeConfig, EdgeNode, EdgeStats, EvictionPolicy, InvalidationReason, InvalidationRequest,
66    OriginServer,
67};
68pub use content_routing::{
69    ContentRouter, ContentRoutingConfig, ContentRoutingStats, ProviderRecord,
70};
71pub use erasure::{
72    ErasureConfig, ErasureError, ErasureManager, ErasureMetadata, Shard, SimpleErasureEncoder,
73};
74pub use messages::{
75    BlockMessage, CancelMessage, DontHaveMessage, HaveMessage, Message,
76    WantEntry as MessageWantEntry, WantList as MessageWantList,
77};
78pub use metrics::{
79    LatencyStats, LatencyTracker, MemoryStats, MemoryTracker, MetricsConfig, ThroughputTracker,
80    Timer,
81};
82pub use multi_transport::{
83    ConnectionAttempt, MultiTransportConfig, MultiTransportManager, MultiTransportManagerBuilder,
84};
85pub use multicast::{
86    BlockAnnouncement, MulticastConfig, MulticastError, MulticastManager, MulticastStats,
87    Subscription, SubscriptionFilter, Topic,
88};
89pub use nat_traversal::{
90    CandidatePair, CandidateType, ConnectivityEvent, IceCandidate, NatTraversalConfig,
91    NatTraversalError, NatTraversalManager, NatTraversalStats, NatType, PairState, StunConfig,
92    TurnConfig,
93};
94pub use partition::{
95    PartitionConfig, PartitionDetector, PartitionError, PartitionState, PartitionStats,
96};
97pub use peer_manager::{
98    BlacklistReason, CircuitBreaker, CircuitBreakerConfig, CircuitBreakerStats, CircuitState,
99    ConcurrentPeerManager, PeerId, PeerManager, PeerManagerStats, PeerMetrics, PeerScoringConfig,
100    PeerState, RetryConfig, RetryPolicy, SelectionStrategy,
101};
102pub use prefetch::{
103    Prediction, PredictionReason, PrefetchConfig, PrefetchPredictor, PrefetchStats,
104    PrefetchStrategy,
105};
106pub use quic::{
107    AdaptiveBatchTuner, BlockStream, ParallelRequester, PipelineConfig, QuicConfig, QuicPoolStats,
108    QuicTransport, SequentialPipeline,
109};
110pub use range_request::{ByteRange, RangeAssembler, RangeError, RangeRequest, RangeResponse};
111pub use recovery::{
112    RecoveryConfig, RecoveryError, RecoveryManager, RecoveryMode, RecoveryStats, RecoveryStrategy,
113};
114pub use session::{
115    Session, SessionConfig, SessionError, SessionEvent, SessionId, SessionManager, SessionState,
116    SessionStats,
117};
118pub use tcp::{TcpConfig, TcpConnection, TcpTransport};
119pub use tensorswap::{
120    BackpressureConfig, BackpressureController, ChunkInfo, EinsumExpression, EinsumGraph,
121    SafetensorEntry, SafetensorsHeader, StreamProgress, StreamRequest, StreamRequestQueue,
122    TensorMetadata, TensorStream, TensorSwap, TensorSwapConfig, TensorSwapStats,
123};
124pub use throttle::{
125    BandwidthConfig, BandwidthThrottle, QosPriority, ThrottleError, ThrottleStats, TokenBucket,
126};
127pub use transport::{
128    Connection, ConnectionMetrics, Transport, TransportCapabilities, TransportError,
129    TransportSelectionStrategy, TransportSelector, TransportStats, TransportType,
130};
131pub use want_list::{ConcurrentWantList, Priority, WantEntry, WantList, WantListConfig};
132pub use websocket::{
133    WebSocketConfig, WebSocketConnection, WebSocketServerConnection, WebSocketTransport,
134};
135
136// Diagnostics and monitoring
137pub use auto_tuner::{AutoTuner, AutoTunerConfig, NetworkCondition, NetworkMetrics, TuningProfile};
138pub use diagnostics::{
139    DiagnosticConfig, DiagnosticEngine, DiagnosticIssue, DiagnosticReport, HealthStatus,
140    IssueCategory, IssueSeverity, PeerManagerDiagnostics, SessionDiagnostics, WantListDiagnostics,
141};
142pub use health_monitor::{
143    AlertCallback, ComponentHealth, ComponentStats, ComponentType, HealthAlert, HealthCheck,
144    HealthCheckBuilder, HealthMonitor, HealthMonitorConfig,
145};
146pub use stats_aggregator::{
147    AggregatedSessionStats, AggregatedStats, AggregatedStatsBuilder, AggregatedTransportStats,
148    DataPoint, PerformanceMetrics, StatsCollector,
149};
150
151// Re-export utility functions for convenience
152pub use utils::{
153    adjust_priority_for_deadline, all_wants_present, any_want_present, bulk_add_wants,
154    bulk_remove_wants, bulk_update_priorities, calculate_expected_throughput,
155    calculate_optimal_chunk_size, calculate_optimal_concurrency, calculate_recommended_buffer_size,
156    create_balanced_peer_scoring, create_bandwidth_optimized_peer_manager,
157    create_bulk_transfer_session, create_datacenter_want_list, create_edge_device_peer_manager,
158    create_edge_device_want_list, create_high_throughput_want_list, create_interactive_session,
159    create_latency_optimized_peer_manager, create_low_latency_want_list, create_realtime_session,
160    create_reliability_focused_scoring, create_scientific_session, debug_peer_scoring_config,
161    debug_session_config, debug_want_list_config, estimate_required_peers, estimate_transfer_time,
162    estimate_want_list_memory, format_bandwidth, format_bytes, format_duration,
163    is_high_throughput_config, is_low_latency_config, validate_peer_scoring_config,
164    validate_session_config, validate_want_list_config,
165};
166
167// Re-export facade for easy setup
168pub use facade::{TransportFacade, TransportFacadeBuilder, TransportFacadeConfig, TransportPreset};
169
170// Re-export test utilities for testing (feature-gated in the future if needed)
171pub use test_utils::{
172    add_test_peers, add_varied_test_peers, assert_approx_eq, assert_in_range,
173    minimal_peer_scoring_config, minimal_session_config, minimal_want_list_config, test_cid,
174    test_cids, test_peer_ids, test_peer_manager, test_peer_manager_with_config, test_session,
175    test_session_with_blocks, test_want_list, test_want_list_with_cids,
176};
177
178// Re-export advanced features
179pub use advanced_scheduling::{
180    AdvancedScheduler, SchedulePriority, ScheduledRequest, SchedulerStats, SchedulingPolicy,
181};
182pub use connection_migration::{
183    ConnectionMigration, MigrationConfig, MigrationEvent, MigrationState, MigrationStats,
184};
185pub use request_coalescing::{CoalescerConfig, CoalescerStats, RequestCoalescer};
186
187// Re-export observability
188pub use observability::{EventLogger, LogEntry, LogLevel, LoggerConfig, TransportEvent};
189pub use prometheus_exporter::{MetricType, PrometheusExporter};
190
191// Re-export load testing
192pub use load_tester::{
193    LoadPattern, LoadTestConfig, LoadTestConfigBuilder, LoadTestStats, LoadTester,
194};
195
196// Re-export configuration advisor
197pub use config_advisor::{
198    ConfigAdvisor, ConfigRequirements, NetworkQuality, PerformanceProfile, RecommendedConfig,
199    ResourceLevel, UseCase,
200};