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

org.infinispan.client.hotrod.impl.operations.AbstractHotRodOperation Maven / Gradle / Ivy

The newest version!
package org.infinispan.client.hotrod.impl.operations;

import java.util.Map;
import java.util.concurrent.CompletableFuture;

import org.infinispan.client.hotrod.impl.ClientStatistics;
import org.infinispan.client.hotrod.impl.protocol.Codec;
import org.infinispan.client.hotrod.impl.protocol.HotRodConstants;

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

// Extends CompletableFuture to reduce allocation size by not needed additional object header info
public abstract class AbstractHotRodOperation extends CompletableFuture implements HotRodConstants, HotRodOperation {
   @Override
   public void writeOperationRequest(Channel channel, ByteBuf buf, Codec codec) {
      // Do nothing by default
   }

   @Override
   public Object getRoutingObject() {
      return null;
   }

   @Override
   public boolean supportRetry() {
      return true;
   }

   @Override
   public Map additionalParameters() {
      return null;
   }

   @Override
   public void handleStatsCompletion(ClientStatistics statistics, long startTime, short status, T responseValue) {
      // Default is operation does nothing
   }

   @Override
   public String toString() {
      String cn = getCacheName() == null || getCacheName().isEmpty() ? "(default)" : getCacheName();
      StringBuilder sb = new StringBuilder(64);
      sb.append(getClass().getSimpleName()).append('{').append(cn);
      addParams(sb);
      sb.append(", flags=").append(Integer.toHexString(flags()));
      sb.append('}');

      sb.append("- CompletableFuture[");
      sb.append(super.toString());
      sb.append("]");

      return sb.toString();
   }

   protected void addParams(StringBuilder sb) { }

   @Override
   public void reset() { }

   @Override
   public CompletableFuture asCompletableFuture() {
      return this;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy