virtual bool CreateCapsuleRoleIfNecessary (RTActorRef & capsuleRole, const RQARTIncarnateArguments * args)

ConcurrencyrsSequentialConcurrencyVisibilityrsProtected

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