Skip to main content

ControlPlaneProvider

Trait ControlPlaneProvider 

Source
pub trait ControlPlaneProvider: Send + Sync {
    // Required methods
    fn register<'a>(
        &'a self,
        registration: CoreRegistration,
    ) -> ControlPlaneFuture<'a, CorePresence>;
    fn heartbeat<'a>(
        &'a self,
        request: HeartbeatRequest,
    ) -> ControlPlaneFuture<'a, HeartbeatResponse>;
    fn discover_peers<'a>(
        &'a self,
        identity: &'a CoreIdentity,
    ) -> ControlPlaneFuture<'a, PeerDirectory>;
    fn acquire_or_renew_service_lease<'a>(
        &'a self,
        identity: &'a CoreIdentity,
        service_id: &'a ServiceId,
        ttl_ms: u64,
        now_ms: u64,
    ) -> ControlPlaneFuture<'a, ServiceLeaderLease>;
    fn release_service_lease<'a>(
        &'a self,
        lease: ServiceLeaderLease,
    ) -> ControlPlaneFuture<'a, ()>;

    // Provided methods
    fn register_traced<'a>(
        &'a self,
        registration: CoreRegistration,
        _trace: Option<&'a TraceContext>,
    ) -> ControlPlaneFuture<'a, CorePresence> { ... }
    fn heartbeat_traced<'a>(
        &'a self,
        request: HeartbeatRequest,
        _trace: Option<&'a TraceContext>,
    ) -> ControlPlaneFuture<'a, HeartbeatResponse> { ... }
    fn discover_peers_traced<'a>(
        &'a self,
        identity: &'a CoreIdentity,
        _trace: Option<&'a TraceContext>,
    ) -> ControlPlaneFuture<'a, PeerDirectory> { ... }
    fn acquire_or_renew_service_lease_traced<'a>(
        &'a self,
        identity: &'a CoreIdentity,
        service_id: &'a ServiceId,
        ttl_ms: u64,
        now_ms: u64,
        _trace: Option<&'a TraceContext>,
    ) -> ControlPlaneFuture<'a, ServiceLeaderLease> { ... }
    fn release_service_lease_traced<'a>(
        &'a self,
        lease: ServiceLeaderLease,
        _trace: Option<&'a TraceContext>,
    ) -> ControlPlaneFuture<'a, ()> { ... }
}
Expand description

Provider contract for presence, discovery and leadership coordination.

Required Methods§

Source

fn register<'a>( &'a self, registration: CoreRegistration, ) -> ControlPlaneFuture<'a, CorePresence>

Registers a running core.

Source

fn heartbeat<'a>( &'a self, request: HeartbeatRequest, ) -> ControlPlaneFuture<'a, HeartbeatResponse>

Reports liveness and current mode.

Source

fn discover_peers<'a>( &'a self, identity: &'a CoreIdentity, ) -> ControlPlaneFuture<'a, PeerDirectory>

Discovers compatible peers.

Source

fn acquire_or_renew_service_lease<'a>( &'a self, identity: &'a CoreIdentity, service_id: &'a ServiceId, ttl_ms: u64, now_ms: u64, ) -> ControlPlaneFuture<'a, ServiceLeaderLease>

Acquires or renews leadership independently for one service.

Source

fn release_service_lease<'a>( &'a self, lease: ServiceLeaderLease, ) -> ControlPlaneFuture<'a, ()>

Releases leadership for one service.

Provided Methods§

Source

fn register_traced<'a>( &'a self, registration: CoreRegistration, _trace: Option<&'a TraceContext>, ) -> ControlPlaneFuture<'a, CorePresence>

Registers a core while propagating trace context when supported.

Source

fn heartbeat_traced<'a>( &'a self, request: HeartbeatRequest, _trace: Option<&'a TraceContext>, ) -> ControlPlaneFuture<'a, HeartbeatResponse>

Sends a heartbeat while propagating trace context when supported.

Source

fn discover_peers_traced<'a>( &'a self, identity: &'a CoreIdentity, _trace: Option<&'a TraceContext>, ) -> ControlPlaneFuture<'a, PeerDirectory>

Discovers peers while propagating trace context when supported.

Source

fn acquire_or_renew_service_lease_traced<'a>( &'a self, identity: &'a CoreIdentity, service_id: &'a ServiceId, ttl_ms: u64, now_ms: u64, _trace: Option<&'a TraceContext>, ) -> ControlPlaneFuture<'a, ServiceLeaderLease>

Acquires a service lease while propagating trace context when supported.

Source

fn release_service_lease_traced<'a>( &'a self, lease: ServiceLeaderLease, _trace: Option<&'a TraceContext>, ) -> ControlPlaneFuture<'a, ()>

Releases a service lease while propagating trace context when supported.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§