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

org.infinispan.client.hotrod.counter.operation.AddOperation Maven / Gradle / Ivy

There is a newer version: 9.3.1.Final
Show newest version
package org.infinispan.client.hotrod.counter.operation;

import org.infinispan.client.hotrod.impl.operations.CacheUnmarshaller;
import org.infinispan.client.hotrod.impl.protocol.Codec;
import org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder;
import org.infinispan.client.hotrod.logging.Log;
import org.infinispan.counter.exception.CounterOutOfBoundsException;

import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;

/**
 * Add operation.
 * 

* Adds the {@code delta} to the counter's value and returns the result. *

* It can throw a {@link CounterOutOfBoundsException} if the counter is bounded and the it has been reached. * * @author Pedro Ruivo * @since 9.2 */ public class AddOperation extends BaseCounterOperation { private final long delta; public AddOperation(String counterName, long delta, boolean useConsistentHash) { super(counterName, useConsistentHash); this.delta = delta; } @Override public void writeOperationRequest(Channel channel, ByteBuf buf, Codec codec) { super.writeOperationRequest(channel, buf, codec); buf.writeLong(delta); } private void assertBoundaries(short status) { if (status == NOT_EXECUTED_WITH_PREVIOUS) { if (delta > 0) { throw Log.HOTROD.counterOurOfBounds(CounterOutOfBoundsException.UPPER_BOUND); } else { throw Log.HOTROD.counterOurOfBounds(CounterOutOfBoundsException.LOWER_BOUND); } } } @Override public Long createResponse(ByteBuf buf, short status, HeaderDecoder decoder, Codec codec, CacheUnmarshaller unmarshaller) { checkStatus(status); assertBoundaries(status); assert status == NO_ERROR_STATUS; return buf.readLong(); } @Override public short requestOpCode() { return COUNTER_ADD_AND_GET_REQUEST; } @Override public short responseOpCode() { return COUNTER_ADD_AND_GET_RESPONSE; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy