CRecordDeregisterTarget

With this message a target can be deregistered.

Notice

If you have direct access to the target, it is easier to call the ITargetRegistry.deregisterTarget() method.



    
        Deregister a target asynchronously.
    

    SYSTEM

    
        The namespace ID.
    

    
        The ID of the target to deregister.
    


Example of use of the class CRecordDeregisterTarget (after generating)

This method is an example of deregistering a target in its own node.

private void deregisterTarget(@NotNull final IId aNamespaceId,
                              @NotNull final IId aTargetId) throws CException
{
    final CEnvelope env = CEnvelope.forLocalNanoService(CWellKnownNID.SYSTEM);

    final CRecord record = CRecordDeregisterTarget.create();
    CRecordDeregisterTarget.setNamespaceId(record,
                                           aNamespaceId);
    CRecordDeregisterTarget.setTargetId(record,
                                        aTargetId);
    sendRequest(env,
                record);
}

This method is an example of deregistering a target in a remote node. The ID of the node is also required for this.

private void deregisterRemoteTarget(@NotNull final CNodeId aNodeId,
                                    @NotNull final IId aNamespaceId,
                                    @NotNull final IId aTargetId) throws CException
{
    final CEnvelope env = CEnvelope.forRemoteNanoService(CWellKnownNID.SYSTEM,
                                                         aNodeId);

    final CRecord record = CRecordDeregisterTarget.create();
    CRecordDeregisterTarget.setNamespaceId(record,
                                           aNamespaceId);
    CRecordDeregisterTarget.setTargetId(record,
                                        aTargetId);
    sendRequest(env,
                record);
}

To catch the reply, we need a message handler. We add it in the constructor of the message handler registry.

// constructor:
addMessageHandler(CRecordDeregisterTarget.ID,
                  this::asyncDeregisterTarget);
private boolean asyncDeregisterTarget(@NotNull final CEnvelope aEnvelope,
                                      @NotNull final CRecord aRecord)
{
    if (aEnvelope.isAnswer())
    {
        final int rc = aEnvelope.getResultCode();
        if (rc == CResultCode.SUCCESS)
        {
            // ...
        }
        return true;
    }
    return false;
}