
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