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

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

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

import Alachisoft.NCache.Common.Caching.UserBinaryObject;
import Alachisoft.NCache.Common.DataTypes.Queue.QueueEnqueueOperation;
import Alachisoft.NCache.Common.JSON.ExtendedJsonValueBase;
import com.alachisoft.ncache.common.protobuf.CollectionItemProtocol;
import com.alachisoft.ncache.common.protobuf.QueueCommandProtocol;
import com.alachisoft.ncache.common.protobuf.QueueEnqueueProtocol;
import com.google.protobuf.ByteString;

import java.nio.charset.StandardCharsets;
import java.util.List;

public class QueueEnqueueCommand extends QueueCommandBase {
    private QueueEnqueueOperation.OpType _operationType;
    private List _collection;
    private QueueEnqueueProtocol.QueueEnqueue.Builder _queueEnqueue;

    public QueueEnqueueCommand(QueueEnqueueOperation operation)
    {
        super.name = "QueueEnqueue";
        super.key = operation.getName();
        _writeThruOption = operation.getWriteThruOptions();
        _lockId = (String)operation.getLockId();
        _lockTimeout = operation.getLockTimeout();
        _operationType = operation.getOperationType();
        _collection = operation.getCollection();
    }

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

    @Override
    public CommandType getCommandType()
    {
        return CommandType.DATA_TYPE;
    }

    @Override
    protected void createCommand()
    {
        _queueEnqueue = QueueEnqueueProtocol.QueueEnqueue.newBuilder();

        if (_collection != null)
        {
            UserBinaryObject valueObject = UserBinaryObject.createUserBinaryObject(_collection.get(0).toJson().getBytes(StandardCharsets.UTF_8));
            CollectionItemProtocol.CollectionItem.Builder valueItem = CollectionItemProtocol.CollectionItem.newBuilder();
            for(byte[] bytes : valueObject.getDataList())
                valueItem.addData(ByteString.copyFrom(bytes));
            _queueEnqueue.setItem(valueItem);
        }

        switch (_operationType)
        {
            case Enqueue:
                _queueEnqueue.setOperationType(QueueEnqueueProtocol.QueueEnqueue.OperationType.Enqueue);
                break;

            case TryEnqueueMilliSeconds:
                _queueEnqueue.setOperationType(QueueEnqueueProtocol.QueueEnqueue.OperationType.TryEnqueueMilliSeconds);
                break;

            case TryEnqueueTimespan:
                _queueEnqueue.setOperationType(QueueEnqueueProtocol.QueueEnqueue.OperationType.TryEnqueueTimespan);
                break;
        }

        super.createCommand();

        _queueCommandBuilder.setType(QueueCommandProtocol.QueueCommand.Type.QUEUE_ENQUEUE);
        _queueCommandBuilder.setQueueEnqueue(_queueEnqueue);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy