class RemoveFromStoreOperation : public nn::nex::DOOperation
This operation is executed each time a duplicated object is deleted.
Each station has a region called the Duplicated Object store that stores a list of the local active duplication masters (that have been locally published) and duplicas (that have been locally discovered). Duplicated objects are added to and removed from this Duplicated Object store as they are created and deleted during application runtime. Only those objects in the Duplicated Object store are considered to be active objects and updated on the local station.
The behavior of RemoveFromStoreOperation
depends on whether the object being removed is a duplication master (DuplicatedObject::IsADuplicationMaster
) or a duplica (DuplicatedObject::IsADuplica
).
An instance of a duplication master is removed in either of the two following situations.
When a station holding a duplication master leaves the session and the DuplicatedObject::ApproveEmigration
or DuplicatedObject::ApproveFaultRecovery
system callback has returned false
.
When an instance of a duplication master has been deleted using the DuplicatedObject::DeleteMainRef
function.
When a duplication master is removed by either of the two means described above, events are generated in the sequence described below.
SafetyExecutive
is called to determine whether the object may be deleted. If so, the process continues. If not, the process aborts.
The DataSet::OperationBegin
function is called on all datasets of the target duplicated object.
The DuplicatedObject::OperationBegin
function is called.
A multicast deletion message is sent to duplicas in the session (see below).
The reference to the target object is removed from the memory region that stores the list of duplication masters in the Duplicated Object store.
The DataSet::OperationEnd
function is called on all datasets of the target duplicated object.
The DuplicatedObject::OperationEnd
function is called.
When all references to the object (created using RefTemplate
) have been deleted, the object destructor is called.
When a duplica is removed, events are generated in the sequence described below.
・SafetyExecutive
is called to determine whether the object may be deleted. If so, the process continues. If not, the process aborts.
The DataSet::OperationBegin
function is called on all datasets of the target duplicated object.
The DuplicatedObject::OperationBegin
function is called.
・The reference to the target object is removed from the memory region that stores the list of duplicas in the Duplicated Object store.
The DataSet::OperationEnd
function is called on all datasets of the target duplicated object.
The DuplicatedObject::OperationEnd
function is called.
When all references to the object (created using RefTemplate
) have been deleted, the object destructor is called.
This operation is not called on duplicated objects when system status has been locked using the Scheduler::SystemLock
function.
Type
|
Enumerated type representing the types of operations called by the system. (Inherits Operation .) |
---|
ObjectIsDeleted
|
Gets whether this operation was triggered by the deletion of a duplicated object. | |
---|---|---|
GetAssociatedDOHandle
|
Gets the duplicated object handle associated with this operation. (Inherits DOOperation .) |
|
GetOrigin
|
Gets a duplicated object handle to a station that has called a function that generates an operation object as a result of the call. (Inherits DOOperation .) |
|
GetAssociatedDO
|
Gets a pointer to the duplicated object associated with the operation. (Inherits DOOperation .) |
|
PV |
GetType
|
Returns the type of this operation object. |
GetUserData
|
Gets user-defined values. (Inherits Operation .) |
|
SetUserData
|
Sets user-defined values. (Inherits Operation .) |
|
PV |
GetClassNameString
|
Gets the class name of this operation object. |
S |
DynamicCast
|
Casts dynamically using runtime information. (Inherits Operation .) |
S |
SetTraceFilter
|
Sets the callback function that specifies when to run traces on operation objects. (Inherits Operation .) |
nn::nex::RootObject
nn::nex::Operation
nn::nex::DOOperation
nn::nex::RemoveFromStoreOperation
CONFIDENTIAL