// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto

#include "keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.pb.h"
#include "keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.grpc.pb.h"

#include <functional>
#include <grpcpp/impl/codegen/async_stream.h>
#include <grpcpp/impl/codegen/async_unary_call.h>
#include <grpcpp/impl/codegen/channel_interface.h>
#include <grpcpp/impl/codegen/client_unary_call.h>
#include <grpcpp/impl/codegen/client_callback.h>
#include <grpcpp/impl/codegen/message_allocator.h>
#include <grpcpp/impl/codegen/method_handler.h>
#include <grpcpp/impl/codegen/rpc_service_method.h>
#include <grpcpp/impl/codegen/server_callback.h>
#include <grpcpp/impl/codegen/server_callback_handlers.h>
#include <grpcpp/impl/codegen/server_context.h>
#include <grpcpp/impl/codegen/service_type.h>
#include <grpcpp/impl/codegen/sync_stream.h>
namespace keyapis {
namespace telemetry_control {
namespace v1 {

static const char* DeviceService_method_names[] = {
  "/keyapis.telemetry_control.v1.DeviceService/PostDeviceFullDuplex",
  "/keyapis.telemetry_control.v1.DeviceService/GetDevice",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceList",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceCount",
  "/keyapis.telemetry_control.v1.DeviceService/PostDeviceReplace",
  "/keyapis.telemetry_control.v1.DeviceService/PostDevice",
  "/keyapis.telemetry_control.v1.DeviceService/DeleteDevice",
  "/keyapis.telemetry_control.v1.DeviceService/PostDeviceIndicator",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceIndicator",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceIndicatorList",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceIndicatorCount",
  "/keyapis.telemetry_control.v1.DeviceService/DeleteDeviceIndicator",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceIndicatorMetricPointList",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceIndicatorMetricPointCount",
  "/keyapis.telemetry_control.v1.DeviceService/PutDeviceIndicatorMetricPointAttach",
  "/keyapis.telemetry_control.v1.DeviceService/PutDeviceIndicatorMetricPointDetach",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceGroupList",
  "/keyapis.telemetry_control.v1.DeviceService/GetDeviceGroupCount",
  "/keyapis.telemetry_control.v1.DeviceService/PutDeviceGroupAttach",
  "/keyapis.telemetry_control.v1.DeviceService/PutDeviceGroupDetach",
};

std::unique_ptr< DeviceService::Stub> DeviceService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) {
  (void)options;
  std::unique_ptr< DeviceService::Stub> stub(new DeviceService::Stub(channel, options));
  return stub;
}

DeviceService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options)
  : channel_(channel), rpcmethod_PostDeviceFullDuplex_(DeviceService_method_names[0], options.suffix_for_stats(),::grpc::internal::RpcMethod::BIDI_STREAMING, channel)
  , rpcmethod_GetDevice_(DeviceService_method_names[1], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetDeviceList_(DeviceService_method_names[2], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
  , rpcmethod_GetDeviceCount_(DeviceService_method_names[3], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PostDeviceReplace_(DeviceService_method_names[4], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PostDevice_(DeviceService_method_names[5], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_DeleteDevice_(DeviceService_method_names[6], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PostDeviceIndicator_(DeviceService_method_names[7], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetDeviceIndicator_(DeviceService_method_names[8], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetDeviceIndicatorList_(DeviceService_method_names[9], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
  , rpcmethod_GetDeviceIndicatorCount_(DeviceService_method_names[10], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_DeleteDeviceIndicator_(DeviceService_method_names[11], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetDeviceIndicatorMetricPointList_(DeviceService_method_names[12], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
  , rpcmethod_GetDeviceIndicatorMetricPointCount_(DeviceService_method_names[13], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PutDeviceIndicatorMetricPointAttach_(DeviceService_method_names[14], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PutDeviceIndicatorMetricPointDetach_(DeviceService_method_names[15], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetDeviceGroupList_(DeviceService_method_names[16], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
  , rpcmethod_GetDeviceGroupCount_(DeviceService_method_names[17], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PutDeviceGroupAttach_(DeviceService_method_names[18], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PutDeviceGroupDetach_(DeviceService_method_names[19], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  {}

::grpc::ClientReaderWriter< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>* DeviceService::Stub::PostDeviceFullDuplexRaw(::grpc::ClientContext* context) {
  return ::grpc::internal::ClientReaderWriterFactory< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>::Create(channel_.get(), rpcmethod_PostDeviceFullDuplex_, context);
}

void DeviceService::Stub::async::PostDeviceFullDuplex(::grpc::ClientContext* context, ::grpc::ClientBidiReactor< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest,::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderWriterFactory< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest,::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_PostDeviceFullDuplex_, context, reactor);
}

::grpc::ClientAsyncReaderWriter< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>* DeviceService::Stub::AsyncPostDeviceFullDuplexRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderWriterFactory< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>::Create(channel_.get(), cq, rpcmethod_PostDeviceFullDuplex_, context, true, tag);
}

::grpc::ClientAsyncReaderWriter< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>* DeviceService::Stub::PrepareAsyncPostDeviceFullDuplexRaw(::grpc::ClientContext* context, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderWriterFactory< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>::Create(channel_.get(), cq, rpcmethod_PostDeviceFullDuplex_, context, false, nullptr);
}

::grpc::Status DeviceService::Stub::GetDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceRequest& request, ::keyapis::telemetry_control::v1::GetDeviceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceRequest, ::keyapis::telemetry_control::v1::GetDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetDevice_, context, request, response);
}

void DeviceService::Stub::async::GetDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceRequest* request, ::keyapis::telemetry_control::v1::GetDeviceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceRequest, ::keyapis::telemetry_control::v1::GetDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDevice_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::GetDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceRequest* request, ::keyapis::telemetry_control::v1::GetDeviceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDevice_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceResponse>* DeviceService::Stub::PrepareAsyncGetDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetDeviceResponse, ::keyapis::telemetry_control::v1::GetDeviceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetDevice_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceResponse>* DeviceService::Stub::AsyncGetDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetDeviceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::ClientReader< ::keyapis::telemetry_control::v1::GetDeviceListResponse>* DeviceService::Stub::GetDeviceListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceListRequest& request) {
  return ::grpc::internal::ClientReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceListResponse>::Create(channel_.get(), rpcmethod_GetDeviceList_, context, request);
}

void DeviceService::Stub::async::GetDeviceList(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceListRequest* request, ::grpc::ClientReadReactor< ::keyapis::telemetry_control::v1::GetDeviceListResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceListResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_GetDeviceList_, context, request, reactor);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceListResponse>* DeviceService::Stub::AsyncGetDeviceListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceList_, context, request, true, tag);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceListResponse>* DeviceService::Stub::PrepareAsyncGetDeviceListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceListRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceList_, context, request, false, nullptr);
}

::grpc::Status DeviceService::Stub::GetDeviceCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceCountRequest& request, ::keyapis::telemetry_control::v1::GetDeviceCountResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceCountRequest, ::keyapis::telemetry_control::v1::GetDeviceCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetDeviceCount_, context, request, response);
}

void DeviceService::Stub::async::GetDeviceCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceCountResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceCountRequest, ::keyapis::telemetry_control::v1::GetDeviceCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceCount_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::GetDeviceCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceCountResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceCount_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceCountResponse>* DeviceService::Stub::PrepareAsyncGetDeviceCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceCountRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetDeviceCountResponse, ::keyapis::telemetry_control::v1::GetDeviceCountRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetDeviceCount_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceCountResponse>* DeviceService::Stub::AsyncGetDeviceCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceCountRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetDeviceCountRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PostDeviceReplace(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest& request, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PostDeviceReplace_, context, request, response);
}

void DeviceService::Stub::async::PostDeviceReplace(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest* request, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostDeviceReplace_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PostDeviceReplace(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest* request, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostDeviceReplace_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse>* DeviceService::Stub::PrepareAsyncPostDeviceReplaceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse, ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PostDeviceReplace_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse>* DeviceService::Stub::AsyncPostDeviceReplaceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPostDeviceReplaceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PostDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceRequest& request, ::keyapis::telemetry_control::v1::PostDeviceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PostDeviceRequest, ::keyapis::telemetry_control::v1::PostDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PostDevice_, context, request, response);
}

void DeviceService::Stub::async::PostDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceRequest* request, ::keyapis::telemetry_control::v1::PostDeviceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PostDeviceRequest, ::keyapis::telemetry_control::v1::PostDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostDevice_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PostDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceRequest* request, ::keyapis::telemetry_control::v1::PostDeviceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostDevice_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostDeviceResponse>* DeviceService::Stub::PrepareAsyncPostDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PostDeviceResponse, ::keyapis::telemetry_control::v1::PostDeviceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PostDevice_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostDeviceResponse>* DeviceService::Stub::AsyncPostDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPostDeviceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::DeleteDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceRequest& request, ::keyapis::telemetry_control::v1::DeleteDeviceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::DeleteDeviceRequest, ::keyapis::telemetry_control::v1::DeleteDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_DeleteDevice_, context, request, response);
}

void DeviceService::Stub::async::DeleteDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceRequest* request, ::keyapis::telemetry_control::v1::DeleteDeviceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::DeleteDeviceRequest, ::keyapis::telemetry_control::v1::DeleteDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteDevice_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::DeleteDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceRequest* request, ::keyapis::telemetry_control::v1::DeleteDeviceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteDevice_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteDeviceResponse>* DeviceService::Stub::PrepareAsyncDeleteDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::DeleteDeviceResponse, ::keyapis::telemetry_control::v1::DeleteDeviceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_DeleteDevice_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteDeviceResponse>* DeviceService::Stub::AsyncDeleteDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncDeleteDeviceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PostDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest& request, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PostDeviceIndicator_, context, request, response);
}

void DeviceService::Stub::async::PostDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostDeviceIndicator_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PostDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostDeviceIndicator_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse>* DeviceService::Stub::PrepareAsyncPostDeviceIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse, ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PostDeviceIndicator_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse>* DeviceService::Stub::AsyncPostDeviceIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPostDeviceIndicatorRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::GetDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest& request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetDeviceIndicator_, context, request, response);
}

void DeviceService::Stub::async::GetDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicator_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::GetDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicator_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse>* DeviceService::Stub::PrepareAsyncGetDeviceIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse, ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetDeviceIndicator_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse>* DeviceService::Stub::AsyncGetDeviceIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetDeviceIndicatorRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::ClientReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>* DeviceService::Stub::GetDeviceIndicatorListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest& request) {
  return ::grpc::internal::ClientReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>::Create(channel_.get(), rpcmethod_GetDeviceIndicatorList_, context, request);
}

void DeviceService::Stub::async::GetDeviceIndicatorList(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest* request, ::grpc::ClientReadReactor< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicatorList_, context, request, reactor);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>* DeviceService::Stub::AsyncGetDeviceIndicatorListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceIndicatorList_, context, request, true, tag);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>* DeviceService::Stub::PrepareAsyncGetDeviceIndicatorListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceIndicatorList_, context, request, false, nullptr);
}

::grpc::Status DeviceService::Stub::GetDeviceIndicatorCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest& request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetDeviceIndicatorCount_, context, request, response);
}

void DeviceService::Stub::async::GetDeviceIndicatorCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicatorCount_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::GetDeviceIndicatorCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicatorCount_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse>* DeviceService::Stub::PrepareAsyncGetDeviceIndicatorCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetDeviceIndicatorCount_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse>* DeviceService::Stub::AsyncGetDeviceIndicatorCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetDeviceIndicatorCountRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::DeleteDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest& request, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_DeleteDeviceIndicator_, context, request, response);
}

void DeviceService::Stub::async::DeleteDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteDeviceIndicator_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::DeleteDeviceIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteDeviceIndicator_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse>* DeviceService::Stub::PrepareAsyncDeleteDeviceIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_DeleteDeviceIndicator_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse>* DeviceService::Stub::AsyncDeleteDeviceIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncDeleteDeviceIndicatorRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::ClientReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>* DeviceService::Stub::GetDeviceIndicatorMetricPointListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest& request) {
  return ::grpc::internal::ClientReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>::Create(channel_.get(), rpcmethod_GetDeviceIndicatorMetricPointList_, context, request);
}

void DeviceService::Stub::async::GetDeviceIndicatorMetricPointList(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest* request, ::grpc::ClientReadReactor< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicatorMetricPointList_, context, request, reactor);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>* DeviceService::Stub::AsyncGetDeviceIndicatorMetricPointListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceIndicatorMetricPointList_, context, request, true, tag);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>* DeviceService::Stub::PrepareAsyncGetDeviceIndicatorMetricPointListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceIndicatorMetricPointList_, context, request, false, nullptr);
}

::grpc::Status DeviceService::Stub::GetDeviceIndicatorMetricPointCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest& request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetDeviceIndicatorMetricPointCount_, context, request, response);
}

void DeviceService::Stub::async::GetDeviceIndicatorMetricPointCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicatorMetricPointCount_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::GetDeviceIndicatorMetricPointCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceIndicatorMetricPointCount_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse>* DeviceService::Stub::PrepareAsyncGetDeviceIndicatorMetricPointCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetDeviceIndicatorMetricPointCount_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse>* DeviceService::Stub::AsyncGetDeviceIndicatorMetricPointCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetDeviceIndicatorMetricPointCountRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PutDeviceIndicatorMetricPointAttach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest& request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PutDeviceIndicatorMetricPointAttach_, context, request, response);
}

void DeviceService::Stub::async::PutDeviceIndicatorMetricPointAttach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceIndicatorMetricPointAttach_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PutDeviceIndicatorMetricPointAttach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceIndicatorMetricPointAttach_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse>* DeviceService::Stub::PrepareAsyncPutDeviceIndicatorMetricPointAttachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PutDeviceIndicatorMetricPointAttach_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse>* DeviceService::Stub::AsyncPutDeviceIndicatorMetricPointAttachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPutDeviceIndicatorMetricPointAttachRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PutDeviceIndicatorMetricPointDetach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest& request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PutDeviceIndicatorMetricPointDetach_, context, request, response);
}

void DeviceService::Stub::async::PutDeviceIndicatorMetricPointDetach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceIndicatorMetricPointDetach_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PutDeviceIndicatorMetricPointDetach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceIndicatorMetricPointDetach_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse>* DeviceService::Stub::PrepareAsyncPutDeviceIndicatorMetricPointDetachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PutDeviceIndicatorMetricPointDetach_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse>* DeviceService::Stub::AsyncPutDeviceIndicatorMetricPointDetachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPutDeviceIndicatorMetricPointDetachRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::ClientReader< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>* DeviceService::Stub::GetDeviceGroupListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest& request) {
  return ::grpc::internal::ClientReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>::Create(channel_.get(), rpcmethod_GetDeviceGroupList_, context, request);
}

void DeviceService::Stub::async::GetDeviceGroupList(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest* request, ::grpc::ClientReadReactor< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_GetDeviceGroupList_, context, request, reactor);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>* DeviceService::Stub::AsyncGetDeviceGroupListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceGroupList_, context, request, true, tag);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>* DeviceService::Stub::PrepareAsyncGetDeviceGroupListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>::Create(channel_.get(), cq, rpcmethod_GetDeviceGroupList_, context, request, false, nullptr);
}

::grpc::Status DeviceService::Stub::GetDeviceGroupCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest& request, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetDeviceGroupCount_, context, request, response);
}

void DeviceService::Stub::async::GetDeviceGroupCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceGroupCount_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::GetDeviceGroupCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetDeviceGroupCount_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse>* DeviceService::Stub::PrepareAsyncGetDeviceGroupCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse, ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetDeviceGroupCount_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse>* DeviceService::Stub::AsyncGetDeviceGroupCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetDeviceGroupCountRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PutDeviceGroupAttach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest& request, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PutDeviceGroupAttach_, context, request, response);
}

void DeviceService::Stub::async::PutDeviceGroupAttach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceGroupAttach_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PutDeviceGroupAttach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceGroupAttach_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse>* DeviceService::Stub::PrepareAsyncPutDeviceGroupAttachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PutDeviceGroupAttach_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse>* DeviceService::Stub::AsyncPutDeviceGroupAttachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPutDeviceGroupAttachRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status DeviceService::Stub::PutDeviceGroupDetach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest& request, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PutDeviceGroupDetach_, context, request, response);
}

void DeviceService::Stub::async::PutDeviceGroupDetach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceGroupDetach_, context, request, response, std::move(f));
}

void DeviceService::Stub::async::PutDeviceGroupDetach(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PutDeviceGroupDetach_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse>* DeviceService::Stub::PrepareAsyncPutDeviceGroupDetachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PutDeviceGroupDetach_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse>* DeviceService::Stub::AsyncPutDeviceGroupDetachRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPutDeviceGroupDetachRaw(context, request, cq);
  result->StartCall();
  return result;
}

DeviceService::Service::Service() {
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[0],
      ::grpc::internal::RpcMethod::BIDI_STREAMING,
      new ::grpc::internal::BidiStreamingHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             ::grpc::ServerReaderWriter<::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse,
             ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest>* stream) {
               return service->PostDeviceFullDuplex(ctx, stream);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[1],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceRequest, ::keyapis::telemetry_control::v1::GetDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceRequest* req,
             ::keyapis::telemetry_control::v1::GetDeviceResponse* resp) {
               return service->GetDevice(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[2],
      ::grpc::internal::RpcMethod::SERVER_STREAMING,
      new ::grpc::internal::ServerStreamingHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceListRequest, ::keyapis::telemetry_control::v1::GetDeviceListResponse>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceListRequest* req,
             ::grpc::ServerWriter<::keyapis::telemetry_control::v1::GetDeviceListResponse>* writer) {
               return service->GetDeviceList(ctx, req, writer);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[3],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceCountRequest, ::keyapis::telemetry_control::v1::GetDeviceCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceCountRequest* req,
             ::keyapis::telemetry_control::v1::GetDeviceCountResponse* resp) {
               return service->GetDeviceCount(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[4],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest* req,
             ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse* resp) {
               return service->PostDeviceReplace(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[5],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PostDeviceRequest, ::keyapis::telemetry_control::v1::PostDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PostDeviceRequest* req,
             ::keyapis::telemetry_control::v1::PostDeviceResponse* resp) {
               return service->PostDevice(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[6],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::DeleteDeviceRequest, ::keyapis::telemetry_control::v1::DeleteDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::DeleteDeviceRequest* req,
             ::keyapis::telemetry_control::v1::DeleteDeviceResponse* resp) {
               return service->DeleteDevice(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[7],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest* req,
             ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse* resp) {
               return service->PostDeviceIndicator(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[8],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest* req,
             ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse* resp) {
               return service->GetDeviceIndicator(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[9],
      ::grpc::internal::RpcMethod::SERVER_STREAMING,
      new ::grpc::internal::ServerStreamingHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest* req,
             ::grpc::ServerWriter<::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>* writer) {
               return service->GetDeviceIndicatorList(ctx, req, writer);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[10],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest* req,
             ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse* resp) {
               return service->GetDeviceIndicatorCount(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[11],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest* req,
             ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse* resp) {
               return service->DeleteDeviceIndicator(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[12],
      ::grpc::internal::RpcMethod::SERVER_STREAMING,
      new ::grpc::internal::ServerStreamingHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest* req,
             ::grpc::ServerWriter<::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>* writer) {
               return service->GetDeviceIndicatorMetricPointList(ctx, req, writer);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[13],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest* req,
             ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse* resp) {
               return service->GetDeviceIndicatorMetricPointCount(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[14],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest* req,
             ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse* resp) {
               return service->PutDeviceIndicatorMetricPointAttach(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[15],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest* req,
             ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse* resp) {
               return service->PutDeviceIndicatorMetricPointDetach(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[16],
      ::grpc::internal::RpcMethod::SERVER_STREAMING,
      new ::grpc::internal::ServerStreamingHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest, ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest* req,
             ::grpc::ServerWriter<::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>* writer) {
               return service->GetDeviceGroupList(ctx, req, writer);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[17],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest* req,
             ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse* resp) {
               return service->GetDeviceGroupCount(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[18],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest* req,
             ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse* resp) {
               return service->PutDeviceGroupAttach(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      DeviceService_method_names[19],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< DeviceService::Service, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](DeviceService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest* req,
             ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse* resp) {
               return service->PutDeviceGroupDetach(ctx, req, resp);
             }, this)));
}

DeviceService::Service::~Service() {
}

::grpc::Status DeviceService::Service::PostDeviceFullDuplex(::grpc::ServerContext* context, ::grpc::ServerReaderWriter< ::keyapis::telemetry_control::v1::PostDeviceFullDuplexResponse, ::keyapis::telemetry_control::v1::PostDeviceFullDuplexRequest>* stream) {
  (void) context;
  (void) stream;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDevice(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceRequest* request, ::keyapis::telemetry_control::v1::GetDeviceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceList(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceListRequest* request, ::grpc::ServerWriter< ::keyapis::telemetry_control::v1::GetDeviceListResponse>* writer) {
  (void) context;
  (void) request;
  (void) writer;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceCount(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceCountResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PostDeviceReplace(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PostDeviceReplaceRequest* request, ::keyapis::telemetry_control::v1::PostDeviceReplaceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PostDevice(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PostDeviceRequest* request, ::keyapis::telemetry_control::v1::PostDeviceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::DeleteDevice(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceRequest* request, ::keyapis::telemetry_control::v1::DeleteDeviceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PostDeviceIndicator(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PostDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::PostDeviceIndicatorResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceIndicator(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceIndicatorList(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorListRequest* request, ::grpc::ServerWriter< ::keyapis::telemetry_control::v1::GetDeviceIndicatorListResponse>* writer) {
  (void) context;
  (void) request;
  (void) writer;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceIndicatorCount(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorCountResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::DeleteDeviceIndicator(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorRequest* request, ::keyapis::telemetry_control::v1::DeleteDeviceIndicatorResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceIndicatorMetricPointList(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListRequest* request, ::grpc::ServerWriter< ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointListResponse>* writer) {
  (void) context;
  (void) request;
  (void) writer;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceIndicatorMetricPointCount(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceIndicatorMetricPointCountResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PutDeviceIndicatorMetricPointAttach(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointAttachResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PutDeviceIndicatorMetricPointDetach(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceIndicatorMetricPointDetachResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceGroupList(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupListRequest* request, ::grpc::ServerWriter< ::keyapis::telemetry_control::v1::GetDeviceGroupListResponse>* writer) {
  (void) context;
  (void) request;
  (void) writer;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::GetDeviceGroupCount(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetDeviceGroupCountRequest* request, ::keyapis::telemetry_control::v1::GetDeviceGroupCountResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PutDeviceGroupAttach(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupAttachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceGroupAttachResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status DeviceService::Service::PutDeviceGroupDetach(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PutDeviceGroupDetachRequest* request, ::keyapis::telemetry_control::v1::PutDeviceGroupDetachResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}


}  // namespace keyapis
}  // namespace telemetry_control
}  // namespace v1

