virtual bool
CreateCapsuleRoleIfNecessary (RTActorRef & capsuleRole, const RQARTIncarnateArguments * args)
Concurrency | rsSequentialConcurrency | Visibility | rsProtected |
Code
// incarnate the specified role based on the incarnation arguments only if
// it hasn't already been created. This method is used to create capsules
// that might have already been created in a previous test.
int index;
RTActorId capsuleId;
// Determine the index of the role
if (capsuleRole.size() == 1)
{
// role is not replicated
if(!args || args->cardinalityIndex < 0)
index = 0;
else
index = args->cardinalityIndex;
}
else
{
// role is replicated
if(!args || args->cardinalityIndex < 0)
{
// Don't know the index, create the role now.
return CreateCapsuleRole(capsuleRole, args);
}
else
index = args->cardinalityIndex;
}
// See if the role has been created already
capsuleId = RQART_Frame.incarnationAt(capsuleRole, index);
if(!capsuleId.isValid())
return CreateCapsuleRole(capsuleRole, args); // create it
else
return true; // already created
Parameter capsuleRole
Parameter args