// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: channel_service.proto

#ifndef PROTOBUF_channel_5fservice_2eproto__INCLUDED
#define PROTOBUF_channel_5fservice_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2006000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 2006001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/unknown_field_set.h>
#include "account_types.pb.h"
#include "entity_types.pb.h"
#include "channel_types.pb.h"
#include "rpc_types.pb.h"
#include "ServiceBase.h"
#include "MessageBuffer.h"
#include <functional>
#include <type_traits>
// @@protoc_insertion_point(includes)

namespace bgs {
namespace protocol {
namespace channel {
namespace v1 {

// Internal implementation detail -- do not call these.
void protobuf_AddDesc_channel_5fservice_2eproto();
void protobuf_AssignDesc_channel_5fservice_2eproto();
void protobuf_ShutdownFile_channel_5fservice_2eproto();

class RemoveMemberRequest;
class SendMessageRequest;
class UpdateChannelStateRequest;
class UpdateMemberStateRequest;
class DissolveRequest;
class JoinNotification;
class MemberAddedNotification;
class LeaveNotification;
class MemberRemovedNotification;
class SendMessageNotification;
class UpdateChannelStateNotification;
class UpdateMemberStateNotification;

// ===================================================================

class RemoveMemberRequest : public ::google::protobuf::Message {
 public:
  RemoveMemberRequest();
  virtual ~RemoveMemberRequest();

  RemoveMemberRequest(const RemoveMemberRequest& from);

  inline RemoveMemberRequest& operator=(const RemoveMemberRequest& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const RemoveMemberRequest& default_instance();

  void Swap(RemoveMemberRequest* other);

  // implements Message ----------------------------------------------

  RemoveMemberRequest* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const RemoveMemberRequest& from);
  void MergeFrom(const RemoveMemberRequest& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.EntityId member_id = 2;
  inline bool has_member_id() const;
  inline void clear_member_id();
  static const int kMemberIdFieldNumber = 2;
  inline const ::bgs::protocol::EntityId& member_id() const;
  inline ::bgs::protocol::EntityId* mutable_member_id();
  inline ::bgs::protocol::EntityId* release_member_id();
  inline void set_allocated_member_id(::bgs::protocol::EntityId* member_id);

  // optional uint32 reason = 3;
  inline bool has_reason() const;
  inline void clear_reason();
  static const int kReasonFieldNumber = 3;
  inline ::google::protobuf::uint32 reason() const;
  inline void set_reason(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.RemoveMemberRequest)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_member_id();
  inline void clear_has_member_id();
  inline void set_has_reason();
  inline void clear_has_reason();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::EntityId* member_id_;
  ::google::protobuf::uint32 reason_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static RemoveMemberRequest* default_instance_;
};
// -------------------------------------------------------------------

class SendMessageRequest : public ::google::protobuf::Message {
 public:
  SendMessageRequest();
  virtual ~SendMessageRequest();

  SendMessageRequest(const SendMessageRequest& from);

  inline SendMessageRequest& operator=(const SendMessageRequest& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const SendMessageRequest& default_instance();

  void Swap(SendMessageRequest* other);

  // implements Message ----------------------------------------------

  SendMessageRequest* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const SendMessageRequest& from);
  void MergeFrom(const SendMessageRequest& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.channel.v1.Message message = 2;
  inline bool has_message() const;
  inline void clear_message();
  static const int kMessageFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::Message& message() const;
  inline ::bgs::protocol::channel::v1::Message* mutable_message();
  inline ::bgs::protocol::channel::v1::Message* release_message();
  inline void set_allocated_message(::bgs::protocol::channel::v1::Message* message);

  // optional uint64 required_privileges = 3 [default = 0];
  inline bool has_required_privileges() const;
  inline void clear_required_privileges();
  static const int kRequiredPrivilegesFieldNumber = 3;
  inline ::google::protobuf::uint64 required_privileges() const;
  inline void set_required_privileges(::google::protobuf::uint64 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.SendMessageRequest)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_message();
  inline void clear_has_message();
  inline void set_has_required_privileges();
  inline void clear_has_required_privileges();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::channel::v1::Message* message_;
  ::google::protobuf::uint64 required_privileges_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static SendMessageRequest* default_instance_;
};
// -------------------------------------------------------------------

class UpdateChannelStateRequest : public ::google::protobuf::Message {
 public:
  UpdateChannelStateRequest();
  virtual ~UpdateChannelStateRequest();

  UpdateChannelStateRequest(const UpdateChannelStateRequest& from);

  inline UpdateChannelStateRequest& operator=(const UpdateChannelStateRequest& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const UpdateChannelStateRequest& default_instance();

  void Swap(UpdateChannelStateRequest* other);

  // implements Message ----------------------------------------------

  UpdateChannelStateRequest* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const UpdateChannelStateRequest& from);
  void MergeFrom(const UpdateChannelStateRequest& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.channel.v1.ChannelState state_change = 2;
  inline bool has_state_change() const;
  inline void clear_state_change();
  static const int kStateChangeFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::ChannelState& state_change() const;
  inline ::bgs::protocol::channel::v1::ChannelState* mutable_state_change();
  inline ::bgs::protocol::channel::v1::ChannelState* release_state_change();
  inline void set_allocated_state_change(::bgs::protocol::channel::v1::ChannelState* state_change);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.UpdateChannelStateRequest)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_state_change();
  inline void clear_has_state_change();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::channel::v1::ChannelState* state_change_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static UpdateChannelStateRequest* default_instance_;
};
// -------------------------------------------------------------------

class UpdateMemberStateRequest : public ::google::protobuf::Message {
 public:
  UpdateMemberStateRequest();
  virtual ~UpdateMemberStateRequest();

  UpdateMemberStateRequest(const UpdateMemberStateRequest& from);

  inline UpdateMemberStateRequest& operator=(const UpdateMemberStateRequest& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const UpdateMemberStateRequest& default_instance();

  void Swap(UpdateMemberStateRequest* other);

  // implements Message ----------------------------------------------

  UpdateMemberStateRequest* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const UpdateMemberStateRequest& from);
  void MergeFrom(const UpdateMemberStateRequest& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // repeated .bgs.protocol.channel.v1.Member state_change = 2;
  inline int state_change_size() const;
  inline void clear_state_change();
  static const int kStateChangeFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::Member& state_change(int index) const;
  inline ::bgs::protocol::channel::v1::Member* mutable_state_change(int index);
  inline ::bgs::protocol::channel::v1::Member* add_state_change();
  inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >&
      state_change() const;
  inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >*
      mutable_state_change();

  // repeated uint32 removed_role = 3 [packed = true];
  inline int removed_role_size() const;
  inline void clear_removed_role();
  static const int kRemovedRoleFieldNumber = 3;
  inline ::google::protobuf::uint32 removed_role(int index) const;
  inline void set_removed_role(int index, ::google::protobuf::uint32 value);
  inline void add_removed_role(::google::protobuf::uint32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
      removed_role() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
      mutable_removed_role();

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.UpdateMemberStateRequest)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member > state_change_;
  ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > removed_role_;
  mutable int _removed_role_cached_byte_size_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static UpdateMemberStateRequest* default_instance_;
};
// -------------------------------------------------------------------

class DissolveRequest : public ::google::protobuf::Message {
 public:
  DissolveRequest();
  virtual ~DissolveRequest();

  DissolveRequest(const DissolveRequest& from);

  inline DissolveRequest& operator=(const DissolveRequest& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const DissolveRequest& default_instance();

  void Swap(DissolveRequest* other);

  // implements Message ----------------------------------------------

  DissolveRequest* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const DissolveRequest& from);
  void MergeFrom(const DissolveRequest& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // optional uint32 reason = 2;
  inline bool has_reason() const;
  inline void clear_reason();
  static const int kReasonFieldNumber = 2;
  inline ::google::protobuf::uint32 reason() const;
  inline void set_reason(::google::protobuf::uint32 value);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.DissolveRequest)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_reason();
  inline void clear_has_reason();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::google::protobuf::uint32 reason_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static DissolveRequest* default_instance_;
};
// -------------------------------------------------------------------

class JoinNotification : public ::google::protobuf::Message {
 public:
  JoinNotification();
  virtual ~JoinNotification();

  JoinNotification(const JoinNotification& from);

  inline JoinNotification& operator=(const JoinNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const JoinNotification& default_instance();

  void Swap(JoinNotification* other);

  // implements Message ----------------------------------------------

  JoinNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const JoinNotification& from);
  void MergeFrom(const JoinNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.channel.v1.Member self = 1;
  inline bool has_self() const;
  inline void clear_self();
  static const int kSelfFieldNumber = 1;
  inline const ::bgs::protocol::channel::v1::Member& self() const;
  inline ::bgs::protocol::channel::v1::Member* mutable_self();
  inline ::bgs::protocol::channel::v1::Member* release_self();
  inline void set_allocated_self(::bgs::protocol::channel::v1::Member* self);

  // repeated .bgs.protocol.channel.v1.Member member = 2;
  inline int member_size() const;
  inline void clear_member();
  static const int kMemberFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::Member& member(int index) const;
  inline ::bgs::protocol::channel::v1::Member* mutable_member(int index);
  inline ::bgs::protocol::channel::v1::Member* add_member();
  inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >&
      member() const;
  inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >*
      mutable_member();

  // required .bgs.protocol.channel.v1.ChannelState channel_state = 3;
  inline bool has_channel_state() const;
  inline void clear_channel_state();
  static const int kChannelStateFieldNumber = 3;
  inline const ::bgs::protocol::channel::v1::ChannelState& channel_state() const;
  inline ::bgs::protocol::channel::v1::ChannelState* mutable_channel_state();
  inline ::bgs::protocol::channel::v1::ChannelState* release_channel_state();
  inline void set_allocated_channel_state(::bgs::protocol::channel::v1::ChannelState* channel_state);

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 4;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 5;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 5;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.JoinNotification)
 private:
  inline void set_has_self();
  inline void clear_has_self();
  inline void set_has_channel_state();
  inline void clear_has_channel_state();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::channel::v1::Member* self_;
  ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member > member_;
  ::bgs::protocol::channel::v1::ChannelState* channel_state_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static JoinNotification* default_instance_;
};
// -------------------------------------------------------------------

class MemberAddedNotification : public ::google::protobuf::Message {
 public:
  MemberAddedNotification();
  virtual ~MemberAddedNotification();

  MemberAddedNotification(const MemberAddedNotification& from);

  inline MemberAddedNotification& operator=(const MemberAddedNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MemberAddedNotification& default_instance();

  void Swap(MemberAddedNotification* other);

  // implements Message ----------------------------------------------

  MemberAddedNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MemberAddedNotification& from);
  void MergeFrom(const MemberAddedNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // required .bgs.protocol.channel.v1.Member member = 1;
  inline bool has_member() const;
  inline void clear_member();
  static const int kMemberFieldNumber = 1;
  inline const ::bgs::protocol::channel::v1::Member& member() const;
  inline ::bgs::protocol::channel::v1::Member* mutable_member();
  inline ::bgs::protocol::channel::v1::Member* release_member();
  inline void set_allocated_member(::bgs::protocol::channel::v1::Member* member);

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 2;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 3;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 3;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.MemberAddedNotification)
 private:
  inline void set_has_member();
  inline void clear_has_member();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::channel::v1::Member* member_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static MemberAddedNotification* default_instance_;
};
// -------------------------------------------------------------------

class LeaveNotification : public ::google::protobuf::Message {
 public:
  LeaveNotification();
  virtual ~LeaveNotification();

  LeaveNotification(const LeaveNotification& from);

  inline LeaveNotification& operator=(const LeaveNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const LeaveNotification& default_instance();

  void Swap(LeaveNotification* other);

  // implements Message ----------------------------------------------

  LeaveNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const LeaveNotification& from);
  void MergeFrom(const LeaveNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.EntityId member_id = 2 [deprecated = true];
  inline bool has_member_id() const PROTOBUF_DEPRECATED;
  inline void clear_member_id() PROTOBUF_DEPRECATED;
  static const int kMemberIdFieldNumber = 2;
  inline const ::bgs::protocol::EntityId& member_id() const PROTOBUF_DEPRECATED;
  inline ::bgs::protocol::EntityId* mutable_member_id() PROTOBUF_DEPRECATED;
  inline ::bgs::protocol::EntityId* release_member_id() PROTOBUF_DEPRECATED;
  inline void set_allocated_member_id(::bgs::protocol::EntityId* member_id) PROTOBUF_DEPRECATED;

  // optional uint32 reason = 3;
  inline bool has_reason() const;
  inline void clear_reason();
  static const int kReasonFieldNumber = 3;
  inline ::google::protobuf::uint32 reason() const;
  inline void set_reason(::google::protobuf::uint32 value);

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 4;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 5;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 5;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.LeaveNotification)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_member_id();
  inline void clear_has_member_id();
  inline void set_has_reason();
  inline void clear_has_reason();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::EntityId* member_id_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  ::google::protobuf::uint32 reason_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static LeaveNotification* default_instance_;
};
// -------------------------------------------------------------------

class MemberRemovedNotification : public ::google::protobuf::Message {
 public:
  MemberRemovedNotification();
  virtual ~MemberRemovedNotification();

  MemberRemovedNotification(const MemberRemovedNotification& from);

  inline MemberRemovedNotification& operator=(const MemberRemovedNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const MemberRemovedNotification& default_instance();

  void Swap(MemberRemovedNotification* other);

  // implements Message ----------------------------------------------

  MemberRemovedNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const MemberRemovedNotification& from);
  void MergeFrom(const MemberRemovedNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.EntityId member_id = 2;
  inline bool has_member_id() const;
  inline void clear_member_id();
  static const int kMemberIdFieldNumber = 2;
  inline const ::bgs::protocol::EntityId& member_id() const;
  inline ::bgs::protocol::EntityId* mutable_member_id();
  inline ::bgs::protocol::EntityId* release_member_id();
  inline void set_allocated_member_id(::bgs::protocol::EntityId* member_id);

  // optional uint32 reason = 3;
  inline bool has_reason() const;
  inline void clear_reason();
  static const int kReasonFieldNumber = 3;
  inline ::google::protobuf::uint32 reason() const;
  inline void set_reason(::google::protobuf::uint32 value);

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 4;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 5;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 5;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.MemberRemovedNotification)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_member_id();
  inline void clear_has_member_id();
  inline void set_has_reason();
  inline void clear_has_reason();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::EntityId* member_id_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  ::google::protobuf::uint32 reason_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static MemberRemovedNotification* default_instance_;
};
// -------------------------------------------------------------------

class SendMessageNotification : public ::google::protobuf::Message {
 public:
  SendMessageNotification();
  virtual ~SendMessageNotification();

  SendMessageNotification(const SendMessageNotification& from);

  inline SendMessageNotification& operator=(const SendMessageNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const SendMessageNotification& default_instance();

  void Swap(SendMessageNotification* other);

  // implements Message ----------------------------------------------

  SendMessageNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const SendMessageNotification& from);
  void MergeFrom(const SendMessageNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.channel.v1.Message message = 2;
  inline bool has_message() const;
  inline void clear_message();
  static const int kMessageFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::Message& message() const;
  inline ::bgs::protocol::channel::v1::Message* mutable_message();
  inline ::bgs::protocol::channel::v1::Message* release_message();
  inline void set_allocated_message(::bgs::protocol::channel::v1::Message* message);

  // optional uint64 required_privileges = 3 [default = 0];
  inline bool has_required_privileges() const;
  inline void clear_required_privileges();
  static const int kRequiredPrivilegesFieldNumber = 3;
  inline ::google::protobuf::uint64 required_privileges() const;
  inline void set_required_privileges(::google::protobuf::uint64 value);

  // optional string battle_tag = 4;
  inline bool has_battle_tag() const;
  inline void clear_battle_tag();
  static const int kBattleTagFieldNumber = 4;
  inline const ::std::string& battle_tag() const;
  inline void set_battle_tag(const ::std::string& value);
  inline void set_battle_tag(const char* value);
  inline void set_battle_tag(const char* value, size_t size);
  inline ::std::string* mutable_battle_tag();
  inline ::std::string* release_battle_tag();
  inline void set_allocated_battle_tag(::std::string* battle_tag);

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 5;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 5;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 6;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 6;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.SendMessageNotification)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_message();
  inline void clear_has_message();
  inline void set_has_required_privileges();
  inline void clear_has_required_privileges();
  inline void set_has_battle_tag();
  inline void clear_has_battle_tag();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::channel::v1::Message* message_;
  ::google::protobuf::uint64 required_privileges_;
  ::std::string* battle_tag_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static SendMessageNotification* default_instance_;
};
// -------------------------------------------------------------------

class UpdateChannelStateNotification : public ::google::protobuf::Message {
 public:
  UpdateChannelStateNotification();
  virtual ~UpdateChannelStateNotification();

  UpdateChannelStateNotification(const UpdateChannelStateNotification& from);

  inline UpdateChannelStateNotification& operator=(const UpdateChannelStateNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const UpdateChannelStateNotification& default_instance();

  void Swap(UpdateChannelStateNotification* other);

  // implements Message ----------------------------------------------

  UpdateChannelStateNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const UpdateChannelStateNotification& from);
  void MergeFrom(const UpdateChannelStateNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // required .bgs.protocol.channel.v1.ChannelState state_change = 2;
  inline bool has_state_change() const;
  inline void clear_state_change();
  static const int kStateChangeFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::ChannelState& state_change() const;
  inline ::bgs::protocol::channel::v1::ChannelState* mutable_state_change();
  inline ::bgs::protocol::channel::v1::ChannelState* release_state_change();
  inline void set_allocated_state_change(::bgs::protocol::channel::v1::ChannelState* state_change);

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 3;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 3;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 4;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 4;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.UpdateChannelStateNotification)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_state_change();
  inline void clear_has_state_change();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::bgs::protocol::channel::v1::ChannelState* state_change_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static UpdateChannelStateNotification* default_instance_;
};
// -------------------------------------------------------------------

class UpdateMemberStateNotification : public ::google::protobuf::Message {
 public:
  UpdateMemberStateNotification();
  virtual ~UpdateMemberStateNotification();

  UpdateMemberStateNotification(const UpdateMemberStateNotification& from);

  inline UpdateMemberStateNotification& operator=(const UpdateMemberStateNotification& from) {
    CopyFrom(from);
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
    return _unknown_fields_;
  }

  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
    return &_unknown_fields_;
  }

  static const ::google::protobuf::Descriptor* descriptor();
  static const UpdateMemberStateNotification& default_instance();

  void Swap(UpdateMemberStateNotification* other);

  // implements Message ----------------------------------------------

  UpdateMemberStateNotification* New() const;
  void CopyFrom(const ::google::protobuf::Message& from);
  void MergeFrom(const ::google::protobuf::Message& from);
  void CopyFrom(const UpdateMemberStateNotification& from);
  void MergeFrom(const UpdateMemberStateNotification& from);
  void Clear();
  bool IsInitialized() const;

  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  ::google::protobuf::Metadata GetMetadata() const;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // optional .bgs.protocol.EntityId agent_id = 1;
  inline bool has_agent_id() const;
  inline void clear_agent_id();
  static const int kAgentIdFieldNumber = 1;
  inline const ::bgs::protocol::EntityId& agent_id() const;
  inline ::bgs::protocol::EntityId* mutable_agent_id();
  inline ::bgs::protocol::EntityId* release_agent_id();
  inline void set_allocated_agent_id(::bgs::protocol::EntityId* agent_id);

  // repeated .bgs.protocol.channel.v1.Member state_change = 2;
  inline int state_change_size() const;
  inline void clear_state_change();
  static const int kStateChangeFieldNumber = 2;
  inline const ::bgs::protocol::channel::v1::Member& state_change(int index) const;
  inline ::bgs::protocol::channel::v1::Member* mutable_state_change(int index);
  inline ::bgs::protocol::channel::v1::Member* add_state_change();
  inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >&
      state_change() const;
  inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >*
      mutable_state_change();

  // optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
  inline bool has_channel_id() const;
  inline void clear_channel_id();
  static const int kChannelIdFieldNumber = 4;
  inline const ::bgs::protocol::channel::v1::ChannelId& channel_id() const;
  inline ::bgs::protocol::channel::v1::ChannelId* mutable_channel_id();
  inline ::bgs::protocol::channel::v1::ChannelId* release_channel_id();
  inline void set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id);

  // optional .bgs.protocol.account.v1.Identity subscriber = 5;
  inline bool has_subscriber() const;
  inline void clear_subscriber();
  static const int kSubscriberFieldNumber = 5;
  inline const ::bgs::protocol::account::v1::Identity& subscriber() const;
  inline ::bgs::protocol::account::v1::Identity* mutable_subscriber();
  inline ::bgs::protocol::account::v1::Identity* release_subscriber();
  inline void set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber);

  // @@protoc_insertion_point(class_scope:bgs.protocol.channel.v1.UpdateMemberStateNotification)
 private:
  inline void set_has_agent_id();
  inline void clear_has_agent_id();
  inline void set_has_channel_id();
  inline void clear_has_channel_id();
  inline void set_has_subscriber();
  inline void clear_has_subscriber();

  ::google::protobuf::UnknownFieldSet _unknown_fields_;

  ::google::protobuf::uint32 _has_bits_[1];
  mutable int _cached_size_;
  ::bgs::protocol::EntityId* agent_id_;
  ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member > state_change_;
  ::bgs::protocol::channel::v1::ChannelId* channel_id_;
  ::bgs::protocol::account::v1::Identity* subscriber_;
  friend void protobuf_AddDesc_channel_5fservice_2eproto();
  friend void protobuf_AssignDesc_channel_5fservice_2eproto();
  friend void protobuf_ShutdownFile_channel_5fservice_2eproto();

  void InitAsDefaultInstance();
  static UpdateMemberStateNotification* default_instance_;
};
// ===================================================================

class ChannelService : public ServiceBase
{
 public:

  explicit ChannelService(bool use_original_hash);
  virtual ~ChannelService();

  typedef std::integral_constant<uint32, 0xB732DB32u> OriginalHash;
  typedef std::integral_constant<uint32, 0xA913A87Bu> NameHash;

  static google::protobuf::ServiceDescriptor const* descriptor();

  // client methods --------------------------------------------------

  void RemoveMember(::bgs::protocol::channel::v1::RemoveMemberRequest const* request, std::function<void(::bgs::protocol::NoData const*)> responseCallback);
  void SendMessage(::bgs::protocol::channel::v1::SendMessageRequest const* request, std::function<void(::bgs::protocol::NoData const*)> responseCallback);
  void UpdateChannelState(::bgs::protocol::channel::v1::UpdateChannelStateRequest const* request, std::function<void(::bgs::protocol::NoData const*)> responseCallback);
  void UpdateMemberState(::bgs::protocol::channel::v1::UpdateMemberStateRequest const* request, std::function<void(::bgs::protocol::NoData const*)> responseCallback);
  void Dissolve(::bgs::protocol::channel::v1::DissolveRequest const* request, std::function<void(::bgs::protocol::NoData const*)> responseCallback);
  // server methods --------------------------------------------------

  void CallServerMethod(uint32 token, uint32 methodId, MessageBuffer buffer) override final;

 protected:
  virtual uint32 HandleRemoveMember(::bgs::protocol::channel::v1::RemoveMemberRequest const* request, ::bgs::protocol::NoData* response);
  virtual uint32 HandleSendMessage(::bgs::protocol::channel::v1::SendMessageRequest const* request, ::bgs::protocol::NoData* response);
  virtual uint32 HandleUpdateChannelState(::bgs::protocol::channel::v1::UpdateChannelStateRequest const* request, ::bgs::protocol::NoData* response);
  virtual uint32 HandleUpdateMemberState(::bgs::protocol::channel::v1::UpdateMemberStateRequest const* request, ::bgs::protocol::NoData* response);
  virtual uint32 HandleDissolve(::bgs::protocol::channel::v1::DissolveRequest const* request, ::bgs::protocol::NoData* response);

 private:
  uint32 service_hash_;

  GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ChannelService);
};

// -------------------------------------------------------------------

class ChannelListener : public ServiceBase
{
 public:

  explicit ChannelListener(bool use_original_hash);
  virtual ~ChannelListener();

  typedef std::integral_constant<uint32, 0xBF8C8094u> OriginalHash;
  typedef std::integral_constant<uint32, 0xDA660990u> NameHash;

  static google::protobuf::ServiceDescriptor const* descriptor();

  // client methods --------------------------------------------------

  void OnJoin(::bgs::protocol::channel::v1::JoinNotification const* request);
  void OnMemberAdded(::bgs::protocol::channel::v1::MemberAddedNotification const* request);
  void OnLeave(::bgs::protocol::channel::v1::LeaveNotification const* request);
  void OnMemberRemoved(::bgs::protocol::channel::v1::MemberRemovedNotification const* request);
  void OnSendMessage(::bgs::protocol::channel::v1::SendMessageNotification const* request);
  void OnUpdateChannelState(::bgs::protocol::channel::v1::UpdateChannelStateNotification const* request);
  void OnUpdateMemberState(::bgs::protocol::channel::v1::UpdateMemberStateNotification const* request);
  // server methods --------------------------------------------------

  void CallServerMethod(uint32 token, uint32 methodId, MessageBuffer buffer) override final;

 protected:
  virtual uint32 HandleOnJoin(::bgs::protocol::channel::v1::JoinNotification const* request);
  virtual uint32 HandleOnMemberAdded(::bgs::protocol::channel::v1::MemberAddedNotification const* request);
  virtual uint32 HandleOnLeave(::bgs::protocol::channel::v1::LeaveNotification const* request);
  virtual uint32 HandleOnMemberRemoved(::bgs::protocol::channel::v1::MemberRemovedNotification const* request);
  virtual uint32 HandleOnSendMessage(::bgs::protocol::channel::v1::SendMessageNotification const* request);
  virtual uint32 HandleOnUpdateChannelState(::bgs::protocol::channel::v1::UpdateChannelStateNotification const* request);
  virtual uint32 HandleOnUpdateMemberState(::bgs::protocol::channel::v1::UpdateMemberStateNotification const* request);

 private:
  uint32 service_hash_;

  GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ChannelListener);
};

// ===================================================================


// ===================================================================

// RemoveMemberRequest

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool RemoveMemberRequest::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void RemoveMemberRequest::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void RemoveMemberRequest::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void RemoveMemberRequest::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& RemoveMemberRequest::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.RemoveMemberRequest.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* RemoveMemberRequest::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.RemoveMemberRequest.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* RemoveMemberRequest::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void RemoveMemberRequest::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.RemoveMemberRequest.agent_id)
}

// required .bgs.protocol.EntityId member_id = 2;
inline bool RemoveMemberRequest::has_member_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void RemoveMemberRequest::set_has_member_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void RemoveMemberRequest::clear_has_member_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void RemoveMemberRequest::clear_member_id() {
  if (member_id_ != NULL) member_id_->::bgs::protocol::EntityId::Clear();
  clear_has_member_id();
}
inline const ::bgs::protocol::EntityId& RemoveMemberRequest::member_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.RemoveMemberRequest.member_id)
  return member_id_ != NULL ? *member_id_ : *default_instance_->member_id_;
}
inline ::bgs::protocol::EntityId* RemoveMemberRequest::mutable_member_id() {
  set_has_member_id();
  if (member_id_ == NULL) member_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.RemoveMemberRequest.member_id)
  return member_id_;
}
inline ::bgs::protocol::EntityId* RemoveMemberRequest::release_member_id() {
  clear_has_member_id();
  ::bgs::protocol::EntityId* temp = member_id_;
  member_id_ = NULL;
  return temp;
}
inline void RemoveMemberRequest::set_allocated_member_id(::bgs::protocol::EntityId* member_id) {
  delete member_id_;
  member_id_ = member_id;
  if (member_id) {
    set_has_member_id();
  } else {
    clear_has_member_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.RemoveMemberRequest.member_id)
}

// optional uint32 reason = 3;
inline bool RemoveMemberRequest::has_reason() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void RemoveMemberRequest::set_has_reason() {
  _has_bits_[0] |= 0x00000004u;
}
inline void RemoveMemberRequest::clear_has_reason() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void RemoveMemberRequest::clear_reason() {
  reason_ = 0u;
  clear_has_reason();
}
inline ::google::protobuf::uint32 RemoveMemberRequest::reason() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.RemoveMemberRequest.reason)
  return reason_;
}
inline void RemoveMemberRequest::set_reason(::google::protobuf::uint32 value) {
  set_has_reason();
  reason_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.RemoveMemberRequest.reason)
}

// -------------------------------------------------------------------

// SendMessageRequest

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool SendMessageRequest::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void SendMessageRequest::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void SendMessageRequest::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void SendMessageRequest::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& SendMessageRequest::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageRequest.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* SendMessageRequest::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageRequest.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* SendMessageRequest::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void SendMessageRequest::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageRequest.agent_id)
}

// required .bgs.protocol.channel.v1.Message message = 2;
inline bool SendMessageRequest::has_message() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void SendMessageRequest::set_has_message() {
  _has_bits_[0] |= 0x00000002u;
}
inline void SendMessageRequest::clear_has_message() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void SendMessageRequest::clear_message() {
  if (message_ != NULL) message_->::bgs::protocol::channel::v1::Message::Clear();
  clear_has_message();
}
inline const ::bgs::protocol::channel::v1::Message& SendMessageRequest::message() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageRequest.message)
  return message_ != NULL ? *message_ : *default_instance_->message_;
}
inline ::bgs::protocol::channel::v1::Message* SendMessageRequest::mutable_message() {
  set_has_message();
  if (message_ == NULL) message_ = new ::bgs::protocol::channel::v1::Message;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageRequest.message)
  return message_;
}
inline ::bgs::protocol::channel::v1::Message* SendMessageRequest::release_message() {
  clear_has_message();
  ::bgs::protocol::channel::v1::Message* temp = message_;
  message_ = NULL;
  return temp;
}
inline void SendMessageRequest::set_allocated_message(::bgs::protocol::channel::v1::Message* message) {
  delete message_;
  message_ = message;
  if (message) {
    set_has_message();
  } else {
    clear_has_message();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageRequest.message)
}

// optional uint64 required_privileges = 3 [default = 0];
inline bool SendMessageRequest::has_required_privileges() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void SendMessageRequest::set_has_required_privileges() {
  _has_bits_[0] |= 0x00000004u;
}
inline void SendMessageRequest::clear_has_required_privileges() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void SendMessageRequest::clear_required_privileges() {
  required_privileges_ = GOOGLE_ULONGLONG(0);
  clear_has_required_privileges();
}
inline ::google::protobuf::uint64 SendMessageRequest::required_privileges() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageRequest.required_privileges)
  return required_privileges_;
}
inline void SendMessageRequest::set_required_privileges(::google::protobuf::uint64 value) {
  set_has_required_privileges();
  required_privileges_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.SendMessageRequest.required_privileges)
}

// -------------------------------------------------------------------

// UpdateChannelStateRequest

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool UpdateChannelStateRequest::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void UpdateChannelStateRequest::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void UpdateChannelStateRequest::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void UpdateChannelStateRequest::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& UpdateChannelStateRequest::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateChannelStateRequest.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateChannelStateRequest::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateChannelStateRequest.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateChannelStateRequest::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void UpdateChannelStateRequest::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateChannelStateRequest.agent_id)
}

// required .bgs.protocol.channel.v1.ChannelState state_change = 2;
inline bool UpdateChannelStateRequest::has_state_change() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void UpdateChannelStateRequest::set_has_state_change() {
  _has_bits_[0] |= 0x00000002u;
}
inline void UpdateChannelStateRequest::clear_has_state_change() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void UpdateChannelStateRequest::clear_state_change() {
  if (state_change_ != NULL) state_change_->::bgs::protocol::channel::v1::ChannelState::Clear();
  clear_has_state_change();
}
inline const ::bgs::protocol::channel::v1::ChannelState& UpdateChannelStateRequest::state_change() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateChannelStateRequest.state_change)
  return state_change_ != NULL ? *state_change_ : *default_instance_->state_change_;
}
inline ::bgs::protocol::channel::v1::ChannelState* UpdateChannelStateRequest::mutable_state_change() {
  set_has_state_change();
  if (state_change_ == NULL) state_change_ = new ::bgs::protocol::channel::v1::ChannelState;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateChannelStateRequest.state_change)
  return state_change_;
}
inline ::bgs::protocol::channel::v1::ChannelState* UpdateChannelStateRequest::release_state_change() {
  clear_has_state_change();
  ::bgs::protocol::channel::v1::ChannelState* temp = state_change_;
  state_change_ = NULL;
  return temp;
}
inline void UpdateChannelStateRequest::set_allocated_state_change(::bgs::protocol::channel::v1::ChannelState* state_change) {
  delete state_change_;
  state_change_ = state_change;
  if (state_change) {
    set_has_state_change();
  } else {
    clear_has_state_change();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateChannelStateRequest.state_change)
}

// -------------------------------------------------------------------

// UpdateMemberStateRequest

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool UpdateMemberStateRequest::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void UpdateMemberStateRequest::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void UpdateMemberStateRequest::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void UpdateMemberStateRequest::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& UpdateMemberStateRequest::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateRequest.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateMemberStateRequest::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateMemberStateRequest.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateMemberStateRequest::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void UpdateMemberStateRequest::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateMemberStateRequest.agent_id)
}

// repeated .bgs.protocol.channel.v1.Member state_change = 2;
inline int UpdateMemberStateRequest::state_change_size() const {
  return state_change_.size();
}
inline void UpdateMemberStateRequest::clear_state_change() {
  state_change_.Clear();
}
inline const ::bgs::protocol::channel::v1::Member& UpdateMemberStateRequest::state_change(int index) const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateRequest.state_change)
  return state_change_.Get(index);
}
inline ::bgs::protocol::channel::v1::Member* UpdateMemberStateRequest::mutable_state_change(int index) {
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateMemberStateRequest.state_change)
  return state_change_.Mutable(index);
}
inline ::bgs::protocol::channel::v1::Member* UpdateMemberStateRequest::add_state_change() {
  // @@protoc_insertion_point(field_add:bgs.protocol.channel.v1.UpdateMemberStateRequest.state_change)
  return state_change_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >&
UpdateMemberStateRequest::state_change() const {
  // @@protoc_insertion_point(field_list:bgs.protocol.channel.v1.UpdateMemberStateRequest.state_change)
  return state_change_;
}
inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >*
UpdateMemberStateRequest::mutable_state_change() {
  // @@protoc_insertion_point(field_mutable_list:bgs.protocol.channel.v1.UpdateMemberStateRequest.state_change)
  return &state_change_;
}

// repeated uint32 removed_role = 3 [packed = true];
inline int UpdateMemberStateRequest::removed_role_size() const {
  return removed_role_.size();
}
inline void UpdateMemberStateRequest::clear_removed_role() {
  removed_role_.Clear();
}
inline ::google::protobuf::uint32 UpdateMemberStateRequest::removed_role(int index) const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateRequest.removed_role)
  return removed_role_.Get(index);
}
inline void UpdateMemberStateRequest::set_removed_role(int index, ::google::protobuf::uint32 value) {
  removed_role_.Set(index, value);
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.UpdateMemberStateRequest.removed_role)
}
inline void UpdateMemberStateRequest::add_removed_role(::google::protobuf::uint32 value) {
  removed_role_.Add(value);
  // @@protoc_insertion_point(field_add:bgs.protocol.channel.v1.UpdateMemberStateRequest.removed_role)
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >&
UpdateMemberStateRequest::removed_role() const {
  // @@protoc_insertion_point(field_list:bgs.protocol.channel.v1.UpdateMemberStateRequest.removed_role)
  return removed_role_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >*
UpdateMemberStateRequest::mutable_removed_role() {
  // @@protoc_insertion_point(field_mutable_list:bgs.protocol.channel.v1.UpdateMemberStateRequest.removed_role)
  return &removed_role_;
}

// -------------------------------------------------------------------

// DissolveRequest

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool DissolveRequest::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void DissolveRequest::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void DissolveRequest::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void DissolveRequest::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& DissolveRequest::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.DissolveRequest.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* DissolveRequest::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.DissolveRequest.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* DissolveRequest::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void DissolveRequest::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.DissolveRequest.agent_id)
}

// optional uint32 reason = 2;
inline bool DissolveRequest::has_reason() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void DissolveRequest::set_has_reason() {
  _has_bits_[0] |= 0x00000002u;
}
inline void DissolveRequest::clear_has_reason() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void DissolveRequest::clear_reason() {
  reason_ = 0u;
  clear_has_reason();
}
inline ::google::protobuf::uint32 DissolveRequest::reason() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.DissolveRequest.reason)
  return reason_;
}
inline void DissolveRequest::set_reason(::google::protobuf::uint32 value) {
  set_has_reason();
  reason_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.DissolveRequest.reason)
}

// -------------------------------------------------------------------

// JoinNotification

// optional .bgs.protocol.channel.v1.Member self = 1;
inline bool JoinNotification::has_self() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void JoinNotification::set_has_self() {
  _has_bits_[0] |= 0x00000001u;
}
inline void JoinNotification::clear_has_self() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void JoinNotification::clear_self() {
  if (self_ != NULL) self_->::bgs::protocol::channel::v1::Member::Clear();
  clear_has_self();
}
inline const ::bgs::protocol::channel::v1::Member& JoinNotification::self() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.JoinNotification.self)
  return self_ != NULL ? *self_ : *default_instance_->self_;
}
inline ::bgs::protocol::channel::v1::Member* JoinNotification::mutable_self() {
  set_has_self();
  if (self_ == NULL) self_ = new ::bgs::protocol::channel::v1::Member;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.JoinNotification.self)
  return self_;
}
inline ::bgs::protocol::channel::v1::Member* JoinNotification::release_self() {
  clear_has_self();
  ::bgs::protocol::channel::v1::Member* temp = self_;
  self_ = NULL;
  return temp;
}
inline void JoinNotification::set_allocated_self(::bgs::protocol::channel::v1::Member* self) {
  delete self_;
  self_ = self;
  if (self) {
    set_has_self();
  } else {
    clear_has_self();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.JoinNotification.self)
}

// repeated .bgs.protocol.channel.v1.Member member = 2;
inline int JoinNotification::member_size() const {
  return member_.size();
}
inline void JoinNotification::clear_member() {
  member_.Clear();
}
inline const ::bgs::protocol::channel::v1::Member& JoinNotification::member(int index) const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.JoinNotification.member)
  return member_.Get(index);
}
inline ::bgs::protocol::channel::v1::Member* JoinNotification::mutable_member(int index) {
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.JoinNotification.member)
  return member_.Mutable(index);
}
inline ::bgs::protocol::channel::v1::Member* JoinNotification::add_member() {
  // @@protoc_insertion_point(field_add:bgs.protocol.channel.v1.JoinNotification.member)
  return member_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >&
JoinNotification::member() const {
  // @@protoc_insertion_point(field_list:bgs.protocol.channel.v1.JoinNotification.member)
  return member_;
}
inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >*
JoinNotification::mutable_member() {
  // @@protoc_insertion_point(field_mutable_list:bgs.protocol.channel.v1.JoinNotification.member)
  return &member_;
}

// required .bgs.protocol.channel.v1.ChannelState channel_state = 3;
inline bool JoinNotification::has_channel_state() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void JoinNotification::set_has_channel_state() {
  _has_bits_[0] |= 0x00000004u;
}
inline void JoinNotification::clear_has_channel_state() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void JoinNotification::clear_channel_state() {
  if (channel_state_ != NULL) channel_state_->::bgs::protocol::channel::v1::ChannelState::Clear();
  clear_has_channel_state();
}
inline const ::bgs::protocol::channel::v1::ChannelState& JoinNotification::channel_state() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.JoinNotification.channel_state)
  return channel_state_ != NULL ? *channel_state_ : *default_instance_->channel_state_;
}
inline ::bgs::protocol::channel::v1::ChannelState* JoinNotification::mutable_channel_state() {
  set_has_channel_state();
  if (channel_state_ == NULL) channel_state_ = new ::bgs::protocol::channel::v1::ChannelState;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.JoinNotification.channel_state)
  return channel_state_;
}
inline ::bgs::protocol::channel::v1::ChannelState* JoinNotification::release_channel_state() {
  clear_has_channel_state();
  ::bgs::protocol::channel::v1::ChannelState* temp = channel_state_;
  channel_state_ = NULL;
  return temp;
}
inline void JoinNotification::set_allocated_channel_state(::bgs::protocol::channel::v1::ChannelState* channel_state) {
  delete channel_state_;
  channel_state_ = channel_state;
  if (channel_state) {
    set_has_channel_state();
  } else {
    clear_has_channel_state();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.JoinNotification.channel_state)
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
inline bool JoinNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void JoinNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void JoinNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void JoinNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& JoinNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.JoinNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* JoinNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.JoinNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* JoinNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void JoinNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.JoinNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 5;
inline bool JoinNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void JoinNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000010u;
}
inline void JoinNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void JoinNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& JoinNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.JoinNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* JoinNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.JoinNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* JoinNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void JoinNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.JoinNotification.subscriber)
}

// -------------------------------------------------------------------

// MemberAddedNotification

// required .bgs.protocol.channel.v1.Member member = 1;
inline bool MemberAddedNotification::has_member() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MemberAddedNotification::set_has_member() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MemberAddedNotification::clear_has_member() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MemberAddedNotification::clear_member() {
  if (member_ != NULL) member_->::bgs::protocol::channel::v1::Member::Clear();
  clear_has_member();
}
inline const ::bgs::protocol::channel::v1::Member& MemberAddedNotification::member() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberAddedNotification.member)
  return member_ != NULL ? *member_ : *default_instance_->member_;
}
inline ::bgs::protocol::channel::v1::Member* MemberAddedNotification::mutable_member() {
  set_has_member();
  if (member_ == NULL) member_ = new ::bgs::protocol::channel::v1::Member;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberAddedNotification.member)
  return member_;
}
inline ::bgs::protocol::channel::v1::Member* MemberAddedNotification::release_member() {
  clear_has_member();
  ::bgs::protocol::channel::v1::Member* temp = member_;
  member_ = NULL;
  return temp;
}
inline void MemberAddedNotification::set_allocated_member(::bgs::protocol::channel::v1::Member* member) {
  delete member_;
  member_ = member;
  if (member) {
    set_has_member();
  } else {
    clear_has_member();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberAddedNotification.member)
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 2;
inline bool MemberAddedNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void MemberAddedNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void MemberAddedNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void MemberAddedNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& MemberAddedNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberAddedNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* MemberAddedNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberAddedNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* MemberAddedNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void MemberAddedNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberAddedNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 3;
inline bool MemberAddedNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void MemberAddedNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000004u;
}
inline void MemberAddedNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void MemberAddedNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& MemberAddedNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberAddedNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* MemberAddedNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberAddedNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* MemberAddedNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void MemberAddedNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberAddedNotification.subscriber)
}

// -------------------------------------------------------------------

// LeaveNotification

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool LeaveNotification::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void LeaveNotification::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void LeaveNotification::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void LeaveNotification::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& LeaveNotification::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.LeaveNotification.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* LeaveNotification::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.LeaveNotification.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* LeaveNotification::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void LeaveNotification::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.LeaveNotification.agent_id)
}

// required .bgs.protocol.EntityId member_id = 2 [deprecated = true];
inline bool LeaveNotification::has_member_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void LeaveNotification::set_has_member_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void LeaveNotification::clear_has_member_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void LeaveNotification::clear_member_id() {
  if (member_id_ != NULL) member_id_->::bgs::protocol::EntityId::Clear();
  clear_has_member_id();
}
inline const ::bgs::protocol::EntityId& LeaveNotification::member_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.LeaveNotification.member_id)
  return member_id_ != NULL ? *member_id_ : *default_instance_->member_id_;
}
inline ::bgs::protocol::EntityId* LeaveNotification::mutable_member_id() {
  set_has_member_id();
  if (member_id_ == NULL) member_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.LeaveNotification.member_id)
  return member_id_;
}
inline ::bgs::protocol::EntityId* LeaveNotification::release_member_id() {
  clear_has_member_id();
  ::bgs::protocol::EntityId* temp = member_id_;
  member_id_ = NULL;
  return temp;
}
inline void LeaveNotification::set_allocated_member_id(::bgs::protocol::EntityId* member_id) {
  delete member_id_;
  member_id_ = member_id;
  if (member_id) {
    set_has_member_id();
  } else {
    clear_has_member_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.LeaveNotification.member_id)
}

// optional uint32 reason = 3;
inline bool LeaveNotification::has_reason() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void LeaveNotification::set_has_reason() {
  _has_bits_[0] |= 0x00000004u;
}
inline void LeaveNotification::clear_has_reason() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void LeaveNotification::clear_reason() {
  reason_ = 0u;
  clear_has_reason();
}
inline ::google::protobuf::uint32 LeaveNotification::reason() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.LeaveNotification.reason)
  return reason_;
}
inline void LeaveNotification::set_reason(::google::protobuf::uint32 value) {
  set_has_reason();
  reason_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.LeaveNotification.reason)
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
inline bool LeaveNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void LeaveNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void LeaveNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void LeaveNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& LeaveNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.LeaveNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* LeaveNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.LeaveNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* LeaveNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void LeaveNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.LeaveNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 5;
inline bool LeaveNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void LeaveNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000010u;
}
inline void LeaveNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void LeaveNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& LeaveNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.LeaveNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* LeaveNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.LeaveNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* LeaveNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void LeaveNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.LeaveNotification.subscriber)
}

// -------------------------------------------------------------------

// MemberRemovedNotification

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool MemberRemovedNotification::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void MemberRemovedNotification::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void MemberRemovedNotification::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void MemberRemovedNotification::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& MemberRemovedNotification::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberRemovedNotification.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* MemberRemovedNotification::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberRemovedNotification.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* MemberRemovedNotification::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void MemberRemovedNotification::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberRemovedNotification.agent_id)
}

// required .bgs.protocol.EntityId member_id = 2;
inline bool MemberRemovedNotification::has_member_id() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void MemberRemovedNotification::set_has_member_id() {
  _has_bits_[0] |= 0x00000002u;
}
inline void MemberRemovedNotification::clear_has_member_id() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void MemberRemovedNotification::clear_member_id() {
  if (member_id_ != NULL) member_id_->::bgs::protocol::EntityId::Clear();
  clear_has_member_id();
}
inline const ::bgs::protocol::EntityId& MemberRemovedNotification::member_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberRemovedNotification.member_id)
  return member_id_ != NULL ? *member_id_ : *default_instance_->member_id_;
}
inline ::bgs::protocol::EntityId* MemberRemovedNotification::mutable_member_id() {
  set_has_member_id();
  if (member_id_ == NULL) member_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberRemovedNotification.member_id)
  return member_id_;
}
inline ::bgs::protocol::EntityId* MemberRemovedNotification::release_member_id() {
  clear_has_member_id();
  ::bgs::protocol::EntityId* temp = member_id_;
  member_id_ = NULL;
  return temp;
}
inline void MemberRemovedNotification::set_allocated_member_id(::bgs::protocol::EntityId* member_id) {
  delete member_id_;
  member_id_ = member_id;
  if (member_id) {
    set_has_member_id();
  } else {
    clear_has_member_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberRemovedNotification.member_id)
}

// optional uint32 reason = 3;
inline bool MemberRemovedNotification::has_reason() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void MemberRemovedNotification::set_has_reason() {
  _has_bits_[0] |= 0x00000004u;
}
inline void MemberRemovedNotification::clear_has_reason() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void MemberRemovedNotification::clear_reason() {
  reason_ = 0u;
  clear_has_reason();
}
inline ::google::protobuf::uint32 MemberRemovedNotification::reason() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberRemovedNotification.reason)
  return reason_;
}
inline void MemberRemovedNotification::set_reason(::google::protobuf::uint32 value) {
  set_has_reason();
  reason_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.MemberRemovedNotification.reason)
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
inline bool MemberRemovedNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void MemberRemovedNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000008u;
}
inline void MemberRemovedNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void MemberRemovedNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& MemberRemovedNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberRemovedNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* MemberRemovedNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberRemovedNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* MemberRemovedNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void MemberRemovedNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberRemovedNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 5;
inline bool MemberRemovedNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void MemberRemovedNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000010u;
}
inline void MemberRemovedNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void MemberRemovedNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& MemberRemovedNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.MemberRemovedNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* MemberRemovedNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.MemberRemovedNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* MemberRemovedNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void MemberRemovedNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.MemberRemovedNotification.subscriber)
}

// -------------------------------------------------------------------

// SendMessageNotification

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool SendMessageNotification::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void SendMessageNotification::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void SendMessageNotification::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void SendMessageNotification::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& SendMessageNotification::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageNotification.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* SendMessageNotification::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageNotification.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* SendMessageNotification::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void SendMessageNotification::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageNotification.agent_id)
}

// required .bgs.protocol.channel.v1.Message message = 2;
inline bool SendMessageNotification::has_message() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void SendMessageNotification::set_has_message() {
  _has_bits_[0] |= 0x00000002u;
}
inline void SendMessageNotification::clear_has_message() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void SendMessageNotification::clear_message() {
  if (message_ != NULL) message_->::bgs::protocol::channel::v1::Message::Clear();
  clear_has_message();
}
inline const ::bgs::protocol::channel::v1::Message& SendMessageNotification::message() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageNotification.message)
  return message_ != NULL ? *message_ : *default_instance_->message_;
}
inline ::bgs::protocol::channel::v1::Message* SendMessageNotification::mutable_message() {
  set_has_message();
  if (message_ == NULL) message_ = new ::bgs::protocol::channel::v1::Message;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageNotification.message)
  return message_;
}
inline ::bgs::protocol::channel::v1::Message* SendMessageNotification::release_message() {
  clear_has_message();
  ::bgs::protocol::channel::v1::Message* temp = message_;
  message_ = NULL;
  return temp;
}
inline void SendMessageNotification::set_allocated_message(::bgs::protocol::channel::v1::Message* message) {
  delete message_;
  message_ = message;
  if (message) {
    set_has_message();
  } else {
    clear_has_message();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageNotification.message)
}

// optional uint64 required_privileges = 3 [default = 0];
inline bool SendMessageNotification::has_required_privileges() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void SendMessageNotification::set_has_required_privileges() {
  _has_bits_[0] |= 0x00000004u;
}
inline void SendMessageNotification::clear_has_required_privileges() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void SendMessageNotification::clear_required_privileges() {
  required_privileges_ = GOOGLE_ULONGLONG(0);
  clear_has_required_privileges();
}
inline ::google::protobuf::uint64 SendMessageNotification::required_privileges() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageNotification.required_privileges)
  return required_privileges_;
}
inline void SendMessageNotification::set_required_privileges(::google::protobuf::uint64 value) {
  set_has_required_privileges();
  required_privileges_ = value;
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.SendMessageNotification.required_privileges)
}

// optional string battle_tag = 4;
inline bool SendMessageNotification::has_battle_tag() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void SendMessageNotification::set_has_battle_tag() {
  _has_bits_[0] |= 0x00000008u;
}
inline void SendMessageNotification::clear_has_battle_tag() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void SendMessageNotification::clear_battle_tag() {
  if (battle_tag_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    battle_tag_->clear();
  }
  clear_has_battle_tag();
}
inline const ::std::string& SendMessageNotification::battle_tag() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageNotification.battle_tag)
  return *battle_tag_;
}
inline void SendMessageNotification::set_battle_tag(const ::std::string& value) {
  set_has_battle_tag();
  if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    battle_tag_ = new ::std::string;
  }
  battle_tag_->assign(value);
  // @@protoc_insertion_point(field_set:bgs.protocol.channel.v1.SendMessageNotification.battle_tag)
}
inline void SendMessageNotification::set_battle_tag(const char* value) {
  set_has_battle_tag();
  if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    battle_tag_ = new ::std::string;
  }
  battle_tag_->assign(value);
  // @@protoc_insertion_point(field_set_char:bgs.protocol.channel.v1.SendMessageNotification.battle_tag)
}
inline void SendMessageNotification::set_battle_tag(const char* value, size_t size) {
  set_has_battle_tag();
  if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    battle_tag_ = new ::std::string;
  }
  battle_tag_->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:bgs.protocol.channel.v1.SendMessageNotification.battle_tag)
}
inline ::std::string* SendMessageNotification::mutable_battle_tag() {
  set_has_battle_tag();
  if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    battle_tag_ = new ::std::string;
  }
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageNotification.battle_tag)
  return battle_tag_;
}
inline ::std::string* SendMessageNotification::release_battle_tag() {
  clear_has_battle_tag();
  if (battle_tag_ == &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    return NULL;
  } else {
    ::std::string* temp = battle_tag_;
    battle_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
    return temp;
  }
}
inline void SendMessageNotification::set_allocated_battle_tag(::std::string* battle_tag) {
  if (battle_tag_ != &::google::protobuf::internal::GetEmptyStringAlreadyInited()) {
    delete battle_tag_;
  }
  if (battle_tag) {
    set_has_battle_tag();
    battle_tag_ = battle_tag;
  } else {
    clear_has_battle_tag();
    battle_tag_ = const_cast< ::std::string*>(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageNotification.battle_tag)
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 5;
inline bool SendMessageNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000010u) != 0;
}
inline void SendMessageNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000010u;
}
inline void SendMessageNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000010u;
}
inline void SendMessageNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& SendMessageNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* SendMessageNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* SendMessageNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void SendMessageNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 6;
inline bool SendMessageNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000020u) != 0;
}
inline void SendMessageNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000020u;
}
inline void SendMessageNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000020u;
}
inline void SendMessageNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& SendMessageNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.SendMessageNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* SendMessageNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.SendMessageNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* SendMessageNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void SendMessageNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.SendMessageNotification.subscriber)
}

// -------------------------------------------------------------------

// UpdateChannelStateNotification

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool UpdateChannelStateNotification::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void UpdateChannelStateNotification::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void UpdateChannelStateNotification::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void UpdateChannelStateNotification::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& UpdateChannelStateNotification::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateChannelStateNotification.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateChannelStateNotification::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateChannelStateNotification.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateChannelStateNotification::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void UpdateChannelStateNotification::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateChannelStateNotification.agent_id)
}

// required .bgs.protocol.channel.v1.ChannelState state_change = 2;
inline bool UpdateChannelStateNotification::has_state_change() const {
  return (_has_bits_[0] & 0x00000002u) != 0;
}
inline void UpdateChannelStateNotification::set_has_state_change() {
  _has_bits_[0] |= 0x00000002u;
}
inline void UpdateChannelStateNotification::clear_has_state_change() {
  _has_bits_[0] &= ~0x00000002u;
}
inline void UpdateChannelStateNotification::clear_state_change() {
  if (state_change_ != NULL) state_change_->::bgs::protocol::channel::v1::ChannelState::Clear();
  clear_has_state_change();
}
inline const ::bgs::protocol::channel::v1::ChannelState& UpdateChannelStateNotification::state_change() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateChannelStateNotification.state_change)
  return state_change_ != NULL ? *state_change_ : *default_instance_->state_change_;
}
inline ::bgs::protocol::channel::v1::ChannelState* UpdateChannelStateNotification::mutable_state_change() {
  set_has_state_change();
  if (state_change_ == NULL) state_change_ = new ::bgs::protocol::channel::v1::ChannelState;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateChannelStateNotification.state_change)
  return state_change_;
}
inline ::bgs::protocol::channel::v1::ChannelState* UpdateChannelStateNotification::release_state_change() {
  clear_has_state_change();
  ::bgs::protocol::channel::v1::ChannelState* temp = state_change_;
  state_change_ = NULL;
  return temp;
}
inline void UpdateChannelStateNotification::set_allocated_state_change(::bgs::protocol::channel::v1::ChannelState* state_change) {
  delete state_change_;
  state_change_ = state_change;
  if (state_change) {
    set_has_state_change();
  } else {
    clear_has_state_change();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateChannelStateNotification.state_change)
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 3;
inline bool UpdateChannelStateNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void UpdateChannelStateNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000004u;
}
inline void UpdateChannelStateNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void UpdateChannelStateNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& UpdateChannelStateNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateChannelStateNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* UpdateChannelStateNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateChannelStateNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* UpdateChannelStateNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void UpdateChannelStateNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateChannelStateNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 4;
inline bool UpdateChannelStateNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void UpdateChannelStateNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000008u;
}
inline void UpdateChannelStateNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void UpdateChannelStateNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& UpdateChannelStateNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateChannelStateNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* UpdateChannelStateNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateChannelStateNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* UpdateChannelStateNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void UpdateChannelStateNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateChannelStateNotification.subscriber)
}

// -------------------------------------------------------------------

// UpdateMemberStateNotification

// optional .bgs.protocol.EntityId agent_id = 1;
inline bool UpdateMemberStateNotification::has_agent_id() const {
  return (_has_bits_[0] & 0x00000001u) != 0;
}
inline void UpdateMemberStateNotification::set_has_agent_id() {
  _has_bits_[0] |= 0x00000001u;
}
inline void UpdateMemberStateNotification::clear_has_agent_id() {
  _has_bits_[0] &= ~0x00000001u;
}
inline void UpdateMemberStateNotification::clear_agent_id() {
  if (agent_id_ != NULL) agent_id_->::bgs::protocol::EntityId::Clear();
  clear_has_agent_id();
}
inline const ::bgs::protocol::EntityId& UpdateMemberStateNotification::agent_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateNotification.agent_id)
  return agent_id_ != NULL ? *agent_id_ : *default_instance_->agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateMemberStateNotification::mutable_agent_id() {
  set_has_agent_id();
  if (agent_id_ == NULL) agent_id_ = new ::bgs::protocol::EntityId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateMemberStateNotification.agent_id)
  return agent_id_;
}
inline ::bgs::protocol::EntityId* UpdateMemberStateNotification::release_agent_id() {
  clear_has_agent_id();
  ::bgs::protocol::EntityId* temp = agent_id_;
  agent_id_ = NULL;
  return temp;
}
inline void UpdateMemberStateNotification::set_allocated_agent_id(::bgs::protocol::EntityId* agent_id) {
  delete agent_id_;
  agent_id_ = agent_id;
  if (agent_id) {
    set_has_agent_id();
  } else {
    clear_has_agent_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateMemberStateNotification.agent_id)
}

// repeated .bgs.protocol.channel.v1.Member state_change = 2;
inline int UpdateMemberStateNotification::state_change_size() const {
  return state_change_.size();
}
inline void UpdateMemberStateNotification::clear_state_change() {
  state_change_.Clear();
}
inline const ::bgs::protocol::channel::v1::Member& UpdateMemberStateNotification::state_change(int index) const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateNotification.state_change)
  return state_change_.Get(index);
}
inline ::bgs::protocol::channel::v1::Member* UpdateMemberStateNotification::mutable_state_change(int index) {
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateMemberStateNotification.state_change)
  return state_change_.Mutable(index);
}
inline ::bgs::protocol::channel::v1::Member* UpdateMemberStateNotification::add_state_change() {
  // @@protoc_insertion_point(field_add:bgs.protocol.channel.v1.UpdateMemberStateNotification.state_change)
  return state_change_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >&
UpdateMemberStateNotification::state_change() const {
  // @@protoc_insertion_point(field_list:bgs.protocol.channel.v1.UpdateMemberStateNotification.state_change)
  return state_change_;
}
inline ::google::protobuf::RepeatedPtrField< ::bgs::protocol::channel::v1::Member >*
UpdateMemberStateNotification::mutable_state_change() {
  // @@protoc_insertion_point(field_mutable_list:bgs.protocol.channel.v1.UpdateMemberStateNotification.state_change)
  return &state_change_;
}

// optional .bgs.protocol.channel.v1.ChannelId channel_id = 4;
inline bool UpdateMemberStateNotification::has_channel_id() const {
  return (_has_bits_[0] & 0x00000004u) != 0;
}
inline void UpdateMemberStateNotification::set_has_channel_id() {
  _has_bits_[0] |= 0x00000004u;
}
inline void UpdateMemberStateNotification::clear_has_channel_id() {
  _has_bits_[0] &= ~0x00000004u;
}
inline void UpdateMemberStateNotification::clear_channel_id() {
  if (channel_id_ != NULL) channel_id_->::bgs::protocol::channel::v1::ChannelId::Clear();
  clear_has_channel_id();
}
inline const ::bgs::protocol::channel::v1::ChannelId& UpdateMemberStateNotification::channel_id() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateNotification.channel_id)
  return channel_id_ != NULL ? *channel_id_ : *default_instance_->channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* UpdateMemberStateNotification::mutable_channel_id() {
  set_has_channel_id();
  if (channel_id_ == NULL) channel_id_ = new ::bgs::protocol::channel::v1::ChannelId;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateMemberStateNotification.channel_id)
  return channel_id_;
}
inline ::bgs::protocol::channel::v1::ChannelId* UpdateMemberStateNotification::release_channel_id() {
  clear_has_channel_id();
  ::bgs::protocol::channel::v1::ChannelId* temp = channel_id_;
  channel_id_ = NULL;
  return temp;
}
inline void UpdateMemberStateNotification::set_allocated_channel_id(::bgs::protocol::channel::v1::ChannelId* channel_id) {
  delete channel_id_;
  channel_id_ = channel_id;
  if (channel_id) {
    set_has_channel_id();
  } else {
    clear_has_channel_id();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateMemberStateNotification.channel_id)
}

// optional .bgs.protocol.account.v1.Identity subscriber = 5;
inline bool UpdateMemberStateNotification::has_subscriber() const {
  return (_has_bits_[0] & 0x00000008u) != 0;
}
inline void UpdateMemberStateNotification::set_has_subscriber() {
  _has_bits_[0] |= 0x00000008u;
}
inline void UpdateMemberStateNotification::clear_has_subscriber() {
  _has_bits_[0] &= ~0x00000008u;
}
inline void UpdateMemberStateNotification::clear_subscriber() {
  if (subscriber_ != NULL) subscriber_->::bgs::protocol::account::v1::Identity::Clear();
  clear_has_subscriber();
}
inline const ::bgs::protocol::account::v1::Identity& UpdateMemberStateNotification::subscriber() const {
  // @@protoc_insertion_point(field_get:bgs.protocol.channel.v1.UpdateMemberStateNotification.subscriber)
  return subscriber_ != NULL ? *subscriber_ : *default_instance_->subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* UpdateMemberStateNotification::mutable_subscriber() {
  set_has_subscriber();
  if (subscriber_ == NULL) subscriber_ = new ::bgs::protocol::account::v1::Identity;
  // @@protoc_insertion_point(field_mutable:bgs.protocol.channel.v1.UpdateMemberStateNotification.subscriber)
  return subscriber_;
}
inline ::bgs::protocol::account::v1::Identity* UpdateMemberStateNotification::release_subscriber() {
  clear_has_subscriber();
  ::bgs::protocol::account::v1::Identity* temp = subscriber_;
  subscriber_ = NULL;
  return temp;
}
inline void UpdateMemberStateNotification::set_allocated_subscriber(::bgs::protocol::account::v1::Identity* subscriber) {
  delete subscriber_;
  subscriber_ = subscriber;
  if (subscriber) {
    set_has_subscriber();
  } else {
    clear_has_subscriber();
  }
  // @@protoc_insertion_point(field_set_allocated:bgs.protocol.channel.v1.UpdateMemberStateNotification.subscriber)
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace v1
}  // namespace channel
}  // namespace protocol
}  // namespace bgs

#ifndef SWIG
namespace google {
namespace protobuf {


}  // namespace google
}  // namespace protobuf
#endif  // SWIG

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_channel_5fservice_2eproto__INCLUDED
