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

com.couchbase.client.core.protostellar.kv.ProtostellarCoreKvBinaryOps Maven / Gradle / Ivy

There is a newer version: 3.7.2
Show newest version
/*
 * Copyright 2023 Couchbase, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.couchbase.client.core.protostellar.kv;

import com.couchbase.client.core.CoreKeyspace;
import com.couchbase.client.core.CoreProtostellar;
import com.couchbase.client.core.annotation.Stability;
import com.couchbase.client.core.api.kv.CoreAsyncResponse;
import com.couchbase.client.core.api.kv.CoreCounterResult;
import com.couchbase.client.core.api.kv.CoreDurability;
import com.couchbase.client.core.api.kv.CoreExpiry;
import com.couchbase.client.core.api.kv.CoreKvBinaryOps;
import com.couchbase.client.core.api.kv.CoreMutationResult;
import com.couchbase.client.core.endpoint.http.CoreCommonOptions;
import com.couchbase.client.core.protostellar.CoreProtostellarAccessors;
import com.couchbase.client.core.protostellar.ProtostellarRequest;
import reactor.core.publisher.Mono;

import java.util.Optional;

import static com.couchbase.client.core.protostellar.kv.CoreProtoStellarKvBinaryRequests.appendRequest;
import static com.couchbase.client.core.protostellar.kv.CoreProtoStellarKvBinaryRequests.decrementRequest;
import static com.couchbase.client.core.protostellar.kv.CoreProtoStellarKvBinaryRequests.incrementRequest;
import static com.couchbase.client.core.protostellar.kv.CoreProtoStellarKvBinaryRequests.prependRequest;
import static java.util.Objects.requireNonNull;

@Stability.Internal
public class ProtostellarCoreKvBinaryOps implements CoreKvBinaryOps {

  private final CoreProtostellar core;
  private final CoreKeyspace keyspace;

  public ProtostellarCoreKvBinaryOps(CoreProtostellar core, CoreKeyspace keyspace) {
    this.core = requireNonNull(core);
    this.keyspace = requireNonNull(keyspace);
  }

  @Override
  public CoreMutationResult appendBlocking(String id, byte[] content, CoreCommonOptions options, long cas,
      CoreDurability durability) {
    ProtostellarRequest request = appendRequest(core, id,
        keyspace, options, content, cas, durability);
    return CoreProtostellarAccessors.blocking(core, request,
        (endpoint) -> endpoint.kvBlockingStub().withDeadline(request.deadline()).append(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreAsyncResponse appendAsync(String id, byte[] content, CoreCommonOptions options,
      long cas, CoreDurability durability) {
    ProtostellarRequest request = appendRequest(core, id,
        keyspace, options, content, cas, durability);
    return CoreProtostellarAccessors.async(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).append(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public Mono appendReactive(String id, byte[] content, CoreCommonOptions options, long cas,
      CoreDurability durability) {
    ProtostellarRequest request = appendRequest(core, id,
        keyspace, options, content, cas, durability);
    return CoreProtostellarAccessors.reactive(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).append(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreMutationResult prependBlocking(String id, byte[] content, CoreCommonOptions options, long cas,
      CoreDurability durability) {
    ProtostellarRequest request = prependRequest(core, id,
        keyspace, options, content, cas, durability);
    return CoreProtostellarAccessors.blocking(core, request,
        (endpoint) -> endpoint.kvBlockingStub().withDeadline(request.deadline()).prepend(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreAsyncResponse prependAsync(String id, byte[] content, CoreCommonOptions options,
      long cas, CoreDurability durability) {
    ProtostellarRequest request = prependRequest(core, id,
        keyspace, options, content, cas, durability);
    return CoreProtostellarAccessors.async(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).prepend(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public Mono prependReactive(String id, byte[] content, CoreCommonOptions options, long cas,
      CoreDurability durability) {
    ProtostellarRequest request = prependRequest(core, id,
        keyspace, options, content, cas, durability);
    return CoreProtostellarAccessors.reactive(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).prepend(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreCounterResult incrementBlocking(String id, CoreCommonOptions options, CoreExpiry expiry, long delta,
      Optional initial, CoreDurability durability) {
    ProtostellarRequest request = incrementRequest(core, id,
        keyspace, options, expiry, delta, initial, durability);
    return CoreProtostellarAccessors.blocking(core, request,
        (endpoint) -> endpoint.kvBlockingStub().withDeadline(request.deadline()).increment(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreAsyncResponse incrementAsync(String id, CoreCommonOptions options, CoreExpiry expiry,
      long delta, Optional initial, CoreDurability durability) {
    ProtostellarRequest request = incrementRequest(core, id,
        keyspace, options, expiry, delta, initial,  durability);
    return CoreProtostellarAccessors.async(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).increment(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public Mono incrementReactive(String id, CoreCommonOptions options, CoreExpiry expiry, long delta,
      Optional initial, CoreDurability durability) {
    ProtostellarRequest request = incrementRequest(core, id,
        keyspace, options, expiry, delta, initial , durability);
    return CoreProtostellarAccessors.reactive(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).increment(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreCounterResult decrementBlocking(String id, CoreCommonOptions options, CoreExpiry expiry, long delta,
      Optional initial, CoreDurability durability) {
    ProtostellarRequest request = decrementRequest(core, id,
        keyspace, options, expiry, delta, initial, durability);
    return CoreProtostellarAccessors.blocking(core, request,
        (endpoint) -> endpoint.kvBlockingStub().withDeadline(request.deadline()).decrement(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public CoreAsyncResponse decrementAsync(String id, CoreCommonOptions options, CoreExpiry expiry,
      long delta, Optional initial, CoreDurability durability) {
    ProtostellarRequest request = decrementRequest(core, id,
        keyspace, options, expiry, delta, initial, durability);
    return CoreProtostellarAccessors.async(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).decrement(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

  @Override
  public Mono decrementReactive(String id, CoreCommonOptions options, CoreExpiry expiry, long delta,
      Optional initial, CoreDurability durability) {
    ProtostellarRequest request = decrementRequest(core, id,
        keyspace, options, expiry, delta, initial,  durability);
    return CoreProtostellarAccessors.reactive(core, request,
        (endpoint) -> endpoint.kvStub().withDeadline(request.deadline()).decrement(request.request()),
        (response) -> CoreProtostellarKvBinaryResponses.convertResponse(keyspace, id, response));
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy