You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by ja...@apache.org on 2014/05/30 01:45:17 UTC

[08/15] DRILL-423: C++ Client. Initial implementation (reviewed)

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/e1e5ea0e/contrib/native/client/src/protobuf/Coordination.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/Coordination.pb.cc b/contrib/native/client/src/protobuf/Coordination.pb.cc
new file mode 100644
index 0000000..dd6b02f
--- /dev/null
+++ b/contrib/native/client/src/protobuf/Coordination.pb.cc
@@ -0,0 +1,1227 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: Coordination.proto
+
+#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
+#include "Coordination.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/stubs/once.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+
+namespace exec {
+
+namespace {
+
+const ::google::protobuf::Descriptor* DrillbitEndpoint_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  DrillbitEndpoint_reflection_ = NULL;
+const ::google::protobuf::Descriptor* DrillServiceInstance_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  DrillServiceInstance_reflection_ = NULL;
+const ::google::protobuf::Descriptor* Roles_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  Roles_reflection_ = NULL;
+
+}  // namespace
+
+
+void protobuf_AssignDesc_Coordination_2eproto() {
+  protobuf_AddDesc_Coordination_2eproto();
+  const ::google::protobuf::FileDescriptor* file =
+    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
+      "Coordination.proto");
+  GOOGLE_CHECK(file != NULL);
+  DrillbitEndpoint_descriptor_ = file->message_type(0);
+  static const int DrillbitEndpoint_offsets_[5] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, address_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, user_port_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, control_port_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, data_port_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, roles_),
+  };
+  DrillbitEndpoint_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      DrillbitEndpoint_descriptor_,
+      DrillbitEndpoint::default_instance_,
+      DrillbitEndpoint_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillbitEndpoint, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(DrillbitEndpoint));
+  DrillServiceInstance_descriptor_ = file->message_type(1);
+  static const int DrillServiceInstance_offsets_[3] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillServiceInstance, id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillServiceInstance, registrationtimeutc_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillServiceInstance, endpoint_),
+  };
+  DrillServiceInstance_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      DrillServiceInstance_descriptor_,
+      DrillServiceInstance::default_instance_,
+      DrillServiceInstance_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillServiceInstance, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DrillServiceInstance, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(DrillServiceInstance));
+  Roles_descriptor_ = file->message_type(2);
+  static const int Roles_offsets_[5] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, sql_query_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, logical_plan_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, physical_plan_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, java_executor_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, distributed_cache_),
+  };
+  Roles_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      Roles_descriptor_,
+      Roles::default_instance_,
+      Roles_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Roles, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(Roles));
+}
+
+namespace {
+
+GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
+inline void protobuf_AssignDescriptorsOnce() {
+  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
+                 &protobuf_AssignDesc_Coordination_2eproto);
+}
+
+void protobuf_RegisterTypes(const ::std::string&) {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    DrillbitEndpoint_descriptor_, &DrillbitEndpoint::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    DrillServiceInstance_descriptor_, &DrillServiceInstance::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    Roles_descriptor_, &Roles::default_instance());
+}
+
+}  // namespace
+
+void protobuf_ShutdownFile_Coordination_2eproto() {
+  delete DrillbitEndpoint::default_instance_;
+  delete DrillbitEndpoint_reflection_;
+  delete DrillServiceInstance::default_instance_;
+  delete DrillServiceInstance_reflection_;
+  delete Roles::default_instance_;
+  delete Roles_reflection_;
+}
+
+void protobuf_AddDesc_Coordination_2eproto() {
+  static bool already_here = false;
+  if (already_here) return;
+  already_here = true;
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
+    "\n\022Coordination.proto\022\004exec\"{\n\020DrillbitEn"
+    "dpoint\022\017\n\007address\030\001 \001(\t\022\021\n\tuser_port\030\002 \001"
+    "(\005\022\024\n\014control_port\030\003 \001(\005\022\021\n\tdata_port\030\004 "
+    "\001(\005\022\032\n\005roles\030\005 \001(\0132\013.exec.Roles\"i\n\024Drill"
+    "ServiceInstance\022\n\n\002id\030\001 \001(\t\022\033\n\023registrat"
+    "ionTimeUTC\030\002 \001(\003\022(\n\010endpoint\030\003 \001(\0132\026.exe"
+    "c.DrillbitEndpoint\"\227\001\n\005Roles\022\027\n\tsql_quer"
+    "y\030\001 \001(\010:\004true\022\032\n\014logical_plan\030\002 \001(\010:\004tru"
+    "e\022\033\n\rphysical_plan\030\003 \001(\010:\004true\022\033\n\rjava_e"
+    "xecutor\030\004 \001(\010:\004true\022\037\n\021distributed_cache"
+    "\030\005 \001(\010:\004trueB3\n\033org.apache.drill.exec.pr"
+    "otoB\022CoordinationProtosH\001", 465);
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
+    "Coordination.proto", &protobuf_RegisterTypes);
+  DrillbitEndpoint::default_instance_ = new DrillbitEndpoint();
+  DrillServiceInstance::default_instance_ = new DrillServiceInstance();
+  Roles::default_instance_ = new Roles();
+  DrillbitEndpoint::default_instance_->InitAsDefaultInstance();
+  DrillServiceInstance::default_instance_->InitAsDefaultInstance();
+  Roles::default_instance_->InitAsDefaultInstance();
+  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_Coordination_2eproto);
+}
+
+// Force AddDescriptors() to be called at static initialization time.
+struct StaticDescriptorInitializer_Coordination_2eproto {
+  StaticDescriptorInitializer_Coordination_2eproto() {
+    protobuf_AddDesc_Coordination_2eproto();
+  }
+} static_descriptor_initializer_Coordination_2eproto_;
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int DrillbitEndpoint::kAddressFieldNumber;
+const int DrillbitEndpoint::kUserPortFieldNumber;
+const int DrillbitEndpoint::kControlPortFieldNumber;
+const int DrillbitEndpoint::kDataPortFieldNumber;
+const int DrillbitEndpoint::kRolesFieldNumber;
+#endif  // !_MSC_VER
+
+DrillbitEndpoint::DrillbitEndpoint()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void DrillbitEndpoint::InitAsDefaultInstance() {
+  roles_ = const_cast< ::exec::Roles*>(&::exec::Roles::default_instance());
+}
+
+DrillbitEndpoint::DrillbitEndpoint(const DrillbitEndpoint& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void DrillbitEndpoint::SharedCtor() {
+  _cached_size_ = 0;
+  address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  user_port_ = 0;
+  control_port_ = 0;
+  data_port_ = 0;
+  roles_ = NULL;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+DrillbitEndpoint::~DrillbitEndpoint() {
+  SharedDtor();
+}
+
+void DrillbitEndpoint::SharedDtor() {
+  if (address_ != &::google::protobuf::internal::kEmptyString) {
+    delete address_;
+  }
+  if (this != default_instance_) {
+    delete roles_;
+  }
+}
+
+void DrillbitEndpoint::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* DrillbitEndpoint::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return DrillbitEndpoint_descriptor_;
+}
+
+const DrillbitEndpoint& DrillbitEndpoint::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_Coordination_2eproto();
+  return *default_instance_;
+}
+
+DrillbitEndpoint* DrillbitEndpoint::default_instance_ = NULL;
+
+DrillbitEndpoint* DrillbitEndpoint::New() const {
+  return new DrillbitEndpoint;
+}
+
+void DrillbitEndpoint::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (has_address()) {
+      if (address_ != &::google::protobuf::internal::kEmptyString) {
+        address_->clear();
+      }
+    }
+    user_port_ = 0;
+    control_port_ = 0;
+    data_port_ = 0;
+    if (has_roles()) {
+      if (roles_ != NULL) roles_->::exec::Roles::Clear();
+    }
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool DrillbitEndpoint::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional string address = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_address()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->address().data(), this->address().length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(16)) goto parse_user_port;
+        break;
+      }
+
+      // optional int32 user_port = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_user_port:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &user_port_)));
+          set_has_user_port();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(24)) goto parse_control_port;
+        break;
+      }
+
+      // optional int32 control_port = 3;
+      case 3: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_control_port:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &control_port_)));
+          set_has_control_port();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(32)) goto parse_data_port;
+        break;
+      }
+
+      // optional int32 data_port = 4;
+      case 4: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_data_port:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &data_port_)));
+          set_has_data_port();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(42)) goto parse_roles;
+        break;
+      }
+
+      // optional .exec.Roles roles = 5;
+      case 5: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_roles:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+               input, mutable_roles()));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void DrillbitEndpoint::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional string address = 1;
+  if (has_address()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->address().data(), this->address().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->address(), output);
+  }
+
+  // optional int32 user_port = 2;
+  if (has_user_port()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->user_port(), output);
+  }
+
+  // optional int32 control_port = 3;
+  if (has_control_port()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->control_port(), output);
+  }
+
+  // optional int32 data_port = 4;
+  if (has_data_port()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->data_port(), output);
+  }
+
+  // optional .exec.Roles roles = 5;
+  if (has_roles()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      5, this->roles(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* DrillbitEndpoint::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional string address = 1;
+  if (has_address()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->address().data(), this->address().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->address(), target);
+  }
+
+  // optional int32 user_port = 2;
+  if (has_user_port()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->user_port(), target);
+  }
+
+  // optional int32 control_port = 3;
+  if (has_control_port()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->control_port(), target);
+  }
+
+  // optional int32 data_port = 4;
+  if (has_data_port()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->data_port(), target);
+  }
+
+  // optional .exec.Roles roles = 5;
+  if (has_roles()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteMessageNoVirtualToArray(
+        5, this->roles(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int DrillbitEndpoint::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional string address = 1;
+    if (has_address()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->address());
+    }
+
+    // optional int32 user_port = 2;
+    if (has_user_port()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->user_port());
+    }
+
+    // optional int32 control_port = 3;
+    if (has_control_port()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->control_port());
+    }
+
+    // optional int32 data_port = 4;
+    if (has_data_port()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->data_port());
+    }
+
+    // optional .exec.Roles roles = 5;
+    if (has_roles()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
+          this->roles());
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void DrillbitEndpoint::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const DrillbitEndpoint* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const DrillbitEndpoint*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void DrillbitEndpoint::MergeFrom(const DrillbitEndpoint& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_address()) {
+      set_address(from.address());
+    }
+    if (from.has_user_port()) {
+      set_user_port(from.user_port());
+    }
+    if (from.has_control_port()) {
+      set_control_port(from.control_port());
+    }
+    if (from.has_data_port()) {
+      set_data_port(from.data_port());
+    }
+    if (from.has_roles()) {
+      mutable_roles()->::exec::Roles::MergeFrom(from.roles());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void DrillbitEndpoint::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DrillbitEndpoint::CopyFrom(const DrillbitEndpoint& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DrillbitEndpoint::IsInitialized() const {
+
+  return true;
+}
+
+void DrillbitEndpoint::Swap(DrillbitEndpoint* other) {
+  if (other != this) {
+    std::swap(address_, other->address_);
+    std::swap(user_port_, other->user_port_);
+    std::swap(control_port_, other->control_port_);
+    std::swap(data_port_, other->data_port_);
+    std::swap(roles_, other->roles_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata DrillbitEndpoint::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = DrillbitEndpoint_descriptor_;
+  metadata.reflection = DrillbitEndpoint_reflection_;
+  return metadata;
+}
+
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int DrillServiceInstance::kIdFieldNumber;
+const int DrillServiceInstance::kRegistrationTimeUTCFieldNumber;
+const int DrillServiceInstance::kEndpointFieldNumber;
+#endif  // !_MSC_VER
+
+DrillServiceInstance::DrillServiceInstance()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void DrillServiceInstance::InitAsDefaultInstance() {
+  endpoint_ = const_cast< ::exec::DrillbitEndpoint*>(&::exec::DrillbitEndpoint::default_instance());
+}
+
+DrillServiceInstance::DrillServiceInstance(const DrillServiceInstance& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void DrillServiceInstance::SharedCtor() {
+  _cached_size_ = 0;
+  id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  registrationtimeutc_ = GOOGLE_LONGLONG(0);
+  endpoint_ = NULL;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+DrillServiceInstance::~DrillServiceInstance() {
+  SharedDtor();
+}
+
+void DrillServiceInstance::SharedDtor() {
+  if (id_ != &::google::protobuf::internal::kEmptyString) {
+    delete id_;
+  }
+  if (this != default_instance_) {
+    delete endpoint_;
+  }
+}
+
+void DrillServiceInstance::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* DrillServiceInstance::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return DrillServiceInstance_descriptor_;
+}
+
+const DrillServiceInstance& DrillServiceInstance::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_Coordination_2eproto();
+  return *default_instance_;
+}
+
+DrillServiceInstance* DrillServiceInstance::default_instance_ = NULL;
+
+DrillServiceInstance* DrillServiceInstance::New() const {
+  return new DrillServiceInstance;
+}
+
+void DrillServiceInstance::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (has_id()) {
+      if (id_ != &::google::protobuf::internal::kEmptyString) {
+        id_->clear();
+      }
+    }
+    registrationtimeutc_ = GOOGLE_LONGLONG(0);
+    if (has_endpoint()) {
+      if (endpoint_ != NULL) endpoint_->::exec::DrillbitEndpoint::Clear();
+    }
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool DrillServiceInstance::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional string id = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_id()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->id().data(), this->id().length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(16)) goto parse_registrationTimeUTC;
+        break;
+      }
+
+      // optional int64 registrationTimeUTC = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_registrationTimeUTC:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &registrationtimeutc_)));
+          set_has_registrationtimeutc();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(26)) goto parse_endpoint;
+        break;
+      }
+
+      // optional .exec.DrillbitEndpoint endpoint = 3;
+      case 3: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_endpoint:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+               input, mutable_endpoint()));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void DrillServiceInstance::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional string id = 1;
+  if (has_id()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->id().data(), this->id().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->id(), output);
+  }
+
+  // optional int64 registrationTimeUTC = 2;
+  if (has_registrationtimeutc()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->registrationtimeutc(), output);
+  }
+
+  // optional .exec.DrillbitEndpoint endpoint = 3;
+  if (has_endpoint()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      3, this->endpoint(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* DrillServiceInstance::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional string id = 1;
+  if (has_id()) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->id().data(), this->id().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->id(), target);
+  }
+
+  // optional int64 registrationTimeUTC = 2;
+  if (has_registrationtimeutc()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->registrationtimeutc(), target);
+  }
+
+  // optional .exec.DrillbitEndpoint endpoint = 3;
+  if (has_endpoint()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteMessageNoVirtualToArray(
+        3, this->endpoint(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int DrillServiceInstance::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional string id = 1;
+    if (has_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->id());
+    }
+
+    // optional int64 registrationTimeUTC = 2;
+    if (has_registrationtimeutc()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int64Size(
+          this->registrationtimeutc());
+    }
+
+    // optional .exec.DrillbitEndpoint endpoint = 3;
+    if (has_endpoint()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
+          this->endpoint());
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void DrillServiceInstance::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const DrillServiceInstance* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const DrillServiceInstance*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void DrillServiceInstance::MergeFrom(const DrillServiceInstance& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_id()) {
+      set_id(from.id());
+    }
+    if (from.has_registrationtimeutc()) {
+      set_registrationtimeutc(from.registrationtimeutc());
+    }
+    if (from.has_endpoint()) {
+      mutable_endpoint()->::exec::DrillbitEndpoint::MergeFrom(from.endpoint());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void DrillServiceInstance::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void DrillServiceInstance::CopyFrom(const DrillServiceInstance& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool DrillServiceInstance::IsInitialized() const {
+
+  return true;
+}
+
+void DrillServiceInstance::Swap(DrillServiceInstance* other) {
+  if (other != this) {
+    std::swap(id_, other->id_);
+    std::swap(registrationtimeutc_, other->registrationtimeutc_);
+    std::swap(endpoint_, other->endpoint_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata DrillServiceInstance::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = DrillServiceInstance_descriptor_;
+  metadata.reflection = DrillServiceInstance_reflection_;
+  return metadata;
+}
+
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int Roles::kSqlQueryFieldNumber;
+const int Roles::kLogicalPlanFieldNumber;
+const int Roles::kPhysicalPlanFieldNumber;
+const int Roles::kJavaExecutorFieldNumber;
+const int Roles::kDistributedCacheFieldNumber;
+#endif  // !_MSC_VER
+
+Roles::Roles()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void Roles::InitAsDefaultInstance() {
+}
+
+Roles::Roles(const Roles& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void Roles::SharedCtor() {
+  _cached_size_ = 0;
+  sql_query_ = true;
+  logical_plan_ = true;
+  physical_plan_ = true;
+  java_executor_ = true;
+  distributed_cache_ = true;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+Roles::~Roles() {
+  SharedDtor();
+}
+
+void Roles::SharedDtor() {
+  if (this != default_instance_) {
+  }
+}
+
+void Roles::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* Roles::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return Roles_descriptor_;
+}
+
+const Roles& Roles::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_Coordination_2eproto();
+  return *default_instance_;
+}
+
+Roles* Roles::default_instance_ = NULL;
+
+Roles* Roles::New() const {
+  return new Roles;
+}
+
+void Roles::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    sql_query_ = true;
+    logical_plan_ = true;
+    physical_plan_ = true;
+    java_executor_ = true;
+    distributed_cache_ = true;
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool Roles::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional bool sql_query = 1 [default = true];
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &sql_query_)));
+          set_has_sql_query();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(16)) goto parse_logical_plan;
+        break;
+      }
+
+      // optional bool logical_plan = 2 [default = true];
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_logical_plan:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &logical_plan_)));
+          set_has_logical_plan();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(24)) goto parse_physical_plan;
+        break;
+      }
+
+      // optional bool physical_plan = 3 [default = true];
+      case 3: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_physical_plan:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &physical_plan_)));
+          set_has_physical_plan();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(32)) goto parse_java_executor;
+        break;
+      }
+
+      // optional bool java_executor = 4 [default = true];
+      case 4: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_java_executor:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &java_executor_)));
+          set_has_java_executor();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(40)) goto parse_distributed_cache;
+        break;
+      }
+
+      // optional bool distributed_cache = 5 [default = true];
+      case 5: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_distributed_cache:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &distributed_cache_)));
+          set_has_distributed_cache();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void Roles::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional bool sql_query = 1 [default = true];
+  if (has_sql_query()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->sql_query(), output);
+  }
+
+  // optional bool logical_plan = 2 [default = true];
+  if (has_logical_plan()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->logical_plan(), output);
+  }
+
+  // optional bool physical_plan = 3 [default = true];
+  if (has_physical_plan()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->physical_plan(), output);
+  }
+
+  // optional bool java_executor = 4 [default = true];
+  if (has_java_executor()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->java_executor(), output);
+  }
+
+  // optional bool distributed_cache = 5 [default = true];
+  if (has_distributed_cache()) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->distributed_cache(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* Roles::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional bool sql_query = 1 [default = true];
+  if (has_sql_query()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->sql_query(), target);
+  }
+
+  // optional bool logical_plan = 2 [default = true];
+  if (has_logical_plan()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(2, this->logical_plan(), target);
+  }
+
+  // optional bool physical_plan = 3 [default = true];
+  if (has_physical_plan()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->physical_plan(), target);
+  }
+
+  // optional bool java_executor = 4 [default = true];
+  if (has_java_executor()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(4, this->java_executor(), target);
+  }
+
+  // optional bool distributed_cache = 5 [default = true];
+  if (has_distributed_cache()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(5, this->distributed_cache(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int Roles::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional bool sql_query = 1 [default = true];
+    if (has_sql_query()) {
+      total_size += 1 + 1;
+    }
+
+    // optional bool logical_plan = 2 [default = true];
+    if (has_logical_plan()) {
+      total_size += 1 + 1;
+    }
+
+    // optional bool physical_plan = 3 [default = true];
+    if (has_physical_plan()) {
+      total_size += 1 + 1;
+    }
+
+    // optional bool java_executor = 4 [default = true];
+    if (has_java_executor()) {
+      total_size += 1 + 1;
+    }
+
+    // optional bool distributed_cache = 5 [default = true];
+    if (has_distributed_cache()) {
+      total_size += 1 + 1;
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void Roles::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const Roles* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const Roles*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void Roles::MergeFrom(const Roles& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_sql_query()) {
+      set_sql_query(from.sql_query());
+    }
+    if (from.has_logical_plan()) {
+      set_logical_plan(from.logical_plan());
+    }
+    if (from.has_physical_plan()) {
+      set_physical_plan(from.physical_plan());
+    }
+    if (from.has_java_executor()) {
+      set_java_executor(from.java_executor());
+    }
+    if (from.has_distributed_cache()) {
+      set_distributed_cache(from.distributed_cache());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void Roles::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Roles::CopyFrom(const Roles& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Roles::IsInitialized() const {
+
+  return true;
+}
+
+void Roles::Swap(Roles* other) {
+  if (other != this) {
+    std::swap(sql_query_, other->sql_query_);
+    std::swap(logical_plan_, other->logical_plan_);
+    std::swap(physical_plan_, other->physical_plan_);
+    std::swap(java_executor_, other->java_executor_);
+    std::swap(distributed_cache_, other->distributed_cache_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata Roles::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = Roles_descriptor_;
+  metadata.reflection = Roles_reflection_;
+  return metadata;
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace exec
+
+// @@protoc_insertion_point(global_scope)

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/e1e5ea0e/contrib/native/client/src/protobuf/Coordination.pb.h
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/Coordination.pb.h b/contrib/native/client/src/protobuf/Coordination.pb.h
new file mode 100644
index 0000000..bea819a
--- /dev/null
+++ b/contrib/native/client/src/protobuf/Coordination.pb.h
@@ -0,0 +1,845 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: Coordination.proto
+
+#ifndef PROTOBUF_Coordination_2eproto__INCLUDED
+#define PROTOBUF_Coordination_2eproto__INCLUDED
+
+#include <string>
+
+#include <google/protobuf/stubs/common.h>
+
+#if GOOGLE_PROTOBUF_VERSION < 2005000
+#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 2005000 < 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>
+// @@protoc_insertion_point(includes)
+
+namespace exec {
+
+// Internal implementation detail -- do not call these.
+void  protobuf_AddDesc_Coordination_2eproto();
+void protobuf_AssignDesc_Coordination_2eproto();
+void protobuf_ShutdownFile_Coordination_2eproto();
+
+class DrillbitEndpoint;
+class DrillServiceInstance;
+class Roles;
+
+// ===================================================================
+
+class DrillbitEndpoint : public ::google::protobuf::Message {
+ public:
+  DrillbitEndpoint();
+  virtual ~DrillbitEndpoint();
+
+  DrillbitEndpoint(const DrillbitEndpoint& from);
+
+  inline DrillbitEndpoint& operator=(const DrillbitEndpoint& 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 DrillbitEndpoint& default_instance();
+
+  void Swap(DrillbitEndpoint* other);
+
+  // implements Message ----------------------------------------------
+
+  DrillbitEndpoint* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const DrillbitEndpoint& from);
+  void MergeFrom(const DrillbitEndpoint& 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 string address = 1;
+  inline bool has_address() const;
+  inline void clear_address();
+  static const int kAddressFieldNumber = 1;
+  inline const ::std::string& address() const;
+  inline void set_address(const ::std::string& value);
+  inline void set_address(const char* value);
+  inline void set_address(const char* value, size_t size);
+  inline ::std::string* mutable_address();
+  inline ::std::string* release_address();
+  inline void set_allocated_address(::std::string* address);
+
+  // optional int32 user_port = 2;
+  inline bool has_user_port() const;
+  inline void clear_user_port();
+  static const int kUserPortFieldNumber = 2;
+  inline ::google::protobuf::int32 user_port() const;
+  inline void set_user_port(::google::protobuf::int32 value);
+
+  // optional int32 control_port = 3;
+  inline bool has_control_port() const;
+  inline void clear_control_port();
+  static const int kControlPortFieldNumber = 3;
+  inline ::google::protobuf::int32 control_port() const;
+  inline void set_control_port(::google::protobuf::int32 value);
+
+  // optional int32 data_port = 4;
+  inline bool has_data_port() const;
+  inline void clear_data_port();
+  static const int kDataPortFieldNumber = 4;
+  inline ::google::protobuf::int32 data_port() const;
+  inline void set_data_port(::google::protobuf::int32 value);
+
+  // optional .exec.Roles roles = 5;
+  inline bool has_roles() const;
+  inline void clear_roles();
+  static const int kRolesFieldNumber = 5;
+  inline const ::exec::Roles& roles() const;
+  inline ::exec::Roles* mutable_roles();
+  inline ::exec::Roles* release_roles();
+  inline void set_allocated_roles(::exec::Roles* roles);
+
+  // @@protoc_insertion_point(class_scope:exec.DrillbitEndpoint)
+ private:
+  inline void set_has_address();
+  inline void clear_has_address();
+  inline void set_has_user_port();
+  inline void clear_has_user_port();
+  inline void set_has_control_port();
+  inline void clear_has_control_port();
+  inline void set_has_data_port();
+  inline void clear_has_data_port();
+  inline void set_has_roles();
+  inline void clear_has_roles();
+
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+  ::std::string* address_;
+  ::google::protobuf::int32 user_port_;
+  ::google::protobuf::int32 control_port_;
+  ::exec::Roles* roles_;
+  ::google::protobuf::int32 data_port_;
+
+  mutable int _cached_size_;
+  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
+
+  friend void  protobuf_AddDesc_Coordination_2eproto();
+  friend void protobuf_AssignDesc_Coordination_2eproto();
+  friend void protobuf_ShutdownFile_Coordination_2eproto();
+
+  void InitAsDefaultInstance();
+  static DrillbitEndpoint* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class DrillServiceInstance : public ::google::protobuf::Message {
+ public:
+  DrillServiceInstance();
+  virtual ~DrillServiceInstance();
+
+  DrillServiceInstance(const DrillServiceInstance& from);
+
+  inline DrillServiceInstance& operator=(const DrillServiceInstance& 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 DrillServiceInstance& default_instance();
+
+  void Swap(DrillServiceInstance* other);
+
+  // implements Message ----------------------------------------------
+
+  DrillServiceInstance* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const DrillServiceInstance& from);
+  void MergeFrom(const DrillServiceInstance& 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 string id = 1;
+  inline bool has_id() const;
+  inline void clear_id();
+  static const int kIdFieldNumber = 1;
+  inline const ::std::string& id() const;
+  inline void set_id(const ::std::string& value);
+  inline void set_id(const char* value);
+  inline void set_id(const char* value, size_t size);
+  inline ::std::string* mutable_id();
+  inline ::std::string* release_id();
+  inline void set_allocated_id(::std::string* id);
+
+  // optional int64 registrationTimeUTC = 2;
+  inline bool has_registrationtimeutc() const;
+  inline void clear_registrationtimeutc();
+  static const int kRegistrationTimeUTCFieldNumber = 2;
+  inline ::google::protobuf::int64 registrationtimeutc() const;
+  inline void set_registrationtimeutc(::google::protobuf::int64 value);
+
+  // optional .exec.DrillbitEndpoint endpoint = 3;
+  inline bool has_endpoint() const;
+  inline void clear_endpoint();
+  static const int kEndpointFieldNumber = 3;
+  inline const ::exec::DrillbitEndpoint& endpoint() const;
+  inline ::exec::DrillbitEndpoint* mutable_endpoint();
+  inline ::exec::DrillbitEndpoint* release_endpoint();
+  inline void set_allocated_endpoint(::exec::DrillbitEndpoint* endpoint);
+
+  // @@protoc_insertion_point(class_scope:exec.DrillServiceInstance)
+ private:
+  inline void set_has_id();
+  inline void clear_has_id();
+  inline void set_has_registrationtimeutc();
+  inline void clear_has_registrationtimeutc();
+  inline void set_has_endpoint();
+  inline void clear_has_endpoint();
+
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+  ::std::string* id_;
+  ::google::protobuf::int64 registrationtimeutc_;
+  ::exec::DrillbitEndpoint* endpoint_;
+
+  mutable int _cached_size_;
+  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
+
+  friend void  protobuf_AddDesc_Coordination_2eproto();
+  friend void protobuf_AssignDesc_Coordination_2eproto();
+  friend void protobuf_ShutdownFile_Coordination_2eproto();
+
+  void InitAsDefaultInstance();
+  static DrillServiceInstance* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class Roles : public ::google::protobuf::Message {
+ public:
+  Roles();
+  virtual ~Roles();
+
+  Roles(const Roles& from);
+
+  inline Roles& operator=(const Roles& 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 Roles& default_instance();
+
+  void Swap(Roles* other);
+
+  // implements Message ----------------------------------------------
+
+  Roles* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const Roles& from);
+  void MergeFrom(const Roles& 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 bool sql_query = 1 [default = true];
+  inline bool has_sql_query() const;
+  inline void clear_sql_query();
+  static const int kSqlQueryFieldNumber = 1;
+  inline bool sql_query() const;
+  inline void set_sql_query(bool value);
+
+  // optional bool logical_plan = 2 [default = true];
+  inline bool has_logical_plan() const;
+  inline void clear_logical_plan();
+  static const int kLogicalPlanFieldNumber = 2;
+  inline bool logical_plan() const;
+  inline void set_logical_plan(bool value);
+
+  // optional bool physical_plan = 3 [default = true];
+  inline bool has_physical_plan() const;
+  inline void clear_physical_plan();
+  static const int kPhysicalPlanFieldNumber = 3;
+  inline bool physical_plan() const;
+  inline void set_physical_plan(bool value);
+
+  // optional bool java_executor = 4 [default = true];
+  inline bool has_java_executor() const;
+  inline void clear_java_executor();
+  static const int kJavaExecutorFieldNumber = 4;
+  inline bool java_executor() const;
+  inline void set_java_executor(bool value);
+
+  // optional bool distributed_cache = 5 [default = true];
+  inline bool has_distributed_cache() const;
+  inline void clear_distributed_cache();
+  static const int kDistributedCacheFieldNumber = 5;
+  inline bool distributed_cache() const;
+  inline void set_distributed_cache(bool value);
+
+  // @@protoc_insertion_point(class_scope:exec.Roles)
+ private:
+  inline void set_has_sql_query();
+  inline void clear_has_sql_query();
+  inline void set_has_logical_plan();
+  inline void clear_has_logical_plan();
+  inline void set_has_physical_plan();
+  inline void clear_has_physical_plan();
+  inline void set_has_java_executor();
+  inline void clear_has_java_executor();
+  inline void set_has_distributed_cache();
+  inline void clear_has_distributed_cache();
+
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+
+  bool sql_query_;
+  bool logical_plan_;
+  bool physical_plan_;
+  bool java_executor_;
+  bool distributed_cache_;
+
+  mutable int _cached_size_;
+  ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32];
+
+  friend void  protobuf_AddDesc_Coordination_2eproto();
+  friend void protobuf_AssignDesc_Coordination_2eproto();
+  friend void protobuf_ShutdownFile_Coordination_2eproto();
+
+  void InitAsDefaultInstance();
+  static Roles* default_instance_;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+// DrillbitEndpoint
+
+// optional string address = 1;
+inline bool DrillbitEndpoint::has_address() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void DrillbitEndpoint::set_has_address() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void DrillbitEndpoint::clear_has_address() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void DrillbitEndpoint::clear_address() {
+  if (address_ != &::google::protobuf::internal::kEmptyString) {
+    address_->clear();
+  }
+  clear_has_address();
+}
+inline const ::std::string& DrillbitEndpoint::address() const {
+  return *address_;
+}
+inline void DrillbitEndpoint::set_address(const ::std::string& value) {
+  set_has_address();
+  if (address_ == &::google::protobuf::internal::kEmptyString) {
+    address_ = new ::std::string;
+  }
+  address_->assign(value);
+}
+inline void DrillbitEndpoint::set_address(const char* value) {
+  set_has_address();
+  if (address_ == &::google::protobuf::internal::kEmptyString) {
+    address_ = new ::std::string;
+  }
+  address_->assign(value);
+}
+inline void DrillbitEndpoint::set_address(const char* value, size_t size) {
+  set_has_address();
+  if (address_ == &::google::protobuf::internal::kEmptyString) {
+    address_ = new ::std::string;
+  }
+  address_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* DrillbitEndpoint::mutable_address() {
+  set_has_address();
+  if (address_ == &::google::protobuf::internal::kEmptyString) {
+    address_ = new ::std::string;
+  }
+  return address_;
+}
+inline ::std::string* DrillbitEndpoint::release_address() {
+  clear_has_address();
+  if (address_ == &::google::protobuf::internal::kEmptyString) {
+    return NULL;
+  } else {
+    ::std::string* temp = address_;
+    address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    return temp;
+  }
+}
+inline void DrillbitEndpoint::set_allocated_address(::std::string* address) {
+  if (address_ != &::google::protobuf::internal::kEmptyString) {
+    delete address_;
+  }
+  if (address) {
+    set_has_address();
+    address_ = address;
+  } else {
+    clear_has_address();
+    address_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  }
+}
+
+// optional int32 user_port = 2;
+inline bool DrillbitEndpoint::has_user_port() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void DrillbitEndpoint::set_has_user_port() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void DrillbitEndpoint::clear_has_user_port() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void DrillbitEndpoint::clear_user_port() {
+  user_port_ = 0;
+  clear_has_user_port();
+}
+inline ::google::protobuf::int32 DrillbitEndpoint::user_port() const {
+  return user_port_;
+}
+inline void DrillbitEndpoint::set_user_port(::google::protobuf::int32 value) {
+  set_has_user_port();
+  user_port_ = value;
+}
+
+// optional int32 control_port = 3;
+inline bool DrillbitEndpoint::has_control_port() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void DrillbitEndpoint::set_has_control_port() {
+  _has_bits_[0] |= 0x00000004u;
+}
+inline void DrillbitEndpoint::clear_has_control_port() {
+  _has_bits_[0] &= ~0x00000004u;
+}
+inline void DrillbitEndpoint::clear_control_port() {
+  control_port_ = 0;
+  clear_has_control_port();
+}
+inline ::google::protobuf::int32 DrillbitEndpoint::control_port() const {
+  return control_port_;
+}
+inline void DrillbitEndpoint::set_control_port(::google::protobuf::int32 value) {
+  set_has_control_port();
+  control_port_ = value;
+}
+
+// optional int32 data_port = 4;
+inline bool DrillbitEndpoint::has_data_port() const {
+  return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void DrillbitEndpoint::set_has_data_port() {
+  _has_bits_[0] |= 0x00000008u;
+}
+inline void DrillbitEndpoint::clear_has_data_port() {
+  _has_bits_[0] &= ~0x00000008u;
+}
+inline void DrillbitEndpoint::clear_data_port() {
+  data_port_ = 0;
+  clear_has_data_port();
+}
+inline ::google::protobuf::int32 DrillbitEndpoint::data_port() const {
+  return data_port_;
+}
+inline void DrillbitEndpoint::set_data_port(::google::protobuf::int32 value) {
+  set_has_data_port();
+  data_port_ = value;
+}
+
+// optional .exec.Roles roles = 5;
+inline bool DrillbitEndpoint::has_roles() const {
+  return (_has_bits_[0] & 0x00000010u) != 0;
+}
+inline void DrillbitEndpoint::set_has_roles() {
+  _has_bits_[0] |= 0x00000010u;
+}
+inline void DrillbitEndpoint::clear_has_roles() {
+  _has_bits_[0] &= ~0x00000010u;
+}
+inline void DrillbitEndpoint::clear_roles() {
+  if (roles_ != NULL) roles_->::exec::Roles::Clear();
+  clear_has_roles();
+}
+inline const ::exec::Roles& DrillbitEndpoint::roles() const {
+  return roles_ != NULL ? *roles_ : *default_instance_->roles_;
+}
+inline ::exec::Roles* DrillbitEndpoint::mutable_roles() {
+  set_has_roles();
+  if (roles_ == NULL) roles_ = new ::exec::Roles;
+  return roles_;
+}
+inline ::exec::Roles* DrillbitEndpoint::release_roles() {
+  clear_has_roles();
+  ::exec::Roles* temp = roles_;
+  roles_ = NULL;
+  return temp;
+}
+inline void DrillbitEndpoint::set_allocated_roles(::exec::Roles* roles) {
+  delete roles_;
+  roles_ = roles;
+  if (roles) {
+    set_has_roles();
+  } else {
+    clear_has_roles();
+  }
+}
+
+// -------------------------------------------------------------------
+
+// DrillServiceInstance
+
+// optional string id = 1;
+inline bool DrillServiceInstance::has_id() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void DrillServiceInstance::set_has_id() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void DrillServiceInstance::clear_has_id() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void DrillServiceInstance::clear_id() {
+  if (id_ != &::google::protobuf::internal::kEmptyString) {
+    id_->clear();
+  }
+  clear_has_id();
+}
+inline const ::std::string& DrillServiceInstance::id() const {
+  return *id_;
+}
+inline void DrillServiceInstance::set_id(const ::std::string& value) {
+  set_has_id();
+  if (id_ == &::google::protobuf::internal::kEmptyString) {
+    id_ = new ::std::string;
+  }
+  id_->assign(value);
+}
+inline void DrillServiceInstance::set_id(const char* value) {
+  set_has_id();
+  if (id_ == &::google::protobuf::internal::kEmptyString) {
+    id_ = new ::std::string;
+  }
+  id_->assign(value);
+}
+inline void DrillServiceInstance::set_id(const char* value, size_t size) {
+  set_has_id();
+  if (id_ == &::google::protobuf::internal::kEmptyString) {
+    id_ = new ::std::string;
+  }
+  id_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* DrillServiceInstance::mutable_id() {
+  set_has_id();
+  if (id_ == &::google::protobuf::internal::kEmptyString) {
+    id_ = new ::std::string;
+  }
+  return id_;
+}
+inline ::std::string* DrillServiceInstance::release_id() {
+  clear_has_id();
+  if (id_ == &::google::protobuf::internal::kEmptyString) {
+    return NULL;
+  } else {
+    ::std::string* temp = id_;
+    id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+    return temp;
+  }
+}
+inline void DrillServiceInstance::set_allocated_id(::std::string* id) {
+  if (id_ != &::google::protobuf::internal::kEmptyString) {
+    delete id_;
+  }
+  if (id) {
+    set_has_id();
+    id_ = id;
+  } else {
+    clear_has_id();
+    id_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
+  }
+}
+
+// optional int64 registrationTimeUTC = 2;
+inline bool DrillServiceInstance::has_registrationtimeutc() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void DrillServiceInstance::set_has_registrationtimeutc() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void DrillServiceInstance::clear_has_registrationtimeutc() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void DrillServiceInstance::clear_registrationtimeutc() {
+  registrationtimeutc_ = GOOGLE_LONGLONG(0);
+  clear_has_registrationtimeutc();
+}
+inline ::google::protobuf::int64 DrillServiceInstance::registrationtimeutc() const {
+  return registrationtimeutc_;
+}
+inline void DrillServiceInstance::set_registrationtimeutc(::google::protobuf::int64 value) {
+  set_has_registrationtimeutc();
+  registrationtimeutc_ = value;
+}
+
+// optional .exec.DrillbitEndpoint endpoint = 3;
+inline bool DrillServiceInstance::has_endpoint() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void DrillServiceInstance::set_has_endpoint() {
+  _has_bits_[0] |= 0x00000004u;
+}
+inline void DrillServiceInstance::clear_has_endpoint() {
+  _has_bits_[0] &= ~0x00000004u;
+}
+inline void DrillServiceInstance::clear_endpoint() {
+  if (endpoint_ != NULL) endpoint_->::exec::DrillbitEndpoint::Clear();
+  clear_has_endpoint();
+}
+inline const ::exec::DrillbitEndpoint& DrillServiceInstance::endpoint() const {
+  return endpoint_ != NULL ? *endpoint_ : *default_instance_->endpoint_;
+}
+inline ::exec::DrillbitEndpoint* DrillServiceInstance::mutable_endpoint() {
+  set_has_endpoint();
+  if (endpoint_ == NULL) endpoint_ = new ::exec::DrillbitEndpoint;
+  return endpoint_;
+}
+inline ::exec::DrillbitEndpoint* DrillServiceInstance::release_endpoint() {
+  clear_has_endpoint();
+  ::exec::DrillbitEndpoint* temp = endpoint_;
+  endpoint_ = NULL;
+  return temp;
+}
+inline void DrillServiceInstance::set_allocated_endpoint(::exec::DrillbitEndpoint* endpoint) {
+  delete endpoint_;
+  endpoint_ = endpoint;
+  if (endpoint) {
+    set_has_endpoint();
+  } else {
+    clear_has_endpoint();
+  }
+}
+
+// -------------------------------------------------------------------
+
+// Roles
+
+// optional bool sql_query = 1 [default = true];
+inline bool Roles::has_sql_query() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void Roles::set_has_sql_query() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void Roles::clear_has_sql_query() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void Roles::clear_sql_query() {
+  sql_query_ = true;
+  clear_has_sql_query();
+}
+inline bool Roles::sql_query() const {
+  return sql_query_;
+}
+inline void Roles::set_sql_query(bool value) {
+  set_has_sql_query();
+  sql_query_ = value;
+}
+
+// optional bool logical_plan = 2 [default = true];
+inline bool Roles::has_logical_plan() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void Roles::set_has_logical_plan() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void Roles::clear_has_logical_plan() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void Roles::clear_logical_plan() {
+  logical_plan_ = true;
+  clear_has_logical_plan();
+}
+inline bool Roles::logical_plan() const {
+  return logical_plan_;
+}
+inline void Roles::set_logical_plan(bool value) {
+  set_has_logical_plan();
+  logical_plan_ = value;
+}
+
+// optional bool physical_plan = 3 [default = true];
+inline bool Roles::has_physical_plan() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void Roles::set_has_physical_plan() {
+  _has_bits_[0] |= 0x00000004u;
+}
+inline void Roles::clear_has_physical_plan() {
+  _has_bits_[0] &= ~0x00000004u;
+}
+inline void Roles::clear_physical_plan() {
+  physical_plan_ = true;
+  clear_has_physical_plan();
+}
+inline bool Roles::physical_plan() const {
+  return physical_plan_;
+}
+inline void Roles::set_physical_plan(bool value) {
+  set_has_physical_plan();
+  physical_plan_ = value;
+}
+
+// optional bool java_executor = 4 [default = true];
+inline bool Roles::has_java_executor() const {
+  return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void Roles::set_has_java_executor() {
+  _has_bits_[0] |= 0x00000008u;
+}
+inline void Roles::clear_has_java_executor() {
+  _has_bits_[0] &= ~0x00000008u;
+}
+inline void Roles::clear_java_executor() {
+  java_executor_ = true;
+  clear_has_java_executor();
+}
+inline bool Roles::java_executor() const {
+  return java_executor_;
+}
+inline void Roles::set_java_executor(bool value) {
+  set_has_java_executor();
+  java_executor_ = value;
+}
+
+// optional bool distributed_cache = 5 [default = true];
+inline bool Roles::has_distributed_cache() const {
+  return (_has_bits_[0] & 0x00000010u) != 0;
+}
+inline void Roles::set_has_distributed_cache() {
+  _has_bits_[0] |= 0x00000010u;
+}
+inline void Roles::clear_has_distributed_cache() {
+  _has_bits_[0] &= ~0x00000010u;
+}
+inline void Roles::clear_distributed_cache() {
+  distributed_cache_ = true;
+  clear_has_distributed_cache();
+}
+inline bool Roles::distributed_cache() const {
+  return distributed_cache_;
+}
+inline void Roles::set_distributed_cache(bool value) {
+  set_has_distributed_cache();
+  distributed_cache_ = value;
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace exec
+
+#ifndef SWIG
+namespace google {
+namespace protobuf {
+
+
+}  // namespace google
+}  // namespace protobuf
+#endif  // SWIG
+
+// @@protoc_insertion_point(global_scope)
+
+#endif  // PROTOBUF_Coordination_2eproto__INCLUDED

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/e1e5ea0e/contrib/native/client/src/protobuf/ExecutionProtos.pb.cc
----------------------------------------------------------------------
diff --git a/contrib/native/client/src/protobuf/ExecutionProtos.pb.cc b/contrib/native/client/src/protobuf/ExecutionProtos.pb.cc
new file mode 100644
index 0000000..a36bd9f
--- /dev/null
+++ b/contrib/native/client/src/protobuf/ExecutionProtos.pb.cc
@@ -0,0 +1,404 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: ExecutionProtos.proto
+
+#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
+#include "ExecutionProtos.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/stubs/once.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+
+namespace exec {
+namespace bit {
+
+namespace {
+
+const ::google::protobuf::Descriptor* FragmentHandle_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  FragmentHandle_reflection_ = NULL;
+
+}  // namespace
+
+
+void protobuf_AssignDesc_ExecutionProtos_2eproto() {
+  protobuf_AddDesc_ExecutionProtos_2eproto();
+  const ::google::protobuf::FileDescriptor* file =
+    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
+      "ExecutionProtos.proto");
+  GOOGLE_CHECK(file != NULL);
+  FragmentHandle_descriptor_ = file->message_type(0);
+  static const int FragmentHandle_offsets_[3] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentHandle, query_id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentHandle, major_fragment_id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentHandle, minor_fragment_id_),
+  };
+  FragmentHandle_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      FragmentHandle_descriptor_,
+      FragmentHandle::default_instance_,
+      FragmentHandle_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentHandle, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FragmentHandle, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(FragmentHandle));
+}
+
+namespace {
+
+GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
+inline void protobuf_AssignDescriptorsOnce() {
+  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
+                 &protobuf_AssignDesc_ExecutionProtos_2eproto);
+}
+
+void protobuf_RegisterTypes(const ::std::string&) {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    FragmentHandle_descriptor_, &FragmentHandle::default_instance());
+}
+
+}  // namespace
+
+void protobuf_ShutdownFile_ExecutionProtos_2eproto() {
+  delete FragmentHandle::default_instance_;
+  delete FragmentHandle_reflection_;
+}
+
+void protobuf_AddDesc_ExecutionProtos_2eproto() {
+  static bool already_here = false;
+  if (already_here) return;
+  already_here = true;
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  ::exec::protobuf_AddDesc_Coordination_2eproto();
+  ::exec::shared::protobuf_AddDesc_UserBitShared_2eproto();
+  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
+    "\n\025ExecutionProtos.proto\022\010exec.bit\032\022Coord"
+    "ination.proto\032\023UserBitShared.proto\"n\n\016Fr"
+    "agmentHandle\022&\n\010query_id\030\001 \001(\0132\024.exec.sh"
+    "ared.QueryId\022\031\n\021major_fragment_id\030\002 \001(\005\022"
+    "\031\n\021minor_fragment_id\030\003 \001(\005B+\n\033org.apache"
+    ".drill.exec.protoB\nExecProtosH\001", 231);
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
+    "ExecutionProtos.proto", &protobuf_RegisterTypes);
+  FragmentHandle::default_instance_ = new FragmentHandle();
+  FragmentHandle::default_instance_->InitAsDefaultInstance();
+  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_ExecutionProtos_2eproto);
+}
+
+// Force AddDescriptors() to be called at static initialization time.
+struct StaticDescriptorInitializer_ExecutionProtos_2eproto {
+  StaticDescriptorInitializer_ExecutionProtos_2eproto() {
+    protobuf_AddDesc_ExecutionProtos_2eproto();
+  }
+} static_descriptor_initializer_ExecutionProtos_2eproto_;
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int FragmentHandle::kQueryIdFieldNumber;
+const int FragmentHandle::kMajorFragmentIdFieldNumber;
+const int FragmentHandle::kMinorFragmentIdFieldNumber;
+#endif  // !_MSC_VER
+
+FragmentHandle::FragmentHandle()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void FragmentHandle::InitAsDefaultInstance() {
+  query_id_ = const_cast< ::exec::shared::QueryId*>(&::exec::shared::QueryId::default_instance());
+}
+
+FragmentHandle::FragmentHandle(const FragmentHandle& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void FragmentHandle::SharedCtor() {
+  _cached_size_ = 0;
+  query_id_ = NULL;
+  major_fragment_id_ = 0;
+  minor_fragment_id_ = 0;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+FragmentHandle::~FragmentHandle() {
+  SharedDtor();
+}
+
+void FragmentHandle::SharedDtor() {
+  if (this != default_instance_) {
+    delete query_id_;
+  }
+}
+
+void FragmentHandle::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* FragmentHandle::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return FragmentHandle_descriptor_;
+}
+
+const FragmentHandle& FragmentHandle::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ExecutionProtos_2eproto();
+  return *default_instance_;
+}
+
+FragmentHandle* FragmentHandle::default_instance_ = NULL;
+
+FragmentHandle* FragmentHandle::New() const {
+  return new FragmentHandle;
+}
+
+void FragmentHandle::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (has_query_id()) {
+      if (query_id_ != NULL) query_id_->::exec::shared::QueryId::Clear();
+    }
+    major_fragment_id_ = 0;
+    minor_fragment_id_ = 0;
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool FragmentHandle::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional .exec.shared.QueryId query_id = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+               input, mutable_query_id()));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(16)) goto parse_major_fragment_id;
+        break;
+      }
+
+      // optional int32 major_fragment_id = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_major_fragment_id:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &major_fragment_id_)));
+          set_has_major_fragment_id();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(24)) goto parse_minor_fragment_id;
+        break;
+      }
+
+      // optional int32 minor_fragment_id = 3;
+      case 3: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_minor_fragment_id:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &minor_fragment_id_)));
+          set_has_minor_fragment_id();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void FragmentHandle::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional .exec.shared.QueryId query_id = 1;
+  if (has_query_id()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, this->query_id(), output);
+  }
+
+  // optional int32 major_fragment_id = 2;
+  if (has_major_fragment_id()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->major_fragment_id(), output);
+  }
+
+  // optional int32 minor_fragment_id = 3;
+  if (has_minor_fragment_id()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->minor_fragment_id(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* FragmentHandle::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional .exec.shared.QueryId query_id = 1;
+  if (has_query_id()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteMessageNoVirtualToArray(
+        1, this->query_id(), target);
+  }
+
+  // optional int32 major_fragment_id = 2;
+  if (has_major_fragment_id()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->major_fragment_id(), target);
+  }
+
+  // optional int32 minor_fragment_id = 3;
+  if (has_minor_fragment_id()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->minor_fragment_id(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int FragmentHandle::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional .exec.shared.QueryId query_id = 1;
+    if (has_query_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
+          this->query_id());
+    }
+
+    // optional int32 major_fragment_id = 2;
+    if (has_major_fragment_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->major_fragment_id());
+    }
+
+    // optional int32 minor_fragment_id = 3;
+    if (has_minor_fragment_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->minor_fragment_id());
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void FragmentHandle::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const FragmentHandle* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const FragmentHandle*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void FragmentHandle::MergeFrom(const FragmentHandle& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_query_id()) {
+      mutable_query_id()->::exec::shared::QueryId::MergeFrom(from.query_id());
+    }
+    if (from.has_major_fragment_id()) {
+      set_major_fragment_id(from.major_fragment_id());
+    }
+    if (from.has_minor_fragment_id()) {
+      set_minor_fragment_id(from.minor_fragment_id());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void FragmentHandle::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void FragmentHandle::CopyFrom(const FragmentHandle& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool FragmentHandle::IsInitialized() const {
+
+  return true;
+}
+
+void FragmentHandle::Swap(FragmentHandle* other) {
+  if (other != this) {
+    std::swap(query_id_, other->query_id_);
+    std::swap(major_fragment_id_, other->major_fragment_id_);
+    std::swap(minor_fragment_id_, other->minor_fragment_id_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata FragmentHandle::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = FragmentHandle_descriptor_;
+  metadata.reflection = FragmentHandle_reflection_;
+  return metadata;
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace bit
+}  // namespace exec
+
+// @@protoc_insertion_point(global_scope)