pub struct LivePostBundleManager { /* private fields */ }Expand description
The production PostBundleManager implementation — the one that actually talks to the
network.
LivePostBundleManager is the glue between the pure-logic timeline code and the live
network. Each get_post_bundle call:
- Checks
ClientStorageunderBUCKET_POST_BUNDLEfor a sufficiently fresh cached copy (freshness is governed byCLIENT_POST_BUNDLE_CACHE_DURATION). - Falls back to a
GetPostBundleV1RPC against the closest peers in thePeerTracker, attributing PoW to the locally-heldsponsor_id. - Initiates post-bundle healing when the bundle has gaps — see
crate::client::post_bundle::post_bundle_healing.
Concurrent requests for the same bundle are de-duplicated via post_bundle_inflight so
a burst of timeline scrolls cannot fan out into redundant RPCs. The
crate::client::caching::cache_radius_tracker::CacheRadiusTracker helps the caching
role of a server decide how widely to mirror bundles.
Implementations§
Source§impl LivePostBundleManager
impl LivePostBundleManager
pub fn new( runtime_services: Arc<RuntimeServices>, sponsor_id: Id, client_storage: Arc<dyn ClientStorage>, peer_tracker: Arc<RwLock<PeerTracker>>, ) -> Self
Trait Implementations§
Source§impl PostBundleManager for LivePostBundleManager
impl PostBundleManager for LivePostBundleManager
fn get_post_bundle<'life0, 'life1, 'async_trait>(
&'life0 self,
bucket_location: &'life1 BucketLocation,
time_millis: TimeMillis,
) -> Pin<Box<dyn Future<Output = Result<EncodedPostBundleV1>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Auto Trait Implementations§
impl !Freeze for LivePostBundleManager
impl !RefUnwindSafe for LivePostBundleManager
impl Send for LivePostBundleManager
impl Sync for LivePostBundleManager
impl Unpin for LivePostBundleManager
impl UnsafeUnpin for LivePostBundleManager
impl !UnwindSafe for LivePostBundleManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more