/***********************************************************************
 * Copyright (c) 2013-2025 Commonwealth Computer Research, Inc.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Apache License, Version 2.0
 * which accompanies this distribution and is available at
 * http://www.opensource.org/licenses/apache2.0.php.
 ***********************************************************************/

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: geomesa-hbase/geomesa-hbase-rpc/src/main/protobuf/GeoMesaProtoGenerator.proto

package org.locationtech.geomesa.hbase.proto;

public final class GeoMesaProto {
  private GeoMesaProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface GeoMesaCoprocessorRequestOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // required bytes options = 1;
    /**
     * <code>required bytes options = 1;</code>
     */
    boolean hasOptions();
    /**
     * <code>required bytes options = 1;</code>
     */
    com.google.protobuf.ByteString getOptions();

    // required int32 version = 2;
    /**
     * <code>required int32 version = 2;</code>
     */
    boolean hasVersion();
    /**
     * <code>required int32 version = 2;</code>
     */
    int getVersion();
  }
  /**
   * Protobuf type {@code GeoMesaCoprocessorRequest}
   */
  public static final class GeoMesaCoprocessorRequest extends
      com.google.protobuf.GeneratedMessage
      implements GeoMesaCoprocessorRequestOrBuilder {
    // Use GeoMesaCoprocessorRequest.newBuilder() to construct.
    private GeoMesaCoprocessorRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GeoMesaCoprocessorRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GeoMesaCoprocessorRequest defaultInstance;
    public static GeoMesaCoprocessorRequest getDefaultInstance() {
      return defaultInstance;
    }

    public GeoMesaCoprocessorRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GeoMesaCoprocessorRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              options_ = input.readBytes();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              version_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.class, org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.Builder.class);
    }

    public static com.google.protobuf.Parser<GeoMesaCoprocessorRequest> PARSER =
        new com.google.protobuf.AbstractParser<GeoMesaCoprocessorRequest>() {
      public GeoMesaCoprocessorRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GeoMesaCoprocessorRequest(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GeoMesaCoprocessorRequest> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // required bytes options = 1;
    public static final int OPTIONS_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString options_;
    /**
     * <code>required bytes options = 1;</code>
     */
    public boolean hasOptions() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required bytes options = 1;</code>
     */
    public com.google.protobuf.ByteString getOptions() {
      return options_;
    }

    // required int32 version = 2;
    public static final int VERSION_FIELD_NUMBER = 2;
    private int version_;
    /**
     * <code>required int32 version = 2;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required int32 version = 2;</code>
     */
    public int getVersion() {
      return version_;
    }

    private void initFields() {
      options_ = com.google.protobuf.ByteString.EMPTY;
      version_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasOptions()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, options_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(2, version_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, options_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest)) {
        return super.equals(obj);
      }
      org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest other = (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest) obj;

      boolean result = true;
      result = result && (hasOptions() == other.hasOptions());
      if (hasOptions()) {
        result = result && getOptions()
            .equals(other.getOptions());
      }
      result = result && (hasVersion() == other.hasVersion());
      if (hasVersion()) {
        result = result && (getVersion()
            == other.getVersion());
      }
      result = result &&
          getUnknownFields().equals(other.getUnknownFields());
      return result;
    }

    private int memoizedHashCode = 0;
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasOptions()) {
        hash = (37 * hash) + OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getOptions().hashCode();
      }
      if (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getVersion();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GeoMesaCoprocessorRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.class, org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.Builder.class);
      }

      // Construct using org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        options_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorRequest_descriptor;
      }

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest getDefaultInstanceForType() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.getDefaultInstance();
      }

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest build() {
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest buildPartial() {
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest result = new org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.options_ = options_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.version_ = version_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest) {
          return mergeFrom((org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest other) {
        if (other == org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.getDefaultInstance()) return this;
        if (other.hasOptions()) {
          setOptions(other.getOptions());
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasOptions()) {
          
          return false;
        }
        if (!hasVersion()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // required bytes options = 1;
      private com.google.protobuf.ByteString options_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>required bytes options = 1;</code>
       */
      public boolean hasOptions() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bytes options = 1;</code>
       */
      public com.google.protobuf.ByteString getOptions() {
        return options_;
      }
      /**
       * <code>required bytes options = 1;</code>
       */
      public Builder setOptions(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        options_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required bytes options = 1;</code>
       */
      public Builder clearOptions() {
        bitField0_ = (bitField0_ & ~0x00000001);
        options_ = getDefaultInstance().getOptions();
        onChanged();
        return this;
      }

      // required int32 version = 2;
      private int version_ ;
      /**
       * <code>required int32 version = 2;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 version = 2;</code>
       */
      public int getVersion() {
        return version_;
      }
      /**
       * <code>required int32 version = 2;</code>
       */
      public Builder setVersion(int value) {
        bitField0_ |= 0x00000002;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 version = 2;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000002);
        version_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GeoMesaCoprocessorRequest)
    }

    static {
      defaultInstance = new GeoMesaCoprocessorRequest(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GeoMesaCoprocessorRequest)
  }

  public interface GeoMesaCoprocessorResponseOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated bytes payload = 1;
    /**
     * <code>repeated bytes payload = 1;</code>
     */
    java.util.List<com.google.protobuf.ByteString> getPayloadList();
    /**
     * <code>repeated bytes payload = 1;</code>
     */
    int getPayloadCount();
    /**
     * <code>repeated bytes payload = 1;</code>
     */
    com.google.protobuf.ByteString getPayload(int index);

    // optional bytes lastScanned = 2;
    /**
     * <code>optional bytes lastScanned = 2;</code>
     */
    boolean hasLastScanned();
    /**
     * <code>optional bytes lastScanned = 2;</code>
     */
    com.google.protobuf.ByteString getLastScanned();

    // optional int32 version = 3;
    /**
     * <code>optional int32 version = 3;</code>
     */
    boolean hasVersion();
    /**
     * <code>optional int32 version = 3;</code>
     */
    int getVersion();
  }
  /**
   * Protobuf type {@code GeoMesaCoprocessorResponse}
   */
  public static final class GeoMesaCoprocessorResponse extends
      com.google.protobuf.GeneratedMessage
      implements GeoMesaCoprocessorResponseOrBuilder {
    // Use GeoMesaCoprocessorResponse.newBuilder() to construct.
    private GeoMesaCoprocessorResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private GeoMesaCoprocessorResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final GeoMesaCoprocessorResponse defaultInstance;
    public static GeoMesaCoprocessorResponse getDefaultInstance() {
      return defaultInstance;
    }

    public GeoMesaCoprocessorResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private GeoMesaCoprocessorResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                payload_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                mutable_bitField0_ |= 0x00000001;
              }
              payload_.add(input.readBytes());
              break;
            }
            case 18: {
              bitField0_ |= 0x00000001;
              lastScanned_ = input.readBytes();
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              version_ = input.readInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          payload_ = java.util.Collections.unmodifiableList(payload_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.class, org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.Builder.class);
    }

    public static com.google.protobuf.Parser<GeoMesaCoprocessorResponse> PARSER =
        new com.google.protobuf.AbstractParser<GeoMesaCoprocessorResponse>() {
      public GeoMesaCoprocessorResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GeoMesaCoprocessorResponse(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<GeoMesaCoprocessorResponse> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    // repeated bytes payload = 1;
    public static final int PAYLOAD_FIELD_NUMBER = 1;
    private java.util.List<com.google.protobuf.ByteString> payload_;
    /**
     * <code>repeated bytes payload = 1;</code>
     */
    public java.util.List<com.google.protobuf.ByteString>
        getPayloadList() {
      return payload_;
    }
    /**
     * <code>repeated bytes payload = 1;</code>
     */
    public int getPayloadCount() {
      return payload_.size();
    }
    /**
     * <code>repeated bytes payload = 1;</code>
     */
    public com.google.protobuf.ByteString getPayload(int index) {
      return payload_.get(index);
    }

    // optional bytes lastScanned = 2;
    public static final int LASTSCANNED_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString lastScanned_;
    /**
     * <code>optional bytes lastScanned = 2;</code>
     */
    public boolean hasLastScanned() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bytes lastScanned = 2;</code>
     */
    public com.google.protobuf.ByteString getLastScanned() {
      return lastScanned_;
    }

    // optional int32 version = 3;
    public static final int VERSION_FIELD_NUMBER = 3;
    private int version_;
    /**
     * <code>optional int32 version = 3;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int32 version = 3;</code>
     */
    public int getVersion() {
      return version_;
    }

    private void initFields() {
      payload_ = java.util.Collections.emptyList();
      lastScanned_ = com.google.protobuf.ByteString.EMPTY;
      version_ = 0;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < payload_.size(); i++) {
        output.writeBytes(1, payload_.get(i));
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(2, lastScanned_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt32(3, version_);
      }
      getUnknownFields().writeTo(output);
    }

    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < payload_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(payload_.get(i));
        }
        size += dataSize;
        size += 1 * getPayloadList().size();
      }
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, lastScanned_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, version_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse)) {
        return super.equals(obj);
      }
      org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse other = (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse) obj;

      boolean result = true;
      result = result && getPayloadList()
          .equals(other.getPayloadList());
      result = result && (hasLastScanned() == other.hasLastScanned());
      if (hasLastScanned()) {
        result = result && getLastScanned()
            .equals(other.getLastScanned());
      }
      result = result && (hasVersion() == other.hasVersion());
      if (hasVersion()) {
        result = result && (getVersion()
            == other.getVersion());
      }
      result = result &&
          getUnknownFields().equals(other.getUnknownFields());
      return result;
    }

    private int memoizedHashCode = 0;
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getPayloadCount() > 0) {
        hash = (37 * hash) + PAYLOAD_FIELD_NUMBER;
        hash = (53 * hash) + getPayloadList().hashCode();
      }
      if (hasLastScanned()) {
        hash = (37 * hash) + LASTSCANNED_FIELD_NUMBER;
        hash = (53 * hash) + getLastScanned().hashCode();
      }
      if (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getVersion();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code GeoMesaCoprocessorResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.class, org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.Builder.class);
      }

      // Construct using org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        payload_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        lastScanned_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        version_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.internal_static_GeoMesaCoprocessorResponse_descriptor;
      }

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse getDefaultInstanceForType() {
        return org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance();
      }

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse build() {
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse buildPartial() {
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse result = new org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          payload_ = java.util.Collections.unmodifiableList(payload_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.payload_ = payload_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000001;
        }
        result.lastScanned_ = lastScanned_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.version_ = version_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse) {
          return mergeFrom((org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse other) {
        if (other == org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance()) return this;
        if (!other.payload_.isEmpty()) {
          if (payload_.isEmpty()) {
            payload_ = other.payload_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensurePayloadIsMutable();
            payload_.addAll(other.payload_);
          }
          onChanged();
        }
        if (other.hasLastScanned()) {
          setLastScanned(other.getLastScanned());
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated bytes payload = 1;
      private java.util.List<com.google.protobuf.ByteString> payload_ = java.util.Collections.emptyList();
      private void ensurePayloadIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          payload_ = new java.util.ArrayList<com.google.protobuf.ByteString>(payload_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public java.util.List<com.google.protobuf.ByteString>
          getPayloadList() {
        return java.util.Collections.unmodifiableList(payload_);
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public int getPayloadCount() {
        return payload_.size();
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public com.google.protobuf.ByteString getPayload(int index) {
        return payload_.get(index);
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public Builder setPayload(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePayloadIsMutable();
        payload_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public Builder addPayload(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensurePayloadIsMutable();
        payload_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public Builder addAllPayload(
          java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
        ensurePayloadIsMutable();
        super.addAll(values, payload_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bytes payload = 1;</code>
       */
      public Builder clearPayload() {
        payload_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      // optional bytes lastScanned = 2;
      private com.google.protobuf.ByteString lastScanned_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes lastScanned = 2;</code>
       */
      public boolean hasLastScanned() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bytes lastScanned = 2;</code>
       */
      public com.google.protobuf.ByteString getLastScanned() {
        return lastScanned_;
      }
      /**
       * <code>optional bytes lastScanned = 2;</code>
       */
      public Builder setLastScanned(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        lastScanned_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes lastScanned = 2;</code>
       */
      public Builder clearLastScanned() {
        bitField0_ = (bitField0_ & ~0x00000002);
        lastScanned_ = getDefaultInstance().getLastScanned();
        onChanged();
        return this;
      }

      // optional int32 version = 3;
      private int version_ ;
      /**
       * <code>optional int32 version = 3;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional int32 version = 3;</code>
       */
      public int getVersion() {
        return version_;
      }
      /**
       * <code>optional int32 version = 3;</code>
       */
      public Builder setVersion(int value) {
        bitField0_ |= 0x00000004;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 version = 3;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000004);
        version_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:GeoMesaCoprocessorResponse)
    }

    static {
      defaultInstance = new GeoMesaCoprocessorResponse(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:GeoMesaCoprocessorResponse)
  }

  /**
   * Protobuf service {@code GeoMesaCoprocessorService}
   */
  public static abstract class GeoMesaCoprocessorService
      implements com.google.protobuf.Service {
    protected GeoMesaCoprocessorService() {}

    public interface Interface {
      /**
       * <code>rpc getResult(.GeoMesaCoprocessorRequest) returns (.GeoMesaCoprocessorResponse);</code>
       */
      public abstract void getResult(
          com.google.protobuf.RpcController controller,
          org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest request,
          com.google.protobuf.RpcCallback<org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse> done);

    }

    public static com.google.protobuf.Service newReflectiveService(
        final Interface impl) {
      return new GeoMesaCoprocessorService() {
        @java.lang.Override
        public  void getResult(
            com.google.protobuf.RpcController controller,
            org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest request,
            com.google.protobuf.RpcCallback<org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse> done) {
          impl.getResult(controller, request, done);
        }

      };
    }

    public static com.google.protobuf.BlockingService
        newReflectiveBlockingService(final BlockingInterface impl) {
      return new com.google.protobuf.BlockingService() {
        public final com.google.protobuf.Descriptors.ServiceDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }

        public final com.google.protobuf.Message callBlockingMethod(
            com.google.protobuf.Descriptors.MethodDescriptor method,
            com.google.protobuf.RpcController controller,
            com.google.protobuf.Message request)
            throws com.google.protobuf.ServiceException {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.callBlockingMethod() given method descriptor for " +
              "wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return impl.getResult(controller, (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest)request);
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

        public final com.google.protobuf.Message
            getRequestPrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getRequestPrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

        public final com.google.protobuf.Message
            getResponsePrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getResponsePrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }

      };
    }

    /**
     * <code>rpc getResult(.GeoMesaCoprocessorRequest) returns (.GeoMesaCoprocessorResponse);</code>
     */
    public abstract void getResult(
        com.google.protobuf.RpcController controller,
        org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest request,
        com.google.protobuf.RpcCallback<org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse> done);

    public static final
        com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptor() {
      return org.locationtech.geomesa.hbase.proto.GeoMesaProto.getDescriptor().getServices().get(0);
    }
    public final com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }

    public final void callMethod(
        com.google.protobuf.Descriptors.MethodDescriptor method,
        com.google.protobuf.RpcController controller,
        com.google.protobuf.Message request,
        com.google.protobuf.RpcCallback<
          com.google.protobuf.Message> done) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.callMethod() given method descriptor for wrong " +
          "service type.");
      }
      switch(method.getIndex()) {
        case 0:
          this.getResult(controller, (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest)request,
            com.google.protobuf.RpcUtil.<org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse>specializeCallback(
              done));
          return;
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public final com.google.protobuf.Message
        getRequestPrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getRequestPrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public final com.google.protobuf.Message
        getResponsePrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getResponsePrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }

    public static Stub newStub(
        com.google.protobuf.RpcChannel channel) {
      return new Stub(channel);
    }

    public static final class Stub extends org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorService implements Interface {
      private Stub(com.google.protobuf.RpcChannel channel) {
        this.channel = channel;
      }

      private final com.google.protobuf.RpcChannel channel;

      public com.google.protobuf.RpcChannel getChannel() {
        return channel;
      }

      public  void getResult(
          com.google.protobuf.RpcController controller,
          org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest request,
          com.google.protobuf.RpcCallback<org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse> done) {
        channel.callMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.class,
            org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance()));
      }
    }

    public static BlockingInterface newBlockingStub(
        com.google.protobuf.BlockingRpcChannel channel) {
      return new BlockingStub(channel);
    }

    public interface BlockingInterface {
      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse getResult(
          com.google.protobuf.RpcController controller,
          org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest request)
          throws com.google.protobuf.ServiceException;
    }

    private static final class BlockingStub implements BlockingInterface {
      private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) {
        this.channel = channel;
      }

      private final com.google.protobuf.BlockingRpcChannel channel;

      public org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse getResult(
          com.google.protobuf.RpcController controller,
          org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorRequest request)
          throws com.google.protobuf.ServiceException {
        return (org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse) channel.callBlockingMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          org.locationtech.geomesa.hbase.proto.GeoMesaProto.GeoMesaCoprocessorResponse.getDefaultInstance());
      }

    }

    // @@protoc_insertion_point(class_scope:GeoMesaCoprocessorService)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GeoMesaCoprocessorRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GeoMesaCoprocessorRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_GeoMesaCoprocessorResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_GeoMesaCoprocessorResponse_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\nMgeomesa-hbase/geomesa-hbase-rpc/src/ma" +
      "in/protobuf/GeoMesaProtoGenerator.proto\"" +
      "=\n\031GeoMesaCoprocessorRequest\022\017\n\007options\030" +
      "\001 \002(\014\022\017\n\007version\030\002 \002(\005\"S\n\032GeoMesaCoproce" +
      "ssorResponse\022\017\n\007payload\030\001 \003(\014\022\023\n\013lastSca" +
      "nned\030\002 \001(\014\022\017\n\007version\030\003 \001(\0052a\n\031GeoMesaCo" +
      "processorService\022D\n\tgetResult\022\032.GeoMesaC" +
      "oprocessorRequest\032\033.GeoMesaCoprocessorRe" +
      "sponseB<\n$org.locationtech.geomesa.hbase" +
      ".protoB\014GeoMesaProtoH\001\210\001\001\240\001\001"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_GeoMesaCoprocessorRequest_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_GeoMesaCoprocessorRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GeoMesaCoprocessorRequest_descriptor,
              new java.lang.String[] { "Options", "Version", });
          internal_static_GeoMesaCoprocessorResponse_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_GeoMesaCoprocessorResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_GeoMesaCoprocessorResponse_descriptor,
              new java.lang.String[] { "Payload", "LastScanned", "Version", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
