pub trait LocalStatefulServiceReplica:
Send
+ Sync
+ 'static {
// Required methods
async fn open(
&self,
openmode: OpenMode,
partition: &StatefulServicePartition,
cancellation_token: BoxedCancelToken,
) -> Result<impl PrimaryReplicator>;
async fn change_role(
&self,
newrole: ReplicaRole,
cancellation_token: BoxedCancelToken,
) -> Result<WString>;
async fn close(&self, cancellation_token: BoxedCancelToken) -> Result<()>;
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§
Sourceasync fn open(
&self,
openmode: OpenMode,
partition: &StatefulServicePartition,
cancellation_token: BoxedCancelToken,
) -> Result<impl PrimaryReplicator>
async fn open( &self, openmode: OpenMode, partition: &StatefulServicePartition, cancellation_token: BoxedCancelToken, ) -> Result<impl PrimaryReplicator>
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.
Sourceasync fn change_role(
&self,
newrole: ReplicaRole,
cancellation_token: BoxedCancelToken,
) -> Result<WString>
async fn change_role( &self, newrole: ReplicaRole, cancellation_token: BoxedCancelToken, ) -> Result<WString>
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.
Sourceasync fn close(&self, cancellation_token: BoxedCancelToken) -> Result<()>
async fn close(&self, cancellation_token: BoxedCancelToken) -> Result<()>
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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.