All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alachisoft.ncache.client.internal.command.CollectionNotificationRegistrationCommand Maven / Gradle / Ivy

package com.alachisoft.ncache.client.internal.command;

import Alachisoft.NCache.Common.DataTypes.CollectionNotifRegOperation;
import Alachisoft.NCache.Util.MiscUtil;
import com.alachisoft.ncache.common.protobuf.CollectionNotifRegCoomandProtocol;
import com.alachisoft.ncache.common.protobuf.CollectionNotificationCommandProtocol;
import com.alachisoft.ncache.common.protobuf.CommandProtocol;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public final class CollectionNotificationRegistrationCommand extends Command
{
    private CollectionNotifRegOperation _operation;
    private CollectionNotificationCommandProtocol.CollectionNotificationCommand _commandInstance;

    public CollectionNotificationRegistrationCommand(CollectionNotifRegOperation operation)
    {
        name = "CollectionNotificationRegistration";
        key = operation.getName();
        _operation = operation;
    }
    @Override
    public CommandType getCommandType()
    {
        return CommandType.DATA_TYPE;
    }

    @Override
    public RequestType getCommandRequestType()
    {
        return RequestType.AtomicWrite;
    }



    @Override
    protected  void serializeCommandInternal(ByteArrayOutputStream stream) throws IOException
    {
        _commandInstance.writeTo(stream);
    }

    @Override
    protected short getCommandHandle()
    {
        return (short) CommandProtocol.Command.Type.COLLECTION_NOTIFICATION.getNumber();
    }

    @Override
    protected void createCommand()
    {
        CollectionNotificationCommandProtocol.CollectionNotificationCommand.Builder _collectionNotificationCommand = CollectionNotificationCommandProtocol.CollectionNotificationCommand.newBuilder();

        _collectionNotificationCommand.setRequestId(super.getRequestId());
        _collectionNotificationCommand.setName(_operation.getName());
        _collectionNotificationCommand.setType(CollectionNotificationCommandProtocol.CollectionNotificationCommand.Type.REGISTRATION);

        CollectionNotifRegCoomandProtocol.CollectionNotifRegCommand.Builder collectionNotifRegCommand = CollectionNotifRegCoomandProtocol.CollectionNotifRegCommand.newBuilder();
        collectionNotifRegCommand.setRequestId(super.getRequestId());
        collectionNotifRegCommand.setDatafilter(_operation.getFilter().getValue());
        collectionNotifRegCommand.setAddCallbackId(_operation.getAddCallbackId());
        collectionNotifRegCommand.setUpdateCallbackId(_operation.getUpdateCallbackId());
        collectionNotifRegCommand.setRemoveCallbackId(_operation.getRemoveCallbackId());
        collectionNotifRegCommand.setNotifyOnExpiration(_operation.getNotifyItemExpiration());
        collectionNotifRegCommand.setRegType(getProtoRegistrationType(_operation.getRegType()));
        collectionNotifRegCommand.setItemType(MiscUtil.DistributedDataTypeToItemType(_operation.getType()));

        _collectionNotificationCommand.setCollectionNotifRegCommand(collectionNotifRegCommand.build());
        _commandInstance = _collectionNotificationCommand.build();
    }

    private CollectionNotifRegCoomandProtocol.CollectionNotifRegCommand.RegistrationType getProtoRegistrationType(CollectionNotifRegOperation.RegistrationType registrationType)
    {
        switch (registrationType)
        {
            case Register:
                return CollectionNotifRegCoomandProtocol.CollectionNotifRegCommand.RegistrationType.REGISTER;

            case Unregister:
            default:
                return CollectionNotifRegCoomandProtocol.CollectionNotifRegCommand.RegistrationType.UNREGISTER;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy