// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: mxaccess_worker.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace ZB.MOM.WW.MxGateway.Contracts.Proto {

  /// <summary>Holder for reflection information generated from mxaccess_worker.proto</summary>
  public static partial class MxaccessWorkerReflection {

    #region Descriptor
    /// <summary>File descriptor for mxaccess_worker.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static MxaccessWorkerReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChVteGFjY2Vzc193b3JrZXIucHJvdG8SEm14YWNjZXNzX3dvcmtlci52MRoe",
            "Z29vZ2xlL3Byb3RvYnVmL2R1cmF0aW9uLnByb3RvGh9nb29nbGUvcHJvdG9i",
            "dWYvdGltZXN0YW1wLnByb3RvGhZteGFjY2Vzc19nYXRld2F5LnByb3RvIpUG",
            "Cg5Xb3JrZXJFbnZlbG9wZRIYChBwcm90b2NvbF92ZXJzaW9uGAEgASgNEhIK",
            "CnNlc3Npb25faWQYAiABKAkSEAoIc2VxdWVuY2UYAyABKAQSFgoOY29ycmVs",
            "YXRpb25faWQYBCABKAkSOQoNZ2F0ZXdheV9oZWxsbxgKIAEoCzIgLm14YWNj",
            "ZXNzX3dvcmtlci52MS5HYXRld2F5SGVsbG9IABI3Cgx3b3JrZXJfaGVsbG8Y",
            "CyABKAsyHy5teGFjY2Vzc193b3JrZXIudjEuV29ya2VySGVsbG9IABI3Cgx3",
            "b3JrZXJfcmVhZHkYDCABKAsyHy5teGFjY2Vzc193b3JrZXIudjEuV29ya2Vy",
            "UmVhZHlIABI7Cg53b3JrZXJfY29tbWFuZBgNIAEoCzIhLm14YWNjZXNzX3dv",
            "cmtlci52MS5Xb3JrZXJDb21tYW5kSAASRgoUd29ya2VyX2NvbW1hbmRfcmVw",
            "bHkYDiABKAsyJi5teGFjY2Vzc193b3JrZXIudjEuV29ya2VyQ29tbWFuZFJl",
            "cGx5SAASOQoNd29ya2VyX2NhbmNlbBgPIAEoCzIgLm14YWNjZXNzX3dvcmtl",
            "ci52MS5Xb3JrZXJDYW5jZWxIABI9Cg93b3JrZXJfc2h1dGRvd24YECABKAsy",
            "Ii5teGFjY2Vzc193b3JrZXIudjEuV29ya2VyU2h1dGRvd25IABJEChN3b3Jr",
            "ZXJfc2h1dGRvd25fYWNrGBEgASgLMiUubXhhY2Nlc3Nfd29ya2VyLnYxLldv",
            "cmtlclNodXRkb3duQWNrSAASNwoMd29ya2VyX2V2ZW50GBIgASgLMh8ubXhh",
            "Y2Nlc3Nfd29ya2VyLnYxLldvcmtlckV2ZW50SAASPwoQd29ya2VyX2hlYXJ0",
            "YmVhdBgTIAEoCzIjLm14YWNjZXNzX3dvcmtlci52MS5Xb3JrZXJIZWFydGJl",
            "YXRIABI3Cgx3b3JrZXJfZmF1bHQYFCABKAsyHy5teGFjY2Vzc193b3JrZXIu",
            "djEuV29ya2VyRmF1bHRIAEIGCgRib2R5InMKDEdhdGV3YXlIZWxsbxIiChpz",
            "dXBwb3J0ZWRfcHJvdG9jb2xfdmVyc2lvbhgBIAEoDRINCgVub25jZRgCIAEo",
            "CRIXCg9nYXRld2F5X3ZlcnNpb24YAyABKAkSFwoPbWF4X2ZyYW1lX2J5dGVz",
            "GAQgASgNImkKC1dvcmtlckhlbGxvEhgKEHByb3RvY29sX3ZlcnNpb24YASAB",
            "KA0SDQoFbm9uY2UYAiABKAkSGQoRd29ya2VyX3Byb2Nlc3NfaWQYAyABKAUS",
            "FgoOd29ya2VyX3ZlcnNpb24YBCABKAkijgEKC1dvcmtlclJlYWR5EhkKEXdv",
            "cmtlcl9wcm9jZXNzX2lkGAEgASgFEhcKD214YWNjZXNzX3Byb2dpZBgCIAEo",
            "CRIWCg5teGFjY2Vzc19jbHNpZBgDIAEoCRIzCg9yZWFkeV90aW1lc3RhbXAY",
            "BCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIncKDVdvcmtlckNv",
            "bW1hbmQSLwoHY29tbWFuZBgBIAEoCzIeLm14YWNjZXNzX2dhdGV3YXkudjEu",
            "TXhDb21tYW5kEjUKEWVucXVldWVfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xl",
            "LnByb3RvYnVmLlRpbWVzdGFtcCKBAQoSV29ya2VyQ29tbWFuZFJlcGx5EjIK",
            "BXJlcGx5GAEgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRS",
            "ZXBseRI3ChNjb21wbGV0ZWRfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnBy",
            "b3RvYnVmLlRpbWVzdGFtcCIeCgxXb3JrZXJDYW5jZWwSDgoGcmVhc29uGAEg",
            "ASgJIlEKDldvcmtlclNodXRkb3duEi8KDGdyYWNlX3BlcmlvZBgBIAEoCzIZ",
            "Lmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIOCgZyZWFzb24YAiABKAkiSAoR",
            "V29ya2VyU2h1dGRvd25BY2sSMwoGc3RhdHVzGAEgASgLMiMubXhhY2Nlc3Nf",
            "Z2F0ZXdheS52MS5Qcm90b2NvbFN0YXR1cyI6CgtXb3JrZXJFdmVudBIrCgVl",
            "dmVudBgBIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhFdmVudCKlAgoP",
            "V29ya2VySGVhcnRiZWF0EhkKEXdvcmtlcl9wcm9jZXNzX2lkGAEgASgFEi4K",
            "BXN0YXRlGAIgASgOMh8ubXhhY2Nlc3Nfd29ya2VyLnYxLldvcmtlclN0YXRl",
            "Ej8KG2xhc3Rfc3RhX2FjdGl2aXR5X3RpbWVzdGFtcBgDIAEoCzIaLmdvb2ds",
            "ZS5wcm90b2J1Zi5UaW1lc3RhbXASHQoVcGVuZGluZ19jb21tYW5kX2NvdW50",
            "GAQgASgNEiIKGm91dGJvdW5kX2V2ZW50X3F1ZXVlX2RlcHRoGAUgASgNEhsK",
            "E2xhc3RfZXZlbnRfc2VxdWVuY2UYBiABKAQSJgoeY3VycmVudF9jb21tYW5k",
            "X2NvcnJlbGF0aW9uX2lkGAcgASgJIvQBCgtXb3JrZXJGYXVsdBI5CghjYXRl",
            "Z29yeRgBIAEoDjInLm14YWNjZXNzX3dvcmtlci52MS5Xb3JrZXJGYXVsdENh",
            "dGVnb3J5EhYKDmNvbW1hbmRfbWV0aG9kGAIgASgJEhQKB2hyZXN1bHQYAyAB",
            "KAVIAIgBARIWCg5leGNlcHRpb25fdHlwZRgEIAEoCRIaChJkaWFnbm9zdGlj",
            "X21lc3NhZ2UYBSABKAkSPAoPcHJvdG9jb2xfc3RhdHVzGAYgASgLMiMubXhh",
            "Y2Nlc3NfZ2F0ZXdheS52MS5Qcm90b2NvbFN0YXR1c0IKCghfaHJlc3VsdCqX",
            "AgoLV29ya2VyU3RhdGUSHAoYV09SS0VSX1NUQVRFX1VOU1BFQ0lGSUVEEAAS",
            "GQoVV09SS0VSX1NUQVRFX1NUQVJUSU5HEAESHAoYV09SS0VSX1NUQVRFX0hB",
            "TkRTSEFLSU5HEAISIQodV09SS0VSX1NUQVRFX0lOSVRJQUxJWklOR19TVEEQ",
            "AxIWChJXT1JLRVJfU1RBVEVfUkVBRFkQBBIiCh5XT1JLRVJfU1RBVEVfRVhF",
            "Q1VUSU5HX0NPTU1BTkQQBRIeChpXT1JLRVJfU1RBVEVfU0hVVFRJTkdfRE9X",
            "ThAGEhgKFFdPUktFUl9TVEFURV9TVE9QUEVEEAcSGAoUV09SS0VSX1NUQVRF",
            "X0ZBVUxURUQQCCrHBAoTV29ya2VyRmF1bHRDYXRlZ29yeRIlCiFXT1JLRVJf",
            "RkFVTFRfQ0FURUdPUllfVU5TUEVDSUZJRUQQABIrCidXT1JLRVJfRkFVTFRf",
            "Q0FURUdPUllfSU5WQUxJRF9BUkdVTUVOVFMQARI3CjNXT1JLRVJfRkFVTFRf",
            "Q0FURUdPUllfR0FURVdBWV9BVVRIRU5USUNBVElPTl9GQUlMRUQQAhIrCidX",
            "T1JLRVJfRkFVTFRfQ0FURUdPUllfUFJPVE9DT0xfTUlTTUFUQ0gQAxIsCihX",
            "T1JLRVJfRkFVTFRfQ0FURUdPUllfUFJPVE9DT0xfVklPTEFUSU9OEAQSKwon",
            "V09SS0VSX0ZBVUxUX0NBVEVHT1JZX1BJUEVfRElTQ09OTkVDVEVEEAUSMgou",
            "V09SS0VSX0ZBVUxUX0NBVEVHT1JZX01YQUNDRVNTX0NSRUFUSU9OX0ZBSUxF",
            "RBAGEjEKLVdPUktFUl9GQVVMVF9DQVRFR09SWV9NWEFDQ0VTU19DT01NQU5E",
            "X0ZBSUxFRBAHEjoKNldPUktFUl9GQVVMVF9DQVRFR09SWV9NWEFDQ0VTU19F",
            "VkVOVF9DT05WRVJTSU9OX0ZBSUxFRBAIEiIKHldPUktFUl9GQVVMVF9DQVRF",
            "R09SWV9TVEFfSFVORxAJEigKJFdPUktFUl9GQVVMVF9DQVRFR09SWV9RVUVV",
            "RV9PVkVSRkxPVxAKEioKJldPUktFUl9GQVVMVF9DQVRFR09SWV9TSFVURE9X",
            "Tl9USU1FT1VUEAtCJqoCI1pCLk1PTS5XVy5NeEdhdGV3YXkuQ29udHJhY3Rz",
            "LlByb3RvYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEnvelope), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEnvelope.Parser, new[]{ "ProtocolVersion", "SessionId", "Sequence", "CorrelationId", "GatewayHello", "WorkerHello", "WorkerReady", "WorkerCommand", "WorkerCommandReply", "WorkerCancel", "WorkerShutdown", "WorkerShutdownAck", "WorkerEvent", "WorkerHeartbeat", "WorkerFault" }, new[]{ "Body" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello), global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello.Parser, new[]{ "SupportedProtocolVersion", "Nonce", "GatewayVersion", "MaxFrameBytes" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello.Parser, new[]{ "ProtocolVersion", "Nonce", "WorkerProcessId", "WorkerVersion" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady.Parser, new[]{ "WorkerProcessId", "MxaccessProgid", "MxaccessClsid", "ReadyTimestamp" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand.Parser, new[]{ "Command", "EnqueueTimestamp" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply.Parser, new[]{ "Reply", "CompletedTimestamp" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel.Parser, new[]{ "Reason" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown.Parser, new[]{ "GracePeriod", "Reason" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck.Parser, new[]{ "Status" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent.Parser, new[]{ "Event" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat.Parser, new[]{ "WorkerProcessId", "State", "LastStaActivityTimestamp", "PendingCommandCount", "OutboundEventQueueDepth", "LastEventSequence", "CurrentCommandCorrelationId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault.Parser, new[]{ "Category", "CommandMethod", "Hresult", "ExceptionType", "DiagnosticMessage", "ProtocolStatus" }, new[]{ "Hresult" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum WorkerState {
    [pbr::OriginalName("WORKER_STATE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("WORKER_STATE_STARTING")] Starting = 1,
    [pbr::OriginalName("WORKER_STATE_HANDSHAKING")] Handshaking = 2,
    [pbr::OriginalName("WORKER_STATE_INITIALIZING_STA")] InitializingSta = 3,
    [pbr::OriginalName("WORKER_STATE_READY")] Ready = 4,
    [pbr::OriginalName("WORKER_STATE_EXECUTING_COMMAND")] ExecutingCommand = 5,
    [pbr::OriginalName("WORKER_STATE_SHUTTING_DOWN")] ShuttingDown = 6,
    [pbr::OriginalName("WORKER_STATE_STOPPED")] Stopped = 7,
    [pbr::OriginalName("WORKER_STATE_FAULTED")] Faulted = 8,
  }

  public enum WorkerFaultCategory {
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_INVALID_ARGUMENTS")] InvalidArguments = 1,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_GATEWAY_AUTHENTICATION_FAILED")] GatewayAuthenticationFailed = 2,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_PROTOCOL_MISMATCH")] ProtocolMismatch = 3,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_PROTOCOL_VIOLATION")] ProtocolViolation = 4,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_PIPE_DISCONNECTED")] PipeDisconnected = 5,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_MXACCESS_CREATION_FAILED")] MxaccessCreationFailed = 6,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_MXACCESS_COMMAND_FAILED")] MxaccessCommandFailed = 7,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_MXACCESS_EVENT_CONVERSION_FAILED")] MxaccessEventConversionFailed = 8,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_STA_HUNG")] StaHung = 9,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_QUEUE_OVERFLOW")] QueueOverflow = 10,
    [pbr::OriginalName("WORKER_FAULT_CATEGORY_SHUTDOWN_TIMEOUT")] ShutdownTimeout = 11,
  }

  #endregion

  #region Messages
  /// <summary>
  /// Gateway-to-worker IPC envelope. Named-pipe framing prepends a little-endian
  /// uint32 payload length to this protobuf payload.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerEnvelope : pb::IMessage<WorkerEnvelope>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerEnvelope> _parser = new pb::MessageParser<WorkerEnvelope>(() => new WorkerEnvelope());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerEnvelope> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerEnvelope() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerEnvelope(WorkerEnvelope other) : this() {
      protocolVersion_ = other.protocolVersion_;
      sessionId_ = other.sessionId_;
      sequence_ = other.sequence_;
      correlationId_ = other.correlationId_;
      switch (other.BodyCase) {
        case BodyOneofCase.GatewayHello:
          GatewayHello = other.GatewayHello.Clone();
          break;
        case BodyOneofCase.WorkerHello:
          WorkerHello = other.WorkerHello.Clone();
          break;
        case BodyOneofCase.WorkerReady:
          WorkerReady = other.WorkerReady.Clone();
          break;
        case BodyOneofCase.WorkerCommand:
          WorkerCommand = other.WorkerCommand.Clone();
          break;
        case BodyOneofCase.WorkerCommandReply:
          WorkerCommandReply = other.WorkerCommandReply.Clone();
          break;
        case BodyOneofCase.WorkerCancel:
          WorkerCancel = other.WorkerCancel.Clone();
          break;
        case BodyOneofCase.WorkerShutdown:
          WorkerShutdown = other.WorkerShutdown.Clone();
          break;
        case BodyOneofCase.WorkerShutdownAck:
          WorkerShutdownAck = other.WorkerShutdownAck.Clone();
          break;
        case BodyOneofCase.WorkerEvent:
          WorkerEvent = other.WorkerEvent.Clone();
          break;
        case BodyOneofCase.WorkerHeartbeat:
          WorkerHeartbeat = other.WorkerHeartbeat.Clone();
          break;
        case BodyOneofCase.WorkerFault:
          WorkerFault = other.WorkerFault.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerEnvelope Clone() {
      return new WorkerEnvelope(this);
    }

    /// <summary>Field number for the "protocol_version" field.</summary>
    public const int ProtocolVersionFieldNumber = 1;
    private uint protocolVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint ProtocolVersion {
      get { return protocolVersion_; }
      set {
        protocolVersion_ = value;
      }
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 2;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "sequence" field.</summary>
    public const int SequenceFieldNumber = 3;
    private ulong sequence_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong Sequence {
      get { return sequence_; }
      set {
        sequence_ = value;
      }
    }

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 4;
    private string correlationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "gateway_hello" field.</summary>
    public const int GatewayHelloFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello GatewayHello {
      get { return bodyCase_ == BodyOneofCase.GatewayHello ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.GatewayHello;
      }
    }

    /// <summary>Field number for the "worker_hello" field.</summary>
    public const int WorkerHelloFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello WorkerHello {
      get { return bodyCase_ == BodyOneofCase.WorkerHello ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerHello;
      }
    }

    /// <summary>Field number for the "worker_ready" field.</summary>
    public const int WorkerReadyFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady WorkerReady {
      get { return bodyCase_ == BodyOneofCase.WorkerReady ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerReady;
      }
    }

    /// <summary>Field number for the "worker_command" field.</summary>
    public const int WorkerCommandFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand WorkerCommand {
      get { return bodyCase_ == BodyOneofCase.WorkerCommand ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerCommand;
      }
    }

    /// <summary>Field number for the "worker_command_reply" field.</summary>
    public const int WorkerCommandReplyFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply WorkerCommandReply {
      get { return bodyCase_ == BodyOneofCase.WorkerCommandReply ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerCommandReply;
      }
    }

    /// <summary>Field number for the "worker_cancel" field.</summary>
    public const int WorkerCancelFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel WorkerCancel {
      get { return bodyCase_ == BodyOneofCase.WorkerCancel ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerCancel;
      }
    }

    /// <summary>Field number for the "worker_shutdown" field.</summary>
    public const int WorkerShutdownFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown WorkerShutdown {
      get { return bodyCase_ == BodyOneofCase.WorkerShutdown ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerShutdown;
      }
    }

    /// <summary>Field number for the "worker_shutdown_ack" field.</summary>
    public const int WorkerShutdownAckFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck WorkerShutdownAck {
      get { return bodyCase_ == BodyOneofCase.WorkerShutdownAck ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerShutdownAck;
      }
    }

    /// <summary>Field number for the "worker_event" field.</summary>
    public const int WorkerEventFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent WorkerEvent {
      get { return bodyCase_ == BodyOneofCase.WorkerEvent ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerEvent;
      }
    }

    /// <summary>Field number for the "worker_heartbeat" field.</summary>
    public const int WorkerHeartbeatFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat WorkerHeartbeat {
      get { return bodyCase_ == BodyOneofCase.WorkerHeartbeat ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerHeartbeat;
      }
    }

    /// <summary>Field number for the "worker_fault" field.</summary>
    public const int WorkerFaultFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault WorkerFault {
      get { return bodyCase_ == BodyOneofCase.WorkerFault ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.WorkerFault;
      }
    }

    private object body_;
    /// <summary>Enum of possible cases for the "body" oneof.</summary>
    public enum BodyOneofCase {
      None = 0,
      GatewayHello = 10,
      WorkerHello = 11,
      WorkerReady = 12,
      WorkerCommand = 13,
      WorkerCommandReply = 14,
      WorkerCancel = 15,
      WorkerShutdown = 16,
      WorkerShutdownAck = 17,
      WorkerEvent = 18,
      WorkerHeartbeat = 19,
      WorkerFault = 20,
    }
    private BodyOneofCase bodyCase_ = BodyOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyOneofCase BodyCase {
      get { return bodyCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBody() {
      bodyCase_ = BodyOneofCase.None;
      body_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerEnvelope);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerEnvelope other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ProtocolVersion != other.ProtocolVersion) return false;
      if (SessionId != other.SessionId) return false;
      if (Sequence != other.Sequence) return false;
      if (CorrelationId != other.CorrelationId) return false;
      if (!object.Equals(GatewayHello, other.GatewayHello)) return false;
      if (!object.Equals(WorkerHello, other.WorkerHello)) return false;
      if (!object.Equals(WorkerReady, other.WorkerReady)) return false;
      if (!object.Equals(WorkerCommand, other.WorkerCommand)) return false;
      if (!object.Equals(WorkerCommandReply, other.WorkerCommandReply)) return false;
      if (!object.Equals(WorkerCancel, other.WorkerCancel)) return false;
      if (!object.Equals(WorkerShutdown, other.WorkerShutdown)) return false;
      if (!object.Equals(WorkerShutdownAck, other.WorkerShutdownAck)) return false;
      if (!object.Equals(WorkerEvent, other.WorkerEvent)) return false;
      if (!object.Equals(WorkerHeartbeat, other.WorkerHeartbeat)) return false;
      if (!object.Equals(WorkerFault, other.WorkerFault)) return false;
      if (BodyCase != other.BodyCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ProtocolVersion != 0) hash ^= ProtocolVersion.GetHashCode();
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (Sequence != 0UL) hash ^= Sequence.GetHashCode();
      if (CorrelationId.Length != 0) hash ^= CorrelationId.GetHashCode();
      if (bodyCase_ == BodyOneofCase.GatewayHello) hash ^= GatewayHello.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerHello) hash ^= WorkerHello.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerReady) hash ^= WorkerReady.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerCommand) hash ^= WorkerCommand.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerCommandReply) hash ^= WorkerCommandReply.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerCancel) hash ^= WorkerCancel.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerShutdown) hash ^= WorkerShutdown.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerShutdownAck) hash ^= WorkerShutdownAck.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerEvent) hash ^= WorkerEvent.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerHeartbeat) hash ^= WorkerHeartbeat.GetHashCode();
      if (bodyCase_ == BodyOneofCase.WorkerFault) hash ^= WorkerFault.GetHashCode();
      hash ^= (int) bodyCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ProtocolVersion != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(ProtocolVersion);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SessionId);
      }
      if (Sequence != 0UL) {
        output.WriteRawTag(24);
        output.WriteUInt64(Sequence);
      }
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(CorrelationId);
      }
      if (bodyCase_ == BodyOneofCase.GatewayHello) {
        output.WriteRawTag(82);
        output.WriteMessage(GatewayHello);
      }
      if (bodyCase_ == BodyOneofCase.WorkerHello) {
        output.WriteRawTag(90);
        output.WriteMessage(WorkerHello);
      }
      if (bodyCase_ == BodyOneofCase.WorkerReady) {
        output.WriteRawTag(98);
        output.WriteMessage(WorkerReady);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCommand) {
        output.WriteRawTag(106);
        output.WriteMessage(WorkerCommand);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCommandReply) {
        output.WriteRawTag(114);
        output.WriteMessage(WorkerCommandReply);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCancel) {
        output.WriteRawTag(122);
        output.WriteMessage(WorkerCancel);
      }
      if (bodyCase_ == BodyOneofCase.WorkerShutdown) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(WorkerShutdown);
      }
      if (bodyCase_ == BodyOneofCase.WorkerShutdownAck) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(WorkerShutdownAck);
      }
      if (bodyCase_ == BodyOneofCase.WorkerEvent) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(WorkerEvent);
      }
      if (bodyCase_ == BodyOneofCase.WorkerHeartbeat) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(WorkerHeartbeat);
      }
      if (bodyCase_ == BodyOneofCase.WorkerFault) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(WorkerFault);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ProtocolVersion != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(ProtocolVersion);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SessionId);
      }
      if (Sequence != 0UL) {
        output.WriteRawTag(24);
        output.WriteUInt64(Sequence);
      }
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(CorrelationId);
      }
      if (bodyCase_ == BodyOneofCase.GatewayHello) {
        output.WriteRawTag(82);
        output.WriteMessage(GatewayHello);
      }
      if (bodyCase_ == BodyOneofCase.WorkerHello) {
        output.WriteRawTag(90);
        output.WriteMessage(WorkerHello);
      }
      if (bodyCase_ == BodyOneofCase.WorkerReady) {
        output.WriteRawTag(98);
        output.WriteMessage(WorkerReady);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCommand) {
        output.WriteRawTag(106);
        output.WriteMessage(WorkerCommand);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCommandReply) {
        output.WriteRawTag(114);
        output.WriteMessage(WorkerCommandReply);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCancel) {
        output.WriteRawTag(122);
        output.WriteMessage(WorkerCancel);
      }
      if (bodyCase_ == BodyOneofCase.WorkerShutdown) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(WorkerShutdown);
      }
      if (bodyCase_ == BodyOneofCase.WorkerShutdownAck) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(WorkerShutdownAck);
      }
      if (bodyCase_ == BodyOneofCase.WorkerEvent) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(WorkerEvent);
      }
      if (bodyCase_ == BodyOneofCase.WorkerHeartbeat) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(WorkerHeartbeat);
      }
      if (bodyCase_ == BodyOneofCase.WorkerFault) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(WorkerFault);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ProtocolVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ProtocolVersion);
      }
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (Sequence != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Sequence);
      }
      if (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (bodyCase_ == BodyOneofCase.GatewayHello) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GatewayHello);
      }
      if (bodyCase_ == BodyOneofCase.WorkerHello) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WorkerHello);
      }
      if (bodyCase_ == BodyOneofCase.WorkerReady) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WorkerReady);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCommand) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WorkerCommand);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCommandReply) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WorkerCommandReply);
      }
      if (bodyCase_ == BodyOneofCase.WorkerCancel) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WorkerCancel);
      }
      if (bodyCase_ == BodyOneofCase.WorkerShutdown) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WorkerShutdown);
      }
      if (bodyCase_ == BodyOneofCase.WorkerShutdownAck) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WorkerShutdownAck);
      }
      if (bodyCase_ == BodyOneofCase.WorkerEvent) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WorkerEvent);
      }
      if (bodyCase_ == BodyOneofCase.WorkerHeartbeat) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WorkerHeartbeat);
      }
      if (bodyCase_ == BodyOneofCase.WorkerFault) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WorkerFault);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerEnvelope other) {
      if (other == null) {
        return;
      }
      if (other.ProtocolVersion != 0) {
        ProtocolVersion = other.ProtocolVersion;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.Sequence != 0UL) {
        Sequence = other.Sequence;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      switch (other.BodyCase) {
        case BodyOneofCase.GatewayHello:
          if (GatewayHello == null) {
            GatewayHello = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello();
          }
          GatewayHello.MergeFrom(other.GatewayHello);
          break;
        case BodyOneofCase.WorkerHello:
          if (WorkerHello == null) {
            WorkerHello = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello();
          }
          WorkerHello.MergeFrom(other.WorkerHello);
          break;
        case BodyOneofCase.WorkerReady:
          if (WorkerReady == null) {
            WorkerReady = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady();
          }
          WorkerReady.MergeFrom(other.WorkerReady);
          break;
        case BodyOneofCase.WorkerCommand:
          if (WorkerCommand == null) {
            WorkerCommand = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand();
          }
          WorkerCommand.MergeFrom(other.WorkerCommand);
          break;
        case BodyOneofCase.WorkerCommandReply:
          if (WorkerCommandReply == null) {
            WorkerCommandReply = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply();
          }
          WorkerCommandReply.MergeFrom(other.WorkerCommandReply);
          break;
        case BodyOneofCase.WorkerCancel:
          if (WorkerCancel == null) {
            WorkerCancel = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel();
          }
          WorkerCancel.MergeFrom(other.WorkerCancel);
          break;
        case BodyOneofCase.WorkerShutdown:
          if (WorkerShutdown == null) {
            WorkerShutdown = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown();
          }
          WorkerShutdown.MergeFrom(other.WorkerShutdown);
          break;
        case BodyOneofCase.WorkerShutdownAck:
          if (WorkerShutdownAck == null) {
            WorkerShutdownAck = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck();
          }
          WorkerShutdownAck.MergeFrom(other.WorkerShutdownAck);
          break;
        case BodyOneofCase.WorkerEvent:
          if (WorkerEvent == null) {
            WorkerEvent = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent();
          }
          WorkerEvent.MergeFrom(other.WorkerEvent);
          break;
        case BodyOneofCase.WorkerHeartbeat:
          if (WorkerHeartbeat == null) {
            WorkerHeartbeat = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat();
          }
          WorkerHeartbeat.MergeFrom(other.WorkerHeartbeat);
          break;
        case BodyOneofCase.WorkerFault:
          if (WorkerFault == null) {
            WorkerFault = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault();
          }
          WorkerFault.MergeFrom(other.WorkerFault);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ProtocolVersion = input.ReadUInt32();
            break;
          }
          case 18: {
            SessionId = input.ReadString();
            break;
          }
          case 24: {
            Sequence = input.ReadUInt64();
            break;
          }
          case 34: {
            CorrelationId = input.ReadString();
            break;
          }
          case 82: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello();
            if (bodyCase_ == BodyOneofCase.GatewayHello) {
              subBuilder.MergeFrom(GatewayHello);
            }
            input.ReadMessage(subBuilder);
            GatewayHello = subBuilder;
            break;
          }
          case 90: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello();
            if (bodyCase_ == BodyOneofCase.WorkerHello) {
              subBuilder.MergeFrom(WorkerHello);
            }
            input.ReadMessage(subBuilder);
            WorkerHello = subBuilder;
            break;
          }
          case 98: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady();
            if (bodyCase_ == BodyOneofCase.WorkerReady) {
              subBuilder.MergeFrom(WorkerReady);
            }
            input.ReadMessage(subBuilder);
            WorkerReady = subBuilder;
            break;
          }
          case 106: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand();
            if (bodyCase_ == BodyOneofCase.WorkerCommand) {
              subBuilder.MergeFrom(WorkerCommand);
            }
            input.ReadMessage(subBuilder);
            WorkerCommand = subBuilder;
            break;
          }
          case 114: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply();
            if (bodyCase_ == BodyOneofCase.WorkerCommandReply) {
              subBuilder.MergeFrom(WorkerCommandReply);
            }
            input.ReadMessage(subBuilder);
            WorkerCommandReply = subBuilder;
            break;
          }
          case 122: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel();
            if (bodyCase_ == BodyOneofCase.WorkerCancel) {
              subBuilder.MergeFrom(WorkerCancel);
            }
            input.ReadMessage(subBuilder);
            WorkerCancel = subBuilder;
            break;
          }
          case 130: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown();
            if (bodyCase_ == BodyOneofCase.WorkerShutdown) {
              subBuilder.MergeFrom(WorkerShutdown);
            }
            input.ReadMessage(subBuilder);
            WorkerShutdown = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck();
            if (bodyCase_ == BodyOneofCase.WorkerShutdownAck) {
              subBuilder.MergeFrom(WorkerShutdownAck);
            }
            input.ReadMessage(subBuilder);
            WorkerShutdownAck = subBuilder;
            break;
          }
          case 146: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent();
            if (bodyCase_ == BodyOneofCase.WorkerEvent) {
              subBuilder.MergeFrom(WorkerEvent);
            }
            input.ReadMessage(subBuilder);
            WorkerEvent = subBuilder;
            break;
          }
          case 154: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat();
            if (bodyCase_ == BodyOneofCase.WorkerHeartbeat) {
              subBuilder.MergeFrom(WorkerHeartbeat);
            }
            input.ReadMessage(subBuilder);
            WorkerHeartbeat = subBuilder;
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault();
            if (bodyCase_ == BodyOneofCase.WorkerFault) {
              subBuilder.MergeFrom(WorkerFault);
            }
            input.ReadMessage(subBuilder);
            WorkerFault = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ProtocolVersion = input.ReadUInt32();
            break;
          }
          case 18: {
            SessionId = input.ReadString();
            break;
          }
          case 24: {
            Sequence = input.ReadUInt64();
            break;
          }
          case 34: {
            CorrelationId = input.ReadString();
            break;
          }
          case 82: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GatewayHello();
            if (bodyCase_ == BodyOneofCase.GatewayHello) {
              subBuilder.MergeFrom(GatewayHello);
            }
            input.ReadMessage(subBuilder);
            GatewayHello = subBuilder;
            break;
          }
          case 90: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHello();
            if (bodyCase_ == BodyOneofCase.WorkerHello) {
              subBuilder.MergeFrom(WorkerHello);
            }
            input.ReadMessage(subBuilder);
            WorkerHello = subBuilder;
            break;
          }
          case 98: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerReady();
            if (bodyCase_ == BodyOneofCase.WorkerReady) {
              subBuilder.MergeFrom(WorkerReady);
            }
            input.ReadMessage(subBuilder);
            WorkerReady = subBuilder;
            break;
          }
          case 106: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommand();
            if (bodyCase_ == BodyOneofCase.WorkerCommand) {
              subBuilder.MergeFrom(WorkerCommand);
            }
            input.ReadMessage(subBuilder);
            WorkerCommand = subBuilder;
            break;
          }
          case 114: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCommandReply();
            if (bodyCase_ == BodyOneofCase.WorkerCommandReply) {
              subBuilder.MergeFrom(WorkerCommandReply);
            }
            input.ReadMessage(subBuilder);
            WorkerCommandReply = subBuilder;
            break;
          }
          case 122: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerCancel();
            if (bodyCase_ == BodyOneofCase.WorkerCancel) {
              subBuilder.MergeFrom(WorkerCancel);
            }
            input.ReadMessage(subBuilder);
            WorkerCancel = subBuilder;
            break;
          }
          case 130: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdown();
            if (bodyCase_ == BodyOneofCase.WorkerShutdown) {
              subBuilder.MergeFrom(WorkerShutdown);
            }
            input.ReadMessage(subBuilder);
            WorkerShutdown = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerShutdownAck();
            if (bodyCase_ == BodyOneofCase.WorkerShutdownAck) {
              subBuilder.MergeFrom(WorkerShutdownAck);
            }
            input.ReadMessage(subBuilder);
            WorkerShutdownAck = subBuilder;
            break;
          }
          case 146: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerEvent();
            if (bodyCase_ == BodyOneofCase.WorkerEvent) {
              subBuilder.MergeFrom(WorkerEvent);
            }
            input.ReadMessage(subBuilder);
            WorkerEvent = subBuilder;
            break;
          }
          case 154: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerHeartbeat();
            if (bodyCase_ == BodyOneofCase.WorkerHeartbeat) {
              subBuilder.MergeFrom(WorkerHeartbeat);
            }
            input.ReadMessage(subBuilder);
            WorkerHeartbeat = subBuilder;
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFault();
            if (bodyCase_ == BodyOneofCase.WorkerFault) {
              subBuilder.MergeFrom(WorkerFault);
            }
            input.ReadMessage(subBuilder);
            WorkerFault = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class GatewayHello : pb::IMessage<GatewayHello>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GatewayHello> _parser = new pb::MessageParser<GatewayHello>(() => new GatewayHello());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GatewayHello> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GatewayHello() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GatewayHello(GatewayHello other) : this() {
      supportedProtocolVersion_ = other.supportedProtocolVersion_;
      nonce_ = other.nonce_;
      gatewayVersion_ = other.gatewayVersion_;
      maxFrameBytes_ = other.maxFrameBytes_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GatewayHello Clone() {
      return new GatewayHello(this);
    }

    /// <summary>Field number for the "supported_protocol_version" field.</summary>
    public const int SupportedProtocolVersionFieldNumber = 1;
    private uint supportedProtocolVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint SupportedProtocolVersion {
      get { return supportedProtocolVersion_; }
      set {
        supportedProtocolVersion_ = value;
      }
    }

    /// <summary>Field number for the "nonce" field.</summary>
    public const int NonceFieldNumber = 2;
    private string nonce_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Nonce {
      get { return nonce_; }
      set {
        nonce_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "gateway_version" field.</summary>
    public const int GatewayVersionFieldNumber = 3;
    private string gatewayVersion_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string GatewayVersion {
      get { return gatewayVersion_; }
      set {
        gatewayVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "max_frame_bytes" field.</summary>
    public const int MaxFrameBytesFieldNumber = 4;
    private uint maxFrameBytes_;
    /// <summary>
    /// Maximum worker-frame payload size, in bytes, negotiated by the gateway from its
    /// configured pipe limit. The worker adopts this as its frame-protocol MaxMessageBytes
    /// instead of a hard-coded default; 0 (an older gateway that never set the field) means
    /// "use the worker's built-in default". Sits above the public gRPC cap by an
    /// envelope-overhead margin so an accepted gRPC payload always fits one worker frame.
    /// Every worker->gateway frame — events, heartbeats, faults, and control replies
    /// including DrainEvents — must serialize within this limit; reply builders truncate
    /// to fit rather than emit an oversized frame.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint MaxFrameBytes {
      get { return maxFrameBytes_; }
      set {
        maxFrameBytes_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GatewayHello);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GatewayHello other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SupportedProtocolVersion != other.SupportedProtocolVersion) return false;
      if (Nonce != other.Nonce) return false;
      if (GatewayVersion != other.GatewayVersion) return false;
      if (MaxFrameBytes != other.MaxFrameBytes) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SupportedProtocolVersion != 0) hash ^= SupportedProtocolVersion.GetHashCode();
      if (Nonce.Length != 0) hash ^= Nonce.GetHashCode();
      if (GatewayVersion.Length != 0) hash ^= GatewayVersion.GetHashCode();
      if (MaxFrameBytes != 0) hash ^= MaxFrameBytes.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SupportedProtocolVersion != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(SupportedProtocolVersion);
      }
      if (Nonce.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Nonce);
      }
      if (GatewayVersion.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(GatewayVersion);
      }
      if (MaxFrameBytes != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(MaxFrameBytes);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SupportedProtocolVersion != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(SupportedProtocolVersion);
      }
      if (Nonce.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Nonce);
      }
      if (GatewayVersion.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(GatewayVersion);
      }
      if (MaxFrameBytes != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(MaxFrameBytes);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SupportedProtocolVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SupportedProtocolVersion);
      }
      if (Nonce.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Nonce);
      }
      if (GatewayVersion.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GatewayVersion);
      }
      if (MaxFrameBytes != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MaxFrameBytes);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GatewayHello other) {
      if (other == null) {
        return;
      }
      if (other.SupportedProtocolVersion != 0) {
        SupportedProtocolVersion = other.SupportedProtocolVersion;
      }
      if (other.Nonce.Length != 0) {
        Nonce = other.Nonce;
      }
      if (other.GatewayVersion.Length != 0) {
        GatewayVersion = other.GatewayVersion;
      }
      if (other.MaxFrameBytes != 0) {
        MaxFrameBytes = other.MaxFrameBytes;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            SupportedProtocolVersion = input.ReadUInt32();
            break;
          }
          case 18: {
            Nonce = input.ReadString();
            break;
          }
          case 26: {
            GatewayVersion = input.ReadString();
            break;
          }
          case 32: {
            MaxFrameBytes = input.ReadUInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            SupportedProtocolVersion = input.ReadUInt32();
            break;
          }
          case 18: {
            Nonce = input.ReadString();
            break;
          }
          case 26: {
            GatewayVersion = input.ReadString();
            break;
          }
          case 32: {
            MaxFrameBytes = input.ReadUInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerHello : pb::IMessage<WorkerHello>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerHello> _parser = new pb::MessageParser<WorkerHello>(() => new WorkerHello());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerHello> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerHello() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerHello(WorkerHello other) : this() {
      protocolVersion_ = other.protocolVersion_;
      nonce_ = other.nonce_;
      workerProcessId_ = other.workerProcessId_;
      workerVersion_ = other.workerVersion_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerHello Clone() {
      return new WorkerHello(this);
    }

    /// <summary>Field number for the "protocol_version" field.</summary>
    public const int ProtocolVersionFieldNumber = 1;
    private uint protocolVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint ProtocolVersion {
      get { return protocolVersion_; }
      set {
        protocolVersion_ = value;
      }
    }

    /// <summary>Field number for the "nonce" field.</summary>
    public const int NonceFieldNumber = 2;
    private string nonce_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Nonce {
      get { return nonce_; }
      set {
        nonce_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "worker_process_id" field.</summary>
    public const int WorkerProcessIdFieldNumber = 3;
    private int workerProcessId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int WorkerProcessId {
      get { return workerProcessId_; }
      set {
        workerProcessId_ = value;
      }
    }

    /// <summary>Field number for the "worker_version" field.</summary>
    public const int WorkerVersionFieldNumber = 4;
    private string workerVersion_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string WorkerVersion {
      get { return workerVersion_; }
      set {
        workerVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerHello);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerHello other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ProtocolVersion != other.ProtocolVersion) return false;
      if (Nonce != other.Nonce) return false;
      if (WorkerProcessId != other.WorkerProcessId) return false;
      if (WorkerVersion != other.WorkerVersion) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ProtocolVersion != 0) hash ^= ProtocolVersion.GetHashCode();
      if (Nonce.Length != 0) hash ^= Nonce.GetHashCode();
      if (WorkerProcessId != 0) hash ^= WorkerProcessId.GetHashCode();
      if (WorkerVersion.Length != 0) hash ^= WorkerVersion.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ProtocolVersion != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(ProtocolVersion);
      }
      if (Nonce.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Nonce);
      }
      if (WorkerProcessId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(WorkerProcessId);
      }
      if (WorkerVersion.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(WorkerVersion);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ProtocolVersion != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(ProtocolVersion);
      }
      if (Nonce.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Nonce);
      }
      if (WorkerProcessId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(WorkerProcessId);
      }
      if (WorkerVersion.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(WorkerVersion);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ProtocolVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ProtocolVersion);
      }
      if (Nonce.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Nonce);
      }
      if (WorkerProcessId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WorkerProcessId);
      }
      if (WorkerVersion.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(WorkerVersion);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerHello other) {
      if (other == null) {
        return;
      }
      if (other.ProtocolVersion != 0) {
        ProtocolVersion = other.ProtocolVersion;
      }
      if (other.Nonce.Length != 0) {
        Nonce = other.Nonce;
      }
      if (other.WorkerProcessId != 0) {
        WorkerProcessId = other.WorkerProcessId;
      }
      if (other.WorkerVersion.Length != 0) {
        WorkerVersion = other.WorkerVersion;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ProtocolVersion = input.ReadUInt32();
            break;
          }
          case 18: {
            Nonce = input.ReadString();
            break;
          }
          case 24: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 34: {
            WorkerVersion = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ProtocolVersion = input.ReadUInt32();
            break;
          }
          case 18: {
            Nonce = input.ReadString();
            break;
          }
          case 24: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 34: {
            WorkerVersion = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerReady : pb::IMessage<WorkerReady>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerReady> _parser = new pb::MessageParser<WorkerReady>(() => new WorkerReady());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerReady> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerReady() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerReady(WorkerReady other) : this() {
      workerProcessId_ = other.workerProcessId_;
      mxaccessProgid_ = other.mxaccessProgid_;
      mxaccessClsid_ = other.mxaccessClsid_;
      readyTimestamp_ = other.readyTimestamp_ != null ? other.readyTimestamp_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerReady Clone() {
      return new WorkerReady(this);
    }

    /// <summary>Field number for the "worker_process_id" field.</summary>
    public const int WorkerProcessIdFieldNumber = 1;
    private int workerProcessId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int WorkerProcessId {
      get { return workerProcessId_; }
      set {
        workerProcessId_ = value;
      }
    }

    /// <summary>Field number for the "mxaccess_progid" field.</summary>
    public const int MxaccessProgidFieldNumber = 2;
    private string mxaccessProgid_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MxaccessProgid {
      get { return mxaccessProgid_; }
      set {
        mxaccessProgid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "mxaccess_clsid" field.</summary>
    public const int MxaccessClsidFieldNumber = 3;
    private string mxaccessClsid_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MxaccessClsid {
      get { return mxaccessClsid_; }
      set {
        mxaccessClsid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "ready_timestamp" field.</summary>
    public const int ReadyTimestampFieldNumber = 4;
    private global::Google.Protobuf.WellKnownTypes.Timestamp readyTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp ReadyTimestamp {
      get { return readyTimestamp_; }
      set {
        readyTimestamp_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerReady);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerReady other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (WorkerProcessId != other.WorkerProcessId) return false;
      if (MxaccessProgid != other.MxaccessProgid) return false;
      if (MxaccessClsid != other.MxaccessClsid) return false;
      if (!object.Equals(ReadyTimestamp, other.ReadyTimestamp)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (WorkerProcessId != 0) hash ^= WorkerProcessId.GetHashCode();
      if (MxaccessProgid.Length != 0) hash ^= MxaccessProgid.GetHashCode();
      if (MxaccessClsid.Length != 0) hash ^= MxaccessClsid.GetHashCode();
      if (readyTimestamp_ != null) hash ^= ReadyTimestamp.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (WorkerProcessId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(WorkerProcessId);
      }
      if (MxaccessProgid.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(MxaccessProgid);
      }
      if (MxaccessClsid.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(MxaccessClsid);
      }
      if (readyTimestamp_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(ReadyTimestamp);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (WorkerProcessId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(WorkerProcessId);
      }
      if (MxaccessProgid.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(MxaccessProgid);
      }
      if (MxaccessClsid.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(MxaccessClsid);
      }
      if (readyTimestamp_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(ReadyTimestamp);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (WorkerProcessId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WorkerProcessId);
      }
      if (MxaccessProgid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MxaccessProgid);
      }
      if (MxaccessClsid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MxaccessClsid);
      }
      if (readyTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ReadyTimestamp);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerReady other) {
      if (other == null) {
        return;
      }
      if (other.WorkerProcessId != 0) {
        WorkerProcessId = other.WorkerProcessId;
      }
      if (other.MxaccessProgid.Length != 0) {
        MxaccessProgid = other.MxaccessProgid;
      }
      if (other.MxaccessClsid.Length != 0) {
        MxaccessClsid = other.MxaccessClsid;
      }
      if (other.readyTimestamp_ != null) {
        if (readyTimestamp_ == null) {
          ReadyTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        ReadyTimestamp.MergeFrom(other.ReadyTimestamp);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 18: {
            MxaccessProgid = input.ReadString();
            break;
          }
          case 26: {
            MxaccessClsid = input.ReadString();
            break;
          }
          case 34: {
            if (readyTimestamp_ == null) {
              ReadyTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(ReadyTimestamp);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 18: {
            MxaccessProgid = input.ReadString();
            break;
          }
          case 26: {
            MxaccessClsid = input.ReadString();
            break;
          }
          case 34: {
            if (readyTimestamp_ == null) {
              ReadyTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(ReadyTimestamp);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerCommand : pb::IMessage<WorkerCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerCommand> _parser = new pb::MessageParser<WorkerCommand>(() => new WorkerCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCommand(WorkerCommand other) : this() {
      command_ = other.command_ != null ? other.command_.Clone() : null;
      enqueueTimestamp_ = other.enqueueTimestamp_ != null ? other.enqueueTimestamp_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCommand Clone() {
      return new WorkerCommand(this);
    }

    /// <summary>Field number for the "command" field.</summary>
    public const int CommandFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand command_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand Command {
      get { return command_; }
      set {
        command_ = value;
      }
    }

    /// <summary>Field number for the "enqueue_timestamp" field.</summary>
    public const int EnqueueTimestampFieldNumber = 2;
    private global::Google.Protobuf.WellKnownTypes.Timestamp enqueueTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp EnqueueTimestamp {
      get { return enqueueTimestamp_; }
      set {
        enqueueTimestamp_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Command, other.Command)) return false;
      if (!object.Equals(EnqueueTimestamp, other.EnqueueTimestamp)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (command_ != null) hash ^= Command.GetHashCode();
      if (enqueueTimestamp_ != null) hash ^= EnqueueTimestamp.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (command_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Command);
      }
      if (enqueueTimestamp_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(EnqueueTimestamp);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (command_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Command);
      }
      if (enqueueTimestamp_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(EnqueueTimestamp);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (command_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Command);
      }
      if (enqueueTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(EnqueueTimestamp);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerCommand other) {
      if (other == null) {
        return;
      }
      if (other.command_ != null) {
        if (command_ == null) {
          Command = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand();
        }
        Command.MergeFrom(other.Command);
      }
      if (other.enqueueTimestamp_ != null) {
        if (enqueueTimestamp_ == null) {
          EnqueueTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        EnqueueTimestamp.MergeFrom(other.EnqueueTimestamp);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (command_ == null) {
              Command = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand();
            }
            input.ReadMessage(Command);
            break;
          }
          case 18: {
            if (enqueueTimestamp_ == null) {
              EnqueueTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(EnqueueTimestamp);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (command_ == null) {
              Command = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand();
            }
            input.ReadMessage(Command);
            break;
          }
          case 18: {
            if (enqueueTimestamp_ == null) {
              EnqueueTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(EnqueueTimestamp);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerCommandReply : pb::IMessage<WorkerCommandReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerCommandReply> _parser = new pb::MessageParser<WorkerCommandReply>(() => new WorkerCommandReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerCommandReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCommandReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCommandReply(WorkerCommandReply other) : this() {
      reply_ = other.reply_ != null ? other.reply_.Clone() : null;
      completedTimestamp_ = other.completedTimestamp_ != null ? other.completedTimestamp_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCommandReply Clone() {
      return new WorkerCommandReply(this);
    }

    /// <summary>Field number for the "reply" field.</summary>
    public const int ReplyFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply reply_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply Reply {
      get { return reply_; }
      set {
        reply_ = value;
      }
    }

    /// <summary>Field number for the "completed_timestamp" field.</summary>
    public const int CompletedTimestampFieldNumber = 2;
    private global::Google.Protobuf.WellKnownTypes.Timestamp completedTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp CompletedTimestamp {
      get { return completedTimestamp_; }
      set {
        completedTimestamp_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerCommandReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerCommandReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Reply, other.Reply)) return false;
      if (!object.Equals(CompletedTimestamp, other.CompletedTimestamp)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (reply_ != null) hash ^= Reply.GetHashCode();
      if (completedTimestamp_ != null) hash ^= CompletedTimestamp.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (reply_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Reply);
      }
      if (completedTimestamp_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(CompletedTimestamp);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (reply_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Reply);
      }
      if (completedTimestamp_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(CompletedTimestamp);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (reply_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Reply);
      }
      if (completedTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CompletedTimestamp);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerCommandReply other) {
      if (other == null) {
        return;
      }
      if (other.reply_ != null) {
        if (reply_ == null) {
          Reply = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply();
        }
        Reply.MergeFrom(other.Reply);
      }
      if (other.completedTimestamp_ != null) {
        if (completedTimestamp_ == null) {
          CompletedTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        CompletedTimestamp.MergeFrom(other.CompletedTimestamp);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (reply_ == null) {
              Reply = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply();
            }
            input.ReadMessage(Reply);
            break;
          }
          case 18: {
            if (completedTimestamp_ == null) {
              CompletedTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(CompletedTimestamp);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (reply_ == null) {
              Reply = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply();
            }
            input.ReadMessage(Reply);
            break;
          }
          case 18: {
            if (completedTimestamp_ == null) {
              CompletedTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(CompletedTimestamp);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerCancel : pb::IMessage<WorkerCancel>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerCancel> _parser = new pb::MessageParser<WorkerCancel>(() => new WorkerCancel());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerCancel> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCancel() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCancel(WorkerCancel other) : this() {
      reason_ = other.reason_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerCancel Clone() {
      return new WorkerCancel(this);
    }

    /// <summary>Field number for the "reason" field.</summary>
    public const int ReasonFieldNumber = 1;
    private string reason_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Reason {
      get { return reason_; }
      set {
        reason_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerCancel);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerCancel other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Reason != other.Reason) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Reason.Length != 0) hash ^= Reason.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Reason.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Reason);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Reason.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Reason);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Reason.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Reason);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerCancel other) {
      if (other == null) {
        return;
      }
      if (other.Reason.Length != 0) {
        Reason = other.Reason;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Reason = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Reason = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerShutdown : pb::IMessage<WorkerShutdown>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerShutdown> _parser = new pb::MessageParser<WorkerShutdown>(() => new WorkerShutdown());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerShutdown> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerShutdown() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerShutdown(WorkerShutdown other) : this() {
      gracePeriod_ = other.gracePeriod_ != null ? other.gracePeriod_.Clone() : null;
      reason_ = other.reason_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerShutdown Clone() {
      return new WorkerShutdown(this);
    }

    /// <summary>Field number for the "grace_period" field.</summary>
    public const int GracePeriodFieldNumber = 1;
    private global::Google.Protobuf.WellKnownTypes.Duration gracePeriod_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Duration GracePeriod {
      get { return gracePeriod_; }
      set {
        gracePeriod_ = value;
      }
    }

    /// <summary>Field number for the "reason" field.</summary>
    public const int ReasonFieldNumber = 2;
    private string reason_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Reason {
      get { return reason_; }
      set {
        reason_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerShutdown);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerShutdown other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(GracePeriod, other.GracePeriod)) return false;
      if (Reason != other.Reason) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (gracePeriod_ != null) hash ^= GracePeriod.GetHashCode();
      if (Reason.Length != 0) hash ^= Reason.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (gracePeriod_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(GracePeriod);
      }
      if (Reason.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Reason);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (gracePeriod_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(GracePeriod);
      }
      if (Reason.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Reason);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (gracePeriod_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GracePeriod);
      }
      if (Reason.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Reason);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerShutdown other) {
      if (other == null) {
        return;
      }
      if (other.gracePeriod_ != null) {
        if (gracePeriod_ == null) {
          GracePeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
        }
        GracePeriod.MergeFrom(other.GracePeriod);
      }
      if (other.Reason.Length != 0) {
        Reason = other.Reason;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (gracePeriod_ == null) {
              GracePeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(GracePeriod);
            break;
          }
          case 18: {
            Reason = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (gracePeriod_ == null) {
              GracePeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(GracePeriod);
            break;
          }
          case 18: {
            Reason = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerShutdownAck : pb::IMessage<WorkerShutdownAck>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerShutdownAck> _parser = new pb::MessageParser<WorkerShutdownAck>(() => new WorkerShutdownAck());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerShutdownAck> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerShutdownAck() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerShutdownAck(WorkerShutdownAck other) : this() {
      status_ = other.status_ != null ? other.status_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerShutdownAck Clone() {
      return new WorkerShutdownAck(this);
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus status_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerShutdownAck);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerShutdownAck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Status, other.Status)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (status_ != null) hash ^= Status.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (status_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (status_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (status_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Status);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerShutdownAck other) {
      if (other == null) {
        return;
      }
      if (other.status_ != null) {
        if (status_ == null) {
          Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
        }
        Status.MergeFrom(other.Status);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerEvent : pb::IMessage<WorkerEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerEvent> _parser = new pb::MessageParser<WorkerEvent>(() => new WorkerEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerEvent(WorkerEvent other) : this() {
      event_ = other.event_ != null ? other.event_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerEvent Clone() {
      return new WorkerEvent(this);
    }

    /// <summary>Field number for the "event" field.</summary>
    public const int EventFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent event_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent Event {
      get { return event_; }
      set {
        event_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Event, other.Event)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (event_ != null) hash ^= Event.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (event_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Event);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (event_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Event);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (event_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Event);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerEvent other) {
      if (other == null) {
        return;
      }
      if (other.event_ != null) {
        if (event_ == null) {
          Event = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent();
        }
        Event.MergeFrom(other.Event);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (event_ == null) {
              Event = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent();
            }
            input.ReadMessage(Event);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (event_ == null) {
              Event = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent();
            }
            input.ReadMessage(Event);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerHeartbeat : pb::IMessage<WorkerHeartbeat>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerHeartbeat> _parser = new pb::MessageParser<WorkerHeartbeat>(() => new WorkerHeartbeat());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerHeartbeat> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerHeartbeat() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerHeartbeat(WorkerHeartbeat other) : this() {
      workerProcessId_ = other.workerProcessId_;
      state_ = other.state_;
      lastStaActivityTimestamp_ = other.lastStaActivityTimestamp_ != null ? other.lastStaActivityTimestamp_.Clone() : null;
      pendingCommandCount_ = other.pendingCommandCount_;
      outboundEventQueueDepth_ = other.outboundEventQueueDepth_;
      lastEventSequence_ = other.lastEventSequence_;
      currentCommandCorrelationId_ = other.currentCommandCorrelationId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerHeartbeat Clone() {
      return new WorkerHeartbeat(this);
    }

    /// <summary>Field number for the "worker_process_id" field.</summary>
    public const int WorkerProcessIdFieldNumber = 1;
    private int workerProcessId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int WorkerProcessId {
      get { return workerProcessId_; }
      set {
        workerProcessId_ = value;
      }
    }

    /// <summary>Field number for the "state" field.</summary>
    public const int StateFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState state_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState State {
      get { return state_; }
      set {
        state_ = value;
      }
    }

    /// <summary>Field number for the "last_sta_activity_timestamp" field.</summary>
    public const int LastStaActivityTimestampFieldNumber = 3;
    private global::Google.Protobuf.WellKnownTypes.Timestamp lastStaActivityTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp LastStaActivityTimestamp {
      get { return lastStaActivityTimestamp_; }
      set {
        lastStaActivityTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "pending_command_count" field.</summary>
    public const int PendingCommandCountFieldNumber = 4;
    private uint pendingCommandCount_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint PendingCommandCount {
      get { return pendingCommandCount_; }
      set {
        pendingCommandCount_ = value;
      }
    }

    /// <summary>Field number for the "outbound_event_queue_depth" field.</summary>
    public const int OutboundEventQueueDepthFieldNumber = 5;
    private uint outboundEventQueueDepth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint OutboundEventQueueDepth {
      get { return outboundEventQueueDepth_; }
      set {
        outboundEventQueueDepth_ = value;
      }
    }

    /// <summary>Field number for the "last_event_sequence" field.</summary>
    public const int LastEventSequenceFieldNumber = 6;
    private ulong lastEventSequence_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong LastEventSequence {
      get { return lastEventSequence_; }
      set {
        lastEventSequence_ = value;
      }
    }

    /// <summary>Field number for the "current_command_correlation_id" field.</summary>
    public const int CurrentCommandCorrelationIdFieldNumber = 7;
    private string currentCommandCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CurrentCommandCorrelationId {
      get { return currentCommandCorrelationId_; }
      set {
        currentCommandCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerHeartbeat);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerHeartbeat other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (WorkerProcessId != other.WorkerProcessId) return false;
      if (State != other.State) return false;
      if (!object.Equals(LastStaActivityTimestamp, other.LastStaActivityTimestamp)) return false;
      if (PendingCommandCount != other.PendingCommandCount) return false;
      if (OutboundEventQueueDepth != other.OutboundEventQueueDepth) return false;
      if (LastEventSequence != other.LastEventSequence) return false;
      if (CurrentCommandCorrelationId != other.CurrentCommandCorrelationId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (WorkerProcessId != 0) hash ^= WorkerProcessId.GetHashCode();
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState.Unspecified) hash ^= State.GetHashCode();
      if (lastStaActivityTimestamp_ != null) hash ^= LastStaActivityTimestamp.GetHashCode();
      if (PendingCommandCount != 0) hash ^= PendingCommandCount.GetHashCode();
      if (OutboundEventQueueDepth != 0) hash ^= OutboundEventQueueDepth.GetHashCode();
      if (LastEventSequence != 0UL) hash ^= LastEventSequence.GetHashCode();
      if (CurrentCommandCorrelationId.Length != 0) hash ^= CurrentCommandCorrelationId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (WorkerProcessId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(WorkerProcessId);
      }
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) State);
      }
      if (lastStaActivityTimestamp_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(LastStaActivityTimestamp);
      }
      if (PendingCommandCount != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(PendingCommandCount);
      }
      if (OutboundEventQueueDepth != 0) {
        output.WriteRawTag(40);
        output.WriteUInt32(OutboundEventQueueDepth);
      }
      if (LastEventSequence != 0UL) {
        output.WriteRawTag(48);
        output.WriteUInt64(LastEventSequence);
      }
      if (CurrentCommandCorrelationId.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(CurrentCommandCorrelationId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (WorkerProcessId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(WorkerProcessId);
      }
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) State);
      }
      if (lastStaActivityTimestamp_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(LastStaActivityTimestamp);
      }
      if (PendingCommandCount != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(PendingCommandCount);
      }
      if (OutboundEventQueueDepth != 0) {
        output.WriteRawTag(40);
        output.WriteUInt32(OutboundEventQueueDepth);
      }
      if (LastEventSequence != 0UL) {
        output.WriteRawTag(48);
        output.WriteUInt64(LastEventSequence);
      }
      if (CurrentCommandCorrelationId.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(CurrentCommandCorrelationId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (WorkerProcessId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WorkerProcessId);
      }
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) State);
      }
      if (lastStaActivityTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LastStaActivityTimestamp);
      }
      if (PendingCommandCount != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(PendingCommandCount);
      }
      if (OutboundEventQueueDepth != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OutboundEventQueueDepth);
      }
      if (LastEventSequence != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(LastEventSequence);
      }
      if (CurrentCommandCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CurrentCommandCorrelationId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerHeartbeat other) {
      if (other == null) {
        return;
      }
      if (other.WorkerProcessId != 0) {
        WorkerProcessId = other.WorkerProcessId;
      }
      if (other.State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState.Unspecified) {
        State = other.State;
      }
      if (other.lastStaActivityTimestamp_ != null) {
        if (lastStaActivityTimestamp_ == null) {
          LastStaActivityTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        LastStaActivityTimestamp.MergeFrom(other.LastStaActivityTimestamp);
      }
      if (other.PendingCommandCount != 0) {
        PendingCommandCount = other.PendingCommandCount;
      }
      if (other.OutboundEventQueueDepth != 0) {
        OutboundEventQueueDepth = other.OutboundEventQueueDepth;
      }
      if (other.LastEventSequence != 0UL) {
        LastEventSequence = other.LastEventSequence;
      }
      if (other.CurrentCommandCorrelationId.Length != 0) {
        CurrentCommandCorrelationId = other.CurrentCommandCorrelationId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 16: {
            State = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState) input.ReadEnum();
            break;
          }
          case 26: {
            if (lastStaActivityTimestamp_ == null) {
              LastStaActivityTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(LastStaActivityTimestamp);
            break;
          }
          case 32: {
            PendingCommandCount = input.ReadUInt32();
            break;
          }
          case 40: {
            OutboundEventQueueDepth = input.ReadUInt32();
            break;
          }
          case 48: {
            LastEventSequence = input.ReadUInt64();
            break;
          }
          case 58: {
            CurrentCommandCorrelationId = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 16: {
            State = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerState) input.ReadEnum();
            break;
          }
          case 26: {
            if (lastStaActivityTimestamp_ == null) {
              LastStaActivityTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(LastStaActivityTimestamp);
            break;
          }
          case 32: {
            PendingCommandCount = input.ReadUInt32();
            break;
          }
          case 40: {
            OutboundEventQueueDepth = input.ReadUInt32();
            break;
          }
          case 48: {
            LastEventSequence = input.ReadUInt64();
            break;
          }
          case 58: {
            CurrentCommandCorrelationId = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerFault : pb::IMessage<WorkerFault>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerFault> _parser = new pb::MessageParser<WorkerFault>(() => new WorkerFault());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerFault> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessWorkerReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerFault() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerFault(WorkerFault other) : this() {
      _hasBits0 = other._hasBits0;
      category_ = other.category_;
      commandMethod_ = other.commandMethod_;
      hresult_ = other.hresult_;
      exceptionType_ = other.exceptionType_;
      diagnosticMessage_ = other.diagnosticMessage_;
      protocolStatus_ = other.protocolStatus_ != null ? other.protocolStatus_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerFault Clone() {
      return new WorkerFault(this);
    }

    /// <summary>Field number for the "category" field.</summary>
    public const int CategoryFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory category_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory Category {
      get { return category_; }
      set {
        category_ = value;
      }
    }

    /// <summary>Field number for the "command_method" field.</summary>
    public const int CommandMethodFieldNumber = 2;
    private string commandMethod_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CommandMethod {
      get { return commandMethod_; }
      set {
        commandMethod_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "hresult" field.</summary>
    public const int HresultFieldNumber = 3;
    private readonly static int HresultDefaultValue = 0;

    private int hresult_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Hresult {
      get { if ((_hasBits0 & 1) != 0) { return hresult_; } else { return HresultDefaultValue; } }
      set {
        _hasBits0 |= 1;
        hresult_ = value;
      }
    }
    /// <summary>Gets whether the "hresult" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHresult {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "hresult" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHresult() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "exception_type" field.</summary>
    public const int ExceptionTypeFieldNumber = 4;
    private string exceptionType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ExceptionType {
      get { return exceptionType_; }
      set {
        exceptionType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "diagnostic_message" field.</summary>
    public const int DiagnosticMessageFieldNumber = 5;
    private string diagnosticMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DiagnosticMessage {
      get { return diagnosticMessage_; }
      set {
        diagnosticMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "protocol_status" field.</summary>
    public const int ProtocolStatusFieldNumber = 6;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus protocolStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus ProtocolStatus {
      get { return protocolStatus_; }
      set {
        protocolStatus_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerFault);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerFault other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Category != other.Category) return false;
      if (CommandMethod != other.CommandMethod) return false;
      if (Hresult != other.Hresult) return false;
      if (ExceptionType != other.ExceptionType) return false;
      if (DiagnosticMessage != other.DiagnosticMessage) return false;
      if (!object.Equals(ProtocolStatus, other.ProtocolStatus)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory.Unspecified) hash ^= Category.GetHashCode();
      if (CommandMethod.Length != 0) hash ^= CommandMethod.GetHashCode();
      if (HasHresult) hash ^= Hresult.GetHashCode();
      if (ExceptionType.Length != 0) hash ^= ExceptionType.GetHashCode();
      if (DiagnosticMessage.Length != 0) hash ^= DiagnosticMessage.GetHashCode();
      if (protocolStatus_ != null) hash ^= ProtocolStatus.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Category);
      }
      if (CommandMethod.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CommandMethod);
      }
      if (HasHresult) {
        output.WriteRawTag(24);
        output.WriteInt32(Hresult);
      }
      if (ExceptionType.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(ExceptionType);
      }
      if (DiagnosticMessage.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(DiagnosticMessage);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(ProtocolStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Category);
      }
      if (CommandMethod.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CommandMethod);
      }
      if (HasHresult) {
        output.WriteRawTag(24);
        output.WriteInt32(Hresult);
      }
      if (ExceptionType.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(ExceptionType);
      }
      if (DiagnosticMessage.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(DiagnosticMessage);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(ProtocolStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Category);
      }
      if (CommandMethod.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CommandMethod);
      }
      if (HasHresult) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult);
      }
      if (ExceptionType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ExceptionType);
      }
      if (DiagnosticMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DiagnosticMessage);
      }
      if (protocolStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProtocolStatus);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerFault other) {
      if (other == null) {
        return;
      }
      if (other.Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory.Unspecified) {
        Category = other.Category;
      }
      if (other.CommandMethod.Length != 0) {
        CommandMethod = other.CommandMethod;
      }
      if (other.HasHresult) {
        Hresult = other.Hresult;
      }
      if (other.ExceptionType.Length != 0) {
        ExceptionType = other.ExceptionType;
      }
      if (other.DiagnosticMessage.Length != 0) {
        DiagnosticMessage = other.DiagnosticMessage;
      }
      if (other.protocolStatus_ != null) {
        if (protocolStatus_ == null) {
          ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
        }
        ProtocolStatus.MergeFrom(other.ProtocolStatus);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Category = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory) input.ReadEnum();
            break;
          }
          case 18: {
            CommandMethod = input.ReadString();
            break;
          }
          case 24: {
            Hresult = input.ReadInt32();
            break;
          }
          case 34: {
            ExceptionType = input.ReadString();
            break;
          }
          case 42: {
            DiagnosticMessage = input.ReadString();
            break;
          }
          case 50: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Category = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerFaultCategory) input.ReadEnum();
            break;
          }
          case 18: {
            CommandMethod = input.ReadString();
            break;
          }
          case 24: {
            Hresult = input.ReadInt32();
            break;
          }
          case 34: {
            ExceptionType = input.ReadString();
            break;
          }
          case 42: {
            DiagnosticMessage = input.ReadString();
            break;
          }
          case 50: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
