You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by iv...@apache.org on 2011/08/29 19:34:17 UTC

svn commit: r1162913 [2/3] - in /zookeeper/bookkeeper/trunk: ./ bookkeeper-benchmark/ hedwig-client/ hedwig-protocol/ hedwig-protocol/src/main/java/org/apache/hedwig/protocol/ hedwig-server/

Added: zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/protocol/PubSubProtocol.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/protocol/PubSubProtocol.java?rev=1162913&view=auto
==============================================================================
--- zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/protocol/PubSubProtocol.java (added)
+++ zookeeper/bookkeeper/trunk/hedwig-protocol/src/main/java/org/apache/hedwig/protocol/PubSubProtocol.java Mon Aug 29 17:34:16 2011
@@ -0,0 +1,6095 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: src/main/protobuf/PubSubProtocol.proto
+
+package org.apache.hedwig.protocol;
+
+public final class PubSubProtocol {
+  private PubSubProtocol() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+  }
+  public enum ProtocolVersion
+      implements com.google.protobuf.ProtocolMessageEnum {
+    VERSION_ONE(0, 1),
+    ;
+    
+    
+    public final int getNumber() { return value; }
+    
+    public static ProtocolVersion valueOf(int value) {
+      switch (value) {
+        case 1: return VERSION_ONE;
+        default: return null;
+      }
+    }
+    
+    public static com.google.protobuf.Internal.EnumLiteMap<ProtocolVersion>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<ProtocolVersion>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<ProtocolVersion>() {
+            public ProtocolVersion findValueByNumber(int number) {
+              return ProtocolVersion.valueOf(number)
+    ;        }
+          };
+    
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.getDescriptor().getEnumTypes().get(0);
+    }
+    
+    private static final ProtocolVersion[] VALUES = {
+      VERSION_ONE, 
+    };
+    public static ProtocolVersion valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+    private final int index;
+    private final int value;
+    private ProtocolVersion(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+    
+    static {
+      org.apache.hedwig.protocol.PubSubProtocol.getDescriptor();
+    }
+    
+    // @@protoc_insertion_point(enum_scope:Hedwig.ProtocolVersion)
+  }
+  
+  public enum OperationType
+      implements com.google.protobuf.ProtocolMessageEnum {
+    PUBLISH(0, 0),
+    SUBSCRIBE(1, 1),
+    CONSUME(2, 2),
+    UNSUBSCRIBE(3, 3),
+    START_DELIVERY(4, 4),
+    STOP_DELIVERY(5, 5),
+    ;
+    
+    
+    public final int getNumber() { return value; }
+    
+    public static OperationType valueOf(int value) {
+      switch (value) {
+        case 0: return PUBLISH;
+        case 1: return SUBSCRIBE;
+        case 2: return CONSUME;
+        case 3: return UNSUBSCRIBE;
+        case 4: return START_DELIVERY;
+        case 5: return STOP_DELIVERY;
+        default: return null;
+      }
+    }
+    
+    public static com.google.protobuf.Internal.EnumLiteMap<OperationType>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<OperationType>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<OperationType>() {
+            public OperationType findValueByNumber(int number) {
+              return OperationType.valueOf(number)
+    ;        }
+          };
+    
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.getDescriptor().getEnumTypes().get(1);
+    }
+    
+    private static final OperationType[] VALUES = {
+      PUBLISH, SUBSCRIBE, CONSUME, UNSUBSCRIBE, START_DELIVERY, STOP_DELIVERY, 
+    };
+    public static OperationType valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+    private final int index;
+    private final int value;
+    private OperationType(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+    
+    static {
+      org.apache.hedwig.protocol.PubSubProtocol.getDescriptor();
+    }
+    
+    // @@protoc_insertion_point(enum_scope:Hedwig.OperationType)
+  }
+  
+  public enum StatusCode
+      implements com.google.protobuf.ProtocolMessageEnum {
+    SUCCESS(0, 0),
+    MALFORMED_REQUEST(1, 401),
+    NO_SUCH_TOPIC(2, 402),
+    CLIENT_ALREADY_SUBSCRIBED(3, 403),
+    CLIENT_NOT_SUBSCRIBED(4, 404),
+    COULD_NOT_CONNECT(5, 405),
+    TOPIC_BUSY(6, 406),
+    NOT_RESPONSIBLE_FOR_TOPIC(7, 501),
+    SERVICE_DOWN(8, 502),
+    UNCERTAIN_STATE(9, 503),
+    UNEXPECTED_CONDITION(10, 600),
+    COMPOSITE(11, 700),
+    ;
+    
+    
+    public final int getNumber() { return value; }
+    
+    public static StatusCode valueOf(int value) {
+      switch (value) {
+        case 0: return SUCCESS;
+        case 401: return MALFORMED_REQUEST;
+        case 402: return NO_SUCH_TOPIC;
+        case 403: return CLIENT_ALREADY_SUBSCRIBED;
+        case 404: return CLIENT_NOT_SUBSCRIBED;
+        case 405: return COULD_NOT_CONNECT;
+        case 406: return TOPIC_BUSY;
+        case 501: return NOT_RESPONSIBLE_FOR_TOPIC;
+        case 502: return SERVICE_DOWN;
+        case 503: return UNCERTAIN_STATE;
+        case 600: return UNEXPECTED_CONDITION;
+        case 700: return COMPOSITE;
+        default: return null;
+      }
+    }
+    
+    public static com.google.protobuf.Internal.EnumLiteMap<StatusCode>
+        internalGetValueMap() {
+      return internalValueMap;
+    }
+    private static com.google.protobuf.Internal.EnumLiteMap<StatusCode>
+        internalValueMap =
+          new com.google.protobuf.Internal.EnumLiteMap<StatusCode>() {
+            public StatusCode findValueByNumber(int number) {
+              return StatusCode.valueOf(number)
+    ;        }
+          };
+    
+    public final com.google.protobuf.Descriptors.EnumValueDescriptor
+        getValueDescriptor() {
+      return getDescriptor().getValues().get(index);
+    }
+    public final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptorForType() {
+      return getDescriptor();
+    }
+    public static final com.google.protobuf.Descriptors.EnumDescriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.getDescriptor().getEnumTypes().get(2);
+    }
+    
+    private static final StatusCode[] VALUES = {
+      SUCCESS, MALFORMED_REQUEST, NO_SUCH_TOPIC, CLIENT_ALREADY_SUBSCRIBED, CLIENT_NOT_SUBSCRIBED, COULD_NOT_CONNECT, TOPIC_BUSY, NOT_RESPONSIBLE_FOR_TOPIC, SERVICE_DOWN, UNCERTAIN_STATE, UNEXPECTED_CONDITION, COMPOSITE, 
+    };
+    public static StatusCode valueOf(
+        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+      if (desc.getType() != getDescriptor()) {
+        throw new java.lang.IllegalArgumentException(
+          "EnumValueDescriptor is not for this type.");
+      }
+      return VALUES[desc.getIndex()];
+    }
+    private final int index;
+    private final int value;
+    private StatusCode(int index, int value) {
+      this.index = index;
+      this.value = value;
+    }
+    
+    static {
+      org.apache.hedwig.protocol.PubSubProtocol.getDescriptor();
+    }
+    
+    // @@protoc_insertion_point(enum_scope:Hedwig.StatusCode)
+  }
+  
+  public static final class Message extends
+      com.google.protobuf.GeneratedMessage {
+    // Use Message.newBuilder() to construct.
+    private Message() {
+      initFields();
+    }
+    private Message(boolean noInit) {}
+    
+    private static final Message defaultInstance;
+    public static Message getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public Message getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_Message_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_Message_fieldAccessorTable;
+    }
+    
+    // required bytes body = 1;
+    public static final int BODY_FIELD_NUMBER = 1;
+    private boolean hasBody;
+    private com.google.protobuf.ByteString body_ = com.google.protobuf.ByteString.EMPTY;
+    public boolean hasBody() { return hasBody; }
+    public com.google.protobuf.ByteString getBody() { return body_; }
+    
+    // optional bytes srcRegion = 2;
+    public static final int SRCREGION_FIELD_NUMBER = 2;
+    private boolean hasSrcRegion;
+    private com.google.protobuf.ByteString srcRegion_ = com.google.protobuf.ByteString.EMPTY;
+    public boolean hasSrcRegion() { return hasSrcRegion; }
+    public com.google.protobuf.ByteString getSrcRegion() { return srcRegion_; }
+    
+    // optional .Hedwig.MessageSeqId msgId = 3;
+    public static final int MSGID_FIELD_NUMBER = 3;
+    private boolean hasMsgId;
+    private org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId msgId_;
+    public boolean hasMsgId() { return hasMsgId; }
+    public org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId getMsgId() { return msgId_; }
+    
+    private void initFields() {
+      msgId_ = org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.getDefaultInstance();
+    }
+    public final boolean isInitialized() {
+      if (!hasBody) return false;
+      if (hasMsgId()) {
+        if (!getMsgId().isInitialized()) return false;
+      }
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (hasBody()) {
+        output.writeBytes(1, getBody());
+      }
+      if (hasSrcRegion()) {
+        output.writeBytes(2, getSrcRegion());
+      }
+      if (hasMsgId()) {
+        output.writeMessage(3, getMsgId());
+      }
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      if (hasBody()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getBody());
+      }
+      if (hasSrcRegion()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getSrcRegion());
+      }
+      if (hasMsgId()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(3, getMsgId());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.Message parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.hedwig.protocol.PubSubProtocol.Message prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private org.apache.hedwig.protocol.PubSubProtocol.Message result;
+      
+      // Construct using org.apache.hedwig.protocol.PubSubProtocol.Message.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new org.apache.hedwig.protocol.PubSubProtocol.Message();
+        return builder;
+      }
+      
+      protected org.apache.hedwig.protocol.PubSubProtocol.Message internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new org.apache.hedwig.protocol.PubSubProtocol.Message();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.Message.getDescriptor();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.Message getDefaultInstanceForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.Message.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.Message build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private org.apache.hedwig.protocol.PubSubProtocol.Message buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.Message buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        org.apache.hedwig.protocol.PubSubProtocol.Message returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.hedwig.protocol.PubSubProtocol.Message) {
+          return mergeFrom((org.apache.hedwig.protocol.PubSubProtocol.Message)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(org.apache.hedwig.protocol.PubSubProtocol.Message other) {
+        if (other == org.apache.hedwig.protocol.PubSubProtocol.Message.getDefaultInstance()) return this;
+        if (other.hasBody()) {
+          setBody(other.getBody());
+        }
+        if (other.hasSrcRegion()) {
+          setSrcRegion(other.getSrcRegion());
+        }
+        if (other.hasMsgId()) {
+          mergeMsgId(other.getMsgId());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+            case 10: {
+              setBody(input.readBytes());
+              break;
+            }
+            case 18: {
+              setSrcRegion(input.readBytes());
+              break;
+            }
+            case 26: {
+              org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.newBuilder();
+              if (hasMsgId()) {
+                subBuilder.mergeFrom(getMsgId());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setMsgId(subBuilder.buildPartial());
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // required bytes body = 1;
+      public boolean hasBody() {
+        return result.hasBody();
+      }
+      public com.google.protobuf.ByteString getBody() {
+        return result.getBody();
+      }
+      public Builder setBody(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasBody = true;
+        result.body_ = value;
+        return this;
+      }
+      public Builder clearBody() {
+        result.hasBody = false;
+        result.body_ = getDefaultInstance().getBody();
+        return this;
+      }
+      
+      // optional bytes srcRegion = 2;
+      public boolean hasSrcRegion() {
+        return result.hasSrcRegion();
+      }
+      public com.google.protobuf.ByteString getSrcRegion() {
+        return result.getSrcRegion();
+      }
+      public Builder setSrcRegion(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasSrcRegion = true;
+        result.srcRegion_ = value;
+        return this;
+      }
+      public Builder clearSrcRegion() {
+        result.hasSrcRegion = false;
+        result.srcRegion_ = getDefaultInstance().getSrcRegion();
+        return this;
+      }
+      
+      // optional .Hedwig.MessageSeqId msgId = 3;
+      public boolean hasMsgId() {
+        return result.hasMsgId();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId getMsgId() {
+        return result.getMsgId();
+      }
+      public Builder setMsgId(org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasMsgId = true;
+        result.msgId_ = value;
+        return this;
+      }
+      public Builder setMsgId(org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.Builder builderForValue) {
+        result.hasMsgId = true;
+        result.msgId_ = builderForValue.build();
+        return this;
+      }
+      public Builder mergeMsgId(org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId value) {
+        if (result.hasMsgId() &&
+            result.msgId_ != org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.getDefaultInstance()) {
+          result.msgId_ =
+            org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.newBuilder(result.msgId_).mergeFrom(value).buildPartial();
+        } else {
+          result.msgId_ = value;
+        }
+        result.hasMsgId = true;
+        return this;
+      }
+      public Builder clearMsgId() {
+        result.hasMsgId = false;
+        result.msgId_ = org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.getDefaultInstance();
+        return this;
+      }
+      
+      // @@protoc_insertion_point(builder_scope:Hedwig.Message)
+    }
+    
+    static {
+      defaultInstance = new Message(true);
+      org.apache.hedwig.protocol.PubSubProtocol.internalForceInit();
+      defaultInstance.initFields();
+    }
+    
+    // @@protoc_insertion_point(class_scope:Hedwig.Message)
+  }
+  
+  public static final class RegionSpecificSeqId extends
+      com.google.protobuf.GeneratedMessage {
+    // Use RegionSpecificSeqId.newBuilder() to construct.
+    private RegionSpecificSeqId() {
+      initFields();
+    }
+    private RegionSpecificSeqId(boolean noInit) {}
+    
+    private static final RegionSpecificSeqId defaultInstance;
+    public static RegionSpecificSeqId getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public RegionSpecificSeqId getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_RegionSpecificSeqId_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_RegionSpecificSeqId_fieldAccessorTable;
+    }
+    
+    // required bytes region = 1;
+    public static final int REGION_FIELD_NUMBER = 1;
+    private boolean hasRegion;
+    private com.google.protobuf.ByteString region_ = com.google.protobuf.ByteString.EMPTY;
+    public boolean hasRegion() { return hasRegion; }
+    public com.google.protobuf.ByteString getRegion() { return region_; }
+    
+    // required uint64 seqId = 2;
+    public static final int SEQID_FIELD_NUMBER = 2;
+    private boolean hasSeqId;
+    private long seqId_ = 0L;
+    public boolean hasSeqId() { return hasSeqId; }
+    public long getSeqId() { return seqId_; }
+    
+    private void initFields() {
+    }
+    public final boolean isInitialized() {
+      if (!hasRegion) return false;
+      if (!hasSeqId) return false;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (hasRegion()) {
+        output.writeBytes(1, getRegion());
+      }
+      if (hasSeqId()) {
+        output.writeUInt64(2, getSeqId());
+      }
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      if (hasRegion()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getRegion());
+      }
+      if (hasSeqId()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(2, getSeqId());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId result;
+      
+      // Construct using org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId();
+        return builder;
+      }
+      
+      protected org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.getDescriptor();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId getDefaultInstanceForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId) {
+          return mergeFrom((org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId other) {
+        if (other == org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.getDefaultInstance()) return this;
+        if (other.hasRegion()) {
+          setRegion(other.getRegion());
+        }
+        if (other.hasSeqId()) {
+          setSeqId(other.getSeqId());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+            case 10: {
+              setRegion(input.readBytes());
+              break;
+            }
+            case 16: {
+              setSeqId(input.readUInt64());
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // required bytes region = 1;
+      public boolean hasRegion() {
+        return result.hasRegion();
+      }
+      public com.google.protobuf.ByteString getRegion() {
+        return result.getRegion();
+      }
+      public Builder setRegion(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasRegion = true;
+        result.region_ = value;
+        return this;
+      }
+      public Builder clearRegion() {
+        result.hasRegion = false;
+        result.region_ = getDefaultInstance().getRegion();
+        return this;
+      }
+      
+      // required uint64 seqId = 2;
+      public boolean hasSeqId() {
+        return result.hasSeqId();
+      }
+      public long getSeqId() {
+        return result.getSeqId();
+      }
+      public Builder setSeqId(long value) {
+        result.hasSeqId = true;
+        result.seqId_ = value;
+        return this;
+      }
+      public Builder clearSeqId() {
+        result.hasSeqId = false;
+        result.seqId_ = 0L;
+        return this;
+      }
+      
+      // @@protoc_insertion_point(builder_scope:Hedwig.RegionSpecificSeqId)
+    }
+    
+    static {
+      defaultInstance = new RegionSpecificSeqId(true);
+      org.apache.hedwig.protocol.PubSubProtocol.internalForceInit();
+      defaultInstance.initFields();
+    }
+    
+    // @@protoc_insertion_point(class_scope:Hedwig.RegionSpecificSeqId)
+  }
+  
+  public static final class MessageSeqId extends
+      com.google.protobuf.GeneratedMessage {
+    // Use MessageSeqId.newBuilder() to construct.
+    private MessageSeqId() {
+      initFields();
+    }
+    private MessageSeqId(boolean noInit) {}
+    
+    private static final MessageSeqId defaultInstance;
+    public static MessageSeqId getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public MessageSeqId getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_MessageSeqId_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_MessageSeqId_fieldAccessorTable;
+    }
+    
+    // optional uint64 localComponent = 1;
+    public static final int LOCALCOMPONENT_FIELD_NUMBER = 1;
+    private boolean hasLocalComponent;
+    private long localComponent_ = 0L;
+    public boolean hasLocalComponent() { return hasLocalComponent; }
+    public long getLocalComponent() { return localComponent_; }
+    
+    // repeated .Hedwig.RegionSpecificSeqId remoteComponents = 2;
+    public static final int REMOTECOMPONENTS_FIELD_NUMBER = 2;
+    private java.util.List<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId> remoteComponents_ =
+      java.util.Collections.emptyList();
+    public java.util.List<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId> getRemoteComponentsList() {
+      return remoteComponents_;
+    }
+    public int getRemoteComponentsCount() { return remoteComponents_.size(); }
+    public org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId getRemoteComponents(int index) {
+      return remoteComponents_.get(index);
+    }
+    
+    private void initFields() {
+    }
+    public final boolean isInitialized() {
+      for (org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId element : getRemoteComponentsList()) {
+        if (!element.isInitialized()) return false;
+      }
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (hasLocalComponent()) {
+        output.writeUInt64(1, getLocalComponent());
+      }
+      for (org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId element : getRemoteComponentsList()) {
+        output.writeMessage(2, element);
+      }
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      if (hasLocalComponent()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(1, getLocalComponent());
+      }
+      for (org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId element : getRemoteComponentsList()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(2, element);
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId result;
+      
+      // Construct using org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId();
+        return builder;
+      }
+      
+      protected org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.getDescriptor();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId getDefaultInstanceForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        if (result.remoteComponents_ != java.util.Collections.EMPTY_LIST) {
+          result.remoteComponents_ =
+            java.util.Collections.unmodifiableList(result.remoteComponents_);
+        }
+        org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId) {
+          return mergeFrom((org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId other) {
+        if (other == org.apache.hedwig.protocol.PubSubProtocol.MessageSeqId.getDefaultInstance()) return this;
+        if (other.hasLocalComponent()) {
+          setLocalComponent(other.getLocalComponent());
+        }
+        if (!other.remoteComponents_.isEmpty()) {
+          if (result.remoteComponents_.isEmpty()) {
+            result.remoteComponents_ = new java.util.ArrayList<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId>();
+          }
+          result.remoteComponents_.addAll(other.remoteComponents_);
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+            case 8: {
+              setLocalComponent(input.readUInt64());
+              break;
+            }
+            case 18: {
+              org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.newBuilder();
+              input.readMessage(subBuilder, extensionRegistry);
+              addRemoteComponents(subBuilder.buildPartial());
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // optional uint64 localComponent = 1;
+      public boolean hasLocalComponent() {
+        return result.hasLocalComponent();
+      }
+      public long getLocalComponent() {
+        return result.getLocalComponent();
+      }
+      public Builder setLocalComponent(long value) {
+        result.hasLocalComponent = true;
+        result.localComponent_ = value;
+        return this;
+      }
+      public Builder clearLocalComponent() {
+        result.hasLocalComponent = false;
+        result.localComponent_ = 0L;
+        return this;
+      }
+      
+      // repeated .Hedwig.RegionSpecificSeqId remoteComponents = 2;
+      public java.util.List<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId> getRemoteComponentsList() {
+        return java.util.Collections.unmodifiableList(result.remoteComponents_);
+      }
+      public int getRemoteComponentsCount() {
+        return result.getRemoteComponentsCount();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId getRemoteComponents(int index) {
+        return result.getRemoteComponents(index);
+      }
+      public Builder setRemoteComponents(int index, org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.remoteComponents_.set(index, value);
+        return this;
+      }
+      public Builder setRemoteComponents(int index, org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.Builder builderForValue) {
+        result.remoteComponents_.set(index, builderForValue.build());
+        return this;
+      }
+      public Builder addRemoteComponents(org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        if (result.remoteComponents_.isEmpty()) {
+          result.remoteComponents_ = new java.util.ArrayList<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId>();
+        }
+        result.remoteComponents_.add(value);
+        return this;
+      }
+      public Builder addRemoteComponents(org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId.Builder builderForValue) {
+        if (result.remoteComponents_.isEmpty()) {
+          result.remoteComponents_ = new java.util.ArrayList<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId>();
+        }
+        result.remoteComponents_.add(builderForValue.build());
+        return this;
+      }
+      public Builder addAllRemoteComponents(
+          java.lang.Iterable<? extends org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId> values) {
+        if (result.remoteComponents_.isEmpty()) {
+          result.remoteComponents_ = new java.util.ArrayList<org.apache.hedwig.protocol.PubSubProtocol.RegionSpecificSeqId>();
+        }
+        super.addAll(values, result.remoteComponents_);
+        return this;
+      }
+      public Builder clearRemoteComponents() {
+        result.remoteComponents_ = java.util.Collections.emptyList();
+        return this;
+      }
+      
+      // @@protoc_insertion_point(builder_scope:Hedwig.MessageSeqId)
+    }
+    
+    static {
+      defaultInstance = new MessageSeqId(true);
+      org.apache.hedwig.protocol.PubSubProtocol.internalForceInit();
+      defaultInstance.initFields();
+    }
+    
+    // @@protoc_insertion_point(class_scope:Hedwig.MessageSeqId)
+  }
+  
+  public static final class PubSubRequest extends
+      com.google.protobuf.GeneratedMessage {
+    // Use PubSubRequest.newBuilder() to construct.
+    private PubSubRequest() {
+      initFields();
+    }
+    private PubSubRequest(boolean noInit) {}
+    
+    private static final PubSubRequest defaultInstance;
+    public static PubSubRequest getDefaultInstance() {
+      return defaultInstance;
+    }
+    
+    public PubSubRequest getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+    
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_PubSubRequest_descriptor;
+    }
+    
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.hedwig.protocol.PubSubProtocol.internal_static_Hedwig_PubSubRequest_fieldAccessorTable;
+    }
+    
+    // required .Hedwig.ProtocolVersion protocolVersion = 1;
+    public static final int PROTOCOLVERSION_FIELD_NUMBER = 1;
+    private boolean hasProtocolVersion;
+    private org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion protocolVersion_;
+    public boolean hasProtocolVersion() { return hasProtocolVersion; }
+    public org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion getProtocolVersion() { return protocolVersion_; }
+    
+    // required .Hedwig.OperationType type = 2;
+    public static final int TYPE_FIELD_NUMBER = 2;
+    private boolean hasType;
+    private org.apache.hedwig.protocol.PubSubProtocol.OperationType type_;
+    public boolean hasType() { return hasType; }
+    public org.apache.hedwig.protocol.PubSubProtocol.OperationType getType() { return type_; }
+    
+    // repeated bytes triedServers = 3;
+    public static final int TRIEDSERVERS_FIELD_NUMBER = 3;
+    private java.util.List<com.google.protobuf.ByteString> triedServers_ =
+      java.util.Collections.emptyList();
+    public java.util.List<com.google.protobuf.ByteString> getTriedServersList() {
+      return triedServers_;
+    }
+    public int getTriedServersCount() { return triedServers_.size(); }
+    public com.google.protobuf.ByteString getTriedServers(int index) {
+      return triedServers_.get(index);
+    }
+    
+    // required uint64 txnId = 4;
+    public static final int TXNID_FIELD_NUMBER = 4;
+    private boolean hasTxnId;
+    private long txnId_ = 0L;
+    public boolean hasTxnId() { return hasTxnId; }
+    public long getTxnId() { return txnId_; }
+    
+    // optional bool shouldClaim = 5;
+    public static final int SHOULDCLAIM_FIELD_NUMBER = 5;
+    private boolean hasShouldClaim;
+    private boolean shouldClaim_ = false;
+    public boolean hasShouldClaim() { return hasShouldClaim; }
+    public boolean getShouldClaim() { return shouldClaim_; }
+    
+    // required bytes topic = 6;
+    public static final int TOPIC_FIELD_NUMBER = 6;
+    private boolean hasTopic;
+    private com.google.protobuf.ByteString topic_ = com.google.protobuf.ByteString.EMPTY;
+    public boolean hasTopic() { return hasTopic; }
+    public com.google.protobuf.ByteString getTopic() { return topic_; }
+    
+    // optional .Hedwig.PublishRequest publishRequest = 52;
+    public static final int PUBLISHREQUEST_FIELD_NUMBER = 52;
+    private boolean hasPublishRequest;
+    private org.apache.hedwig.protocol.PubSubProtocol.PublishRequest publishRequest_;
+    public boolean hasPublishRequest() { return hasPublishRequest; }
+    public org.apache.hedwig.protocol.PubSubProtocol.PublishRequest getPublishRequest() { return publishRequest_; }
+    
+    // optional .Hedwig.SubscribeRequest subscribeRequest = 53;
+    public static final int SUBSCRIBEREQUEST_FIELD_NUMBER = 53;
+    private boolean hasSubscribeRequest;
+    private org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest subscribeRequest_;
+    public boolean hasSubscribeRequest() { return hasSubscribeRequest; }
+    public org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest getSubscribeRequest() { return subscribeRequest_; }
+    
+    // optional .Hedwig.ConsumeRequest consumeRequest = 54;
+    public static final int CONSUMEREQUEST_FIELD_NUMBER = 54;
+    private boolean hasConsumeRequest;
+    private org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest consumeRequest_;
+    public boolean hasConsumeRequest() { return hasConsumeRequest; }
+    public org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest getConsumeRequest() { return consumeRequest_; }
+    
+    // optional .Hedwig.UnsubscribeRequest unsubscribeRequest = 55;
+    public static final int UNSUBSCRIBEREQUEST_FIELD_NUMBER = 55;
+    private boolean hasUnsubscribeRequest;
+    private org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest unsubscribeRequest_;
+    public boolean hasUnsubscribeRequest() { return hasUnsubscribeRequest; }
+    public org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest getUnsubscribeRequest() { return unsubscribeRequest_; }
+    
+    // optional .Hedwig.StopDeliveryRequest stopDeliveryRequest = 56;
+    public static final int STOPDELIVERYREQUEST_FIELD_NUMBER = 56;
+    private boolean hasStopDeliveryRequest;
+    private org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest stopDeliveryRequest_;
+    public boolean hasStopDeliveryRequest() { return hasStopDeliveryRequest; }
+    public org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest getStopDeliveryRequest() { return stopDeliveryRequest_; }
+    
+    // optional .Hedwig.StartDeliveryRequest startDeliveryRequest = 57;
+    public static final int STARTDELIVERYREQUEST_FIELD_NUMBER = 57;
+    private boolean hasStartDeliveryRequest;
+    private org.apache.hedwig.protocol.PubSubProtocol.StartDeliveryRequest startDeliveryRequest_;
+    public boolean hasStartDeliveryRequest() { return hasStartDeliveryRequest; }
+    public org.apache.hedwig.protocol.PubSubProtocol.StartDeliveryRequest getStartDeliveryRequest() { return startDeliveryRequest_; }
+    
+    private void initFields() {
+      protocolVersion_ = org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion.VERSION_ONE;
+      type_ = org.apache.hedwig.protocol.PubSubProtocol.OperationType.PUBLISH;
+      publishRequest_ = org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.getDefaultInstance();
+      subscribeRequest_ = org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.getDefaultInstance();
+      consumeRequest_ = org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.getDefaultInstance();
+      unsubscribeRequest_ = org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.getDefaultInstance();
+      stopDeliveryRequest_ = org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest.getDefaultInstance();
+      startDeliveryRequest_ = org.apache.hedwig.protocol.PubSubProtocol.StartDeliveryRequest.getDefaultInstance();
+    }
+    public final boolean isInitialized() {
+      if (!hasProtocolVersion) return false;
+      if (!hasType) return false;
+      if (!hasTxnId) return false;
+      if (!hasTopic) return false;
+      if (hasPublishRequest()) {
+        if (!getPublishRequest().isInitialized()) return false;
+      }
+      if (hasSubscribeRequest()) {
+        if (!getSubscribeRequest().isInitialized()) return false;
+      }
+      if (hasConsumeRequest()) {
+        if (!getConsumeRequest().isInitialized()) return false;
+      }
+      if (hasUnsubscribeRequest()) {
+        if (!getUnsubscribeRequest().isInitialized()) return false;
+      }
+      if (hasStopDeliveryRequest()) {
+        if (!getStopDeliveryRequest().isInitialized()) return false;
+      }
+      if (hasStartDeliveryRequest()) {
+        if (!getStartDeliveryRequest().isInitialized()) return false;
+      }
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (hasProtocolVersion()) {
+        output.writeEnum(1, getProtocolVersion().getNumber());
+      }
+      if (hasType()) {
+        output.writeEnum(2, getType().getNumber());
+      }
+      for (com.google.protobuf.ByteString element : getTriedServersList()) {
+        output.writeBytes(3, element);
+      }
+      if (hasTxnId()) {
+        output.writeUInt64(4, getTxnId());
+      }
+      if (hasShouldClaim()) {
+        output.writeBool(5, getShouldClaim());
+      }
+      if (hasTopic()) {
+        output.writeBytes(6, getTopic());
+      }
+      if (hasPublishRequest()) {
+        output.writeMessage(52, getPublishRequest());
+      }
+      if (hasSubscribeRequest()) {
+        output.writeMessage(53, getSubscribeRequest());
+      }
+      if (hasConsumeRequest()) {
+        output.writeMessage(54, getConsumeRequest());
+      }
+      if (hasUnsubscribeRequest()) {
+        output.writeMessage(55, getUnsubscribeRequest());
+      }
+      if (hasStopDeliveryRequest()) {
+        output.writeMessage(56, getStopDeliveryRequest());
+      }
+      if (hasStartDeliveryRequest()) {
+        output.writeMessage(57, getStartDeliveryRequest());
+      }
+      getUnknownFields().writeTo(output);
+    }
+    
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+    
+      size = 0;
+      if (hasProtocolVersion()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(1, getProtocolVersion().getNumber());
+      }
+      if (hasType()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeEnumSize(2, getType().getNumber());
+      }
+      {
+        int dataSize = 0;
+        for (com.google.protobuf.ByteString element : getTriedServersList()) {
+          dataSize += com.google.protobuf.CodedOutputStream
+            .computeBytesSizeNoTag(element);
+        }
+        size += dataSize;
+        size += 1 * getTriedServersList().size();
+      }
+      if (hasTxnId()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt64Size(4, getTxnId());
+      }
+      if (hasShouldClaim()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBoolSize(5, getShouldClaim());
+      }
+      if (hasTopic()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(6, getTopic());
+      }
+      if (hasPublishRequest()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(52, getPublishRequest());
+      }
+      if (hasSubscribeRequest()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(53, getSubscribeRequest());
+      }
+      if (hasConsumeRequest()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(54, getConsumeRequest());
+      }
+      if (hasUnsubscribeRequest()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(55, getUnsubscribeRequest());
+      }
+      if (hasStopDeliveryRequest()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(56, getStopDeliveryRequest());
+      }
+      if (hasStartDeliveryRequest()) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(57, getStartDeliveryRequest());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+    
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return newBuilder().mergeFrom(data, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      Builder builder = newBuilder();
+      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+        return builder.buildParsed();
+      } else {
+        return null;
+      }
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input).buildParsed();
+    }
+    public static org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return newBuilder().mergeFrom(input, extensionRegistry)
+               .buildParsed();
+    }
+    
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+    
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder> {
+      private org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest result;
+      
+      // Construct using org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest.newBuilder()
+      private Builder() {}
+      
+      private static Builder create() {
+        Builder builder = new Builder();
+        builder.result = new org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest();
+        return builder;
+      }
+      
+      protected org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest internalGetResult() {
+        return result;
+      }
+      
+      public Builder clear() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "Cannot call clear() after build().");
+        }
+        result = new org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest();
+        return this;
+      }
+      
+      public Builder clone() {
+        return create().mergeFrom(result);
+      }
+      
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest.getDescriptor();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest getDefaultInstanceForType() {
+        return org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest.getDefaultInstance();
+      }
+      
+      public boolean isInitialized() {
+        return result.isInitialized();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest build() {
+        if (result != null && !isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return buildPartial();
+      }
+      
+      private org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest buildParsed()
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        if (!isInitialized()) {
+          throw newUninitializedMessageException(
+            result).asInvalidProtocolBufferException();
+        }
+        return buildPartial();
+      }
+      
+      public org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest buildPartial() {
+        if (result == null) {
+          throw new IllegalStateException(
+            "build() has already been called on this Builder.");
+        }
+        if (result.triedServers_ != java.util.Collections.EMPTY_LIST) {
+          result.triedServers_ =
+            java.util.Collections.unmodifiableList(result.triedServers_);
+        }
+        org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest returnMe = result;
+        result = null;
+        return returnMe;
+      }
+      
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest) {
+          return mergeFrom((org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+      
+      public Builder mergeFrom(org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest other) {
+        if (other == org.apache.hedwig.protocol.PubSubProtocol.PubSubRequest.getDefaultInstance()) return this;
+        if (other.hasProtocolVersion()) {
+          setProtocolVersion(other.getProtocolVersion());
+        }
+        if (other.hasType()) {
+          setType(other.getType());
+        }
+        if (!other.triedServers_.isEmpty()) {
+          if (result.triedServers_.isEmpty()) {
+            result.triedServers_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
+          }
+          result.triedServers_.addAll(other.triedServers_);
+        }
+        if (other.hasTxnId()) {
+          setTxnId(other.getTxnId());
+        }
+        if (other.hasShouldClaim()) {
+          setShouldClaim(other.getShouldClaim());
+        }
+        if (other.hasTopic()) {
+          setTopic(other.getTopic());
+        }
+        if (other.hasPublishRequest()) {
+          mergePublishRequest(other.getPublishRequest());
+        }
+        if (other.hasSubscribeRequest()) {
+          mergeSubscribeRequest(other.getSubscribeRequest());
+        }
+        if (other.hasConsumeRequest()) {
+          mergeConsumeRequest(other.getConsumeRequest());
+        }
+        if (other.hasUnsubscribeRequest()) {
+          mergeUnsubscribeRequest(other.getUnsubscribeRequest());
+        }
+        if (other.hasStopDeliveryRequest()) {
+          mergeStopDeliveryRequest(other.getStopDeliveryRequest());
+        }
+        if (other.hasStartDeliveryRequest()) {
+          mergeStartDeliveryRequest(other.getStartDeliveryRequest());
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+      
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder(
+            this.getUnknownFields());
+        while (true) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              this.setUnknownFields(unknownFields.build());
+              return this;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              }
+              break;
+            }
+            case 8: {
+              int rawValue = input.readEnum();
+              org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion value = org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(1, rawValue);
+              } else {
+                setProtocolVersion(value);
+              }
+              break;
+            }
+            case 16: {
+              int rawValue = input.readEnum();
+              org.apache.hedwig.protocol.PubSubProtocol.OperationType value = org.apache.hedwig.protocol.PubSubProtocol.OperationType.valueOf(rawValue);
+              if (value == null) {
+                unknownFields.mergeVarintField(2, rawValue);
+              } else {
+                setType(value);
+              }
+              break;
+            }
+            case 26: {
+              addTriedServers(input.readBytes());
+              break;
+            }
+            case 32: {
+              setTxnId(input.readUInt64());
+              break;
+            }
+            case 40: {
+              setShouldClaim(input.readBool());
+              break;
+            }
+            case 50: {
+              setTopic(input.readBytes());
+              break;
+            }
+            case 418: {
+              org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.newBuilder();
+              if (hasPublishRequest()) {
+                subBuilder.mergeFrom(getPublishRequest());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setPublishRequest(subBuilder.buildPartial());
+              break;
+            }
+            case 426: {
+              org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.newBuilder();
+              if (hasSubscribeRequest()) {
+                subBuilder.mergeFrom(getSubscribeRequest());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setSubscribeRequest(subBuilder.buildPartial());
+              break;
+            }
+            case 434: {
+              org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.newBuilder();
+              if (hasConsumeRequest()) {
+                subBuilder.mergeFrom(getConsumeRequest());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setConsumeRequest(subBuilder.buildPartial());
+              break;
+            }
+            case 442: {
+              org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.newBuilder();
+              if (hasUnsubscribeRequest()) {
+                subBuilder.mergeFrom(getUnsubscribeRequest());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setUnsubscribeRequest(subBuilder.buildPartial());
+              break;
+            }
+            case 450: {
+              org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest.newBuilder();
+              if (hasStopDeliveryRequest()) {
+                subBuilder.mergeFrom(getStopDeliveryRequest());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setStopDeliveryRequest(subBuilder.buildPartial());
+              break;
+            }
+            case 458: {
+              org.apache.hedwig.protocol.PubSubProtocol.StartDeliveryRequest.Builder subBuilder = org.apache.hedwig.protocol.PubSubProtocol.StartDeliveryRequest.newBuilder();
+              if (hasStartDeliveryRequest()) {
+                subBuilder.mergeFrom(getStartDeliveryRequest());
+              }
+              input.readMessage(subBuilder, extensionRegistry);
+              setStartDeliveryRequest(subBuilder.buildPartial());
+              break;
+            }
+          }
+        }
+      }
+      
+      
+      // required .Hedwig.ProtocolVersion protocolVersion = 1;
+      public boolean hasProtocolVersion() {
+        return result.hasProtocolVersion();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion getProtocolVersion() {
+        return result.getProtocolVersion();
+      }
+      public Builder setProtocolVersion(org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasProtocolVersion = true;
+        result.protocolVersion_ = value;
+        return this;
+      }
+      public Builder clearProtocolVersion() {
+        result.hasProtocolVersion = false;
+        result.protocolVersion_ = org.apache.hedwig.protocol.PubSubProtocol.ProtocolVersion.VERSION_ONE;
+        return this;
+      }
+      
+      // required .Hedwig.OperationType type = 2;
+      public boolean hasType() {
+        return result.hasType();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.OperationType getType() {
+        return result.getType();
+      }
+      public Builder setType(org.apache.hedwig.protocol.PubSubProtocol.OperationType value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasType = true;
+        result.type_ = value;
+        return this;
+      }
+      public Builder clearType() {
+        result.hasType = false;
+        result.type_ = org.apache.hedwig.protocol.PubSubProtocol.OperationType.PUBLISH;
+        return this;
+      }
+      
+      // repeated bytes triedServers = 3;
+      public java.util.List<com.google.protobuf.ByteString> getTriedServersList() {
+        return java.util.Collections.unmodifiableList(result.triedServers_);
+      }
+      public int getTriedServersCount() {
+        return result.getTriedServersCount();
+      }
+      public com.google.protobuf.ByteString getTriedServers(int index) {
+        return result.getTriedServers(index);
+      }
+      public Builder setTriedServers(int index, com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.triedServers_.set(index, value);
+        return this;
+      }
+      public Builder addTriedServers(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  if (result.triedServers_.isEmpty()) {
+          result.triedServers_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
+        }
+        result.triedServers_.add(value);
+        return this;
+      }
+      public Builder addAllTriedServers(
+          java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
+        if (result.triedServers_.isEmpty()) {
+          result.triedServers_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
+        }
+        super.addAll(values, result.triedServers_);
+        return this;
+      }
+      public Builder clearTriedServers() {
+        result.triedServers_ = java.util.Collections.emptyList();
+        return this;
+      }
+      
+      // required uint64 txnId = 4;
+      public boolean hasTxnId() {
+        return result.hasTxnId();
+      }
+      public long getTxnId() {
+        return result.getTxnId();
+      }
+      public Builder setTxnId(long value) {
+        result.hasTxnId = true;
+        result.txnId_ = value;
+        return this;
+      }
+      public Builder clearTxnId() {
+        result.hasTxnId = false;
+        result.txnId_ = 0L;
+        return this;
+      }
+      
+      // optional bool shouldClaim = 5;
+      public boolean hasShouldClaim() {
+        return result.hasShouldClaim();
+      }
+      public boolean getShouldClaim() {
+        return result.getShouldClaim();
+      }
+      public Builder setShouldClaim(boolean value) {
+        result.hasShouldClaim = true;
+        result.shouldClaim_ = value;
+        return this;
+      }
+      public Builder clearShouldClaim() {
+        result.hasShouldClaim = false;
+        result.shouldClaim_ = false;
+        return this;
+      }
+      
+      // required bytes topic = 6;
+      public boolean hasTopic() {
+        return result.hasTopic();
+      }
+      public com.google.protobuf.ByteString getTopic() {
+        return result.getTopic();
+      }
+      public Builder setTopic(com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasTopic = true;
+        result.topic_ = value;
+        return this;
+      }
+      public Builder clearTopic() {
+        result.hasTopic = false;
+        result.topic_ = getDefaultInstance().getTopic();
+        return this;
+      }
+      
+      // optional .Hedwig.PublishRequest publishRequest = 52;
+      public boolean hasPublishRequest() {
+        return result.hasPublishRequest();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.PublishRequest getPublishRequest() {
+        return result.getPublishRequest();
+      }
+      public Builder setPublishRequest(org.apache.hedwig.protocol.PubSubProtocol.PublishRequest value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasPublishRequest = true;
+        result.publishRequest_ = value;
+        return this;
+      }
+      public Builder setPublishRequest(org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.Builder builderForValue) {
+        result.hasPublishRequest = true;
+        result.publishRequest_ = builderForValue.build();
+        return this;
+      }
+      public Builder mergePublishRequest(org.apache.hedwig.protocol.PubSubProtocol.PublishRequest value) {
+        if (result.hasPublishRequest() &&
+            result.publishRequest_ != org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.getDefaultInstance()) {
+          result.publishRequest_ =
+            org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.newBuilder(result.publishRequest_).mergeFrom(value).buildPartial();
+        } else {
+          result.publishRequest_ = value;
+        }
+        result.hasPublishRequest = true;
+        return this;
+      }
+      public Builder clearPublishRequest() {
+        result.hasPublishRequest = false;
+        result.publishRequest_ = org.apache.hedwig.protocol.PubSubProtocol.PublishRequest.getDefaultInstance();
+        return this;
+      }
+      
+      // optional .Hedwig.SubscribeRequest subscribeRequest = 53;
+      public boolean hasSubscribeRequest() {
+        return result.hasSubscribeRequest();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest getSubscribeRequest() {
+        return result.getSubscribeRequest();
+      }
+      public Builder setSubscribeRequest(org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasSubscribeRequest = true;
+        result.subscribeRequest_ = value;
+        return this;
+      }
+      public Builder setSubscribeRequest(org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.Builder builderForValue) {
+        result.hasSubscribeRequest = true;
+        result.subscribeRequest_ = builderForValue.build();
+        return this;
+      }
+      public Builder mergeSubscribeRequest(org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest value) {
+        if (result.hasSubscribeRequest() &&
+            result.subscribeRequest_ != org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.getDefaultInstance()) {
+          result.subscribeRequest_ =
+            org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.newBuilder(result.subscribeRequest_).mergeFrom(value).buildPartial();
+        } else {
+          result.subscribeRequest_ = value;
+        }
+        result.hasSubscribeRequest = true;
+        return this;
+      }
+      public Builder clearSubscribeRequest() {
+        result.hasSubscribeRequest = false;
+        result.subscribeRequest_ = org.apache.hedwig.protocol.PubSubProtocol.SubscribeRequest.getDefaultInstance();
+        return this;
+      }
+      
+      // optional .Hedwig.ConsumeRequest consumeRequest = 54;
+      public boolean hasConsumeRequest() {
+        return result.hasConsumeRequest();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest getConsumeRequest() {
+        return result.getConsumeRequest();
+      }
+      public Builder setConsumeRequest(org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasConsumeRequest = true;
+        result.consumeRequest_ = value;
+        return this;
+      }
+      public Builder setConsumeRequest(org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.Builder builderForValue) {
+        result.hasConsumeRequest = true;
+        result.consumeRequest_ = builderForValue.build();
+        return this;
+      }
+      public Builder mergeConsumeRequest(org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest value) {
+        if (result.hasConsumeRequest() &&
+            result.consumeRequest_ != org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.getDefaultInstance()) {
+          result.consumeRequest_ =
+            org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.newBuilder(result.consumeRequest_).mergeFrom(value).buildPartial();
+        } else {
+          result.consumeRequest_ = value;
+        }
+        result.hasConsumeRequest = true;
+        return this;
+      }
+      public Builder clearConsumeRequest() {
+        result.hasConsumeRequest = false;
+        result.consumeRequest_ = org.apache.hedwig.protocol.PubSubProtocol.ConsumeRequest.getDefaultInstance();
+        return this;
+      }
+      
+      // optional .Hedwig.UnsubscribeRequest unsubscribeRequest = 55;
+      public boolean hasUnsubscribeRequest() {
+        return result.hasUnsubscribeRequest();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest getUnsubscribeRequest() {
+        return result.getUnsubscribeRequest();
+      }
+      public Builder setUnsubscribeRequest(org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasUnsubscribeRequest = true;
+        result.unsubscribeRequest_ = value;
+        return this;
+      }
+      public Builder setUnsubscribeRequest(org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.Builder builderForValue) {
+        result.hasUnsubscribeRequest = true;
+        result.unsubscribeRequest_ = builderForValue.build();
+        return this;
+      }
+      public Builder mergeUnsubscribeRequest(org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest value) {
+        if (result.hasUnsubscribeRequest() &&
+            result.unsubscribeRequest_ != org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.getDefaultInstance()) {
+          result.unsubscribeRequest_ =
+            org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.newBuilder(result.unsubscribeRequest_).mergeFrom(value).buildPartial();
+        } else {
+          result.unsubscribeRequest_ = value;
+        }
+        result.hasUnsubscribeRequest = true;
+        return this;
+      }
+      public Builder clearUnsubscribeRequest() {
+        result.hasUnsubscribeRequest = false;
+        result.unsubscribeRequest_ = org.apache.hedwig.protocol.PubSubProtocol.UnsubscribeRequest.getDefaultInstance();
+        return this;
+      }
+      
+      // optional .Hedwig.StopDeliveryRequest stopDeliveryRequest = 56;
+      public boolean hasStopDeliveryRequest() {
+        return result.hasStopDeliveryRequest();
+      }
+      public org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest getStopDeliveryRequest() {
+        return result.getStopDeliveryRequest();
+      }
+      public Builder setStopDeliveryRequest(org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest value) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        result.hasStopDeliveryRequest = true;
+        result.stopDeliveryRequest_ = value;
+        return this;
+      }
+      public Builder setStopDeliveryRequest(org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest.Builder builderForValue) {
+        result.hasStopDeliveryRequest = true;
+        result.stopDeliveryRequest_ = builderForValue.build();
+        return this;
+      }
+      public Builder mergeStopDeliveryRequest(org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest value) {
+        if (result.hasStopDeliveryRequest() &&
+            result.stopDeliveryRequest_ != org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest.getDefaultInstance()) {
+          result.stopDeliveryRequest_ =
+            org.apache.hedwig.protocol.PubSubProtocol.StopDeliveryRequest.newBuilder(result.stopDeliveryRequest_).mergeFrom(value).buildPartial();
+        } else {
+          result.stopDeliveryRequest_ = value;
+        }

[... 3872 lines stripped ...]