pub trait IStatefulServiceReplica:
Send
+ Sync
+ 'static {
// Required methods
fn open<'life0, 'async_trait>(
&'life0 self,
openmode: OpenMode,
partition: Arc<dyn IStatefulServicePartition>,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn IPrimaryReplicator>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn change_role<'life0, 'async_trait>(
&'life0 self,
newrole: ReplicaRole,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<WString>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn close<'life0, 'async_trait>(
&'life0 self,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn abort(&self);
}Expand description
Defines behavior that governs the lifecycle of a replica, such as startup, initialization, role changes, and shutdown. Remarks: Stateful service types must implement this interface. The logic of a stateful service type includes behavior that is invoked on primary replicas and behavior that is invoked on secondary replicas.
Required Methods§
Sourcefn open<'life0, 'async_trait>(
&'life0 self,
openmode: OpenMode,
partition: Arc<dyn IStatefulServicePartition>,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn IPrimaryReplicator>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn open<'life0, 'async_trait>(
&'life0 self,
openmode: OpenMode,
partition: Arc<dyn IStatefulServicePartition>,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn IPrimaryReplicator>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Opens an initialized service replica so that additional actions can be taken. Returns PrimaryReplicator that is used by the stateful service. Note: Most user calls IFabricStatefulServicePartition.CreateReplicator instead of writing their own replicator (TODO: not supported in mssf yet), or use FabricCreateKeyValueStoreReplica.
Sourcefn change_role<'life0, 'async_trait>(
&'life0 self,
newrole: ReplicaRole,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<WString>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn change_role<'life0, 'async_trait>(
&'life0 self,
newrole: ReplicaRole,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<WString>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Changes the role of the service replica to one of the ReplicaRole. Returns the service’s new connection address that is to be associated with the replica via Service Fabric Naming. Remarks: The new role is indicated as a parameter. When the service transitions to the new role, the service has a chance to update its current listening address. The listening address is the address where clients connect to it and the one returned via the ResolveAsync API. This enables the service when it is a primary replica to only claim some resources such as ports when communication from clients is expected.
Sourcefn close<'life0, 'async_trait>(
&'life0 self,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn close<'life0, 'async_trait>(
&'life0 self,
cancellation_token: BoxedCancelToken,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Closes the service replica gracefully when it is being shut down.
Sourcefn abort(&self)
fn abort(&self)
Ungracefully terminates the service replica. Remarks: Network issues resulting in Service Fabric process shutdown and the use of ReportFault(FaultType) to report a Permanent fault are examples of ungraceful termination. When this method is invoked, the service replica should immediately release and clean up all references and return.