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

#include "keyapis/telemetry_control/v1/keyapis_telemetry_control_template_v1.pb.h"
#include "keyapis/telemetry_control/v1/keyapis_telemetry_control_template_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* TemplateService_method_names[] = {
  "/keyapis.telemetry_control.v1.TemplateService/GetTemplateDevice",
  "/keyapis.telemetry_control.v1.TemplateService/GetTemplateDeviceList",
  "/keyapis.telemetry_control.v1.TemplateService/GetTemplateDeviceCount",
  "/keyapis.telemetry_control.v1.TemplateService/PostTemplateDevice",
  "/keyapis.telemetry_control.v1.TemplateService/DeleteTemplateDevice",
  "/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicator",
  "/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicatorList",
  "/keyapis.telemetry_control.v1.TemplateService/GetTemplateIndicatorCount",
  "/keyapis.telemetry_control.v1.TemplateService/PostTemplateIndicator",
  "/keyapis.telemetry_control.v1.TemplateService/DeleteTemplateIndicator",
};

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

TemplateService::Stub::Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options)
  : channel_(channel), rpcmethod_GetTemplateDevice_(TemplateService_method_names[0], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetTemplateDeviceList_(TemplateService_method_names[1], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
  , rpcmethod_GetTemplateDeviceCount_(TemplateService_method_names[2], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PostTemplateDevice_(TemplateService_method_names[3], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_DeleteTemplateDevice_(TemplateService_method_names[4], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetTemplateIndicator_(TemplateService_method_names[5], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_GetTemplateIndicatorList_(TemplateService_method_names[6], options.suffix_for_stats(),::grpc::internal::RpcMethod::SERVER_STREAMING, channel)
  , rpcmethod_GetTemplateIndicatorCount_(TemplateService_method_names[7], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_PostTemplateIndicator_(TemplateService_method_names[8], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  , rpcmethod_DeleteTemplateIndicator_(TemplateService_method_names[9], options.suffix_for_stats(),::grpc::internal::RpcMethod::NORMAL_RPC, channel)
  {}

::grpc::Status TemplateService::Stub::GetTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest& request, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetTemplateDevice_, context, request, response);
}

void TemplateService::Stub::async::GetTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateDevice_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::GetTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateDevice_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse>* TemplateService::Stub::PrepareAsyncGetTemplateDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse, ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetTemplateDevice_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse>* TemplateService::Stub::AsyncGetTemplateDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetTemplateDeviceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::ClientReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>* TemplateService::Stub::GetTemplateDeviceListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest& request) {
  return ::grpc::internal::ClientReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>::Create(channel_.get(), rpcmethod_GetTemplateDeviceList_, context, request);
}

void TemplateService::Stub::async::GetTemplateDeviceList(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest* request, ::grpc::ClientReadReactor< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_GetTemplateDeviceList_, context, request, reactor);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>* TemplateService::Stub::AsyncGetTemplateDeviceListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>::Create(channel_.get(), cq, rpcmethod_GetTemplateDeviceList_, context, request, true, tag);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>* TemplateService::Stub::PrepareAsyncGetTemplateDeviceListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>::Create(channel_.get(), cq, rpcmethod_GetTemplateDeviceList_, context, request, false, nullptr);
}

::grpc::Status TemplateService::Stub::GetTemplateDeviceCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest& request, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetTemplateDeviceCount_, context, request, response);
}

void TemplateService::Stub::async::GetTemplateDeviceCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest* request, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateDeviceCount_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::GetTemplateDeviceCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest* request, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateDeviceCount_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse>* TemplateService::Stub::PrepareAsyncGetTemplateDeviceCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetTemplateDeviceCount_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse>* TemplateService::Stub::AsyncGetTemplateDeviceCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetTemplateDeviceCountRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status TemplateService::Stub::PostTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest& request, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PostTemplateDevice_, context, request, response);
}

void TemplateService::Stub::async::PostTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostTemplateDevice_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::PostTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostTemplateDevice_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse>* TemplateService::Stub::PrepareAsyncPostTemplateDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse, ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PostTemplateDevice_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse>* TemplateService::Stub::AsyncPostTemplateDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPostTemplateDeviceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status TemplateService::Stub::DeleteTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest& request, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_DeleteTemplateDevice_, context, request, response);
}

void TemplateService::Stub::async::DeleteTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteTemplateDevice_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::DeleteTemplateDevice(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteTemplateDevice_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse>* TemplateService::Stub::PrepareAsyncDeleteTemplateDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_DeleteTemplateDevice_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse>* TemplateService::Stub::AsyncDeleteTemplateDeviceRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncDeleteTemplateDeviceRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status TemplateService::Stub::GetTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest& request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetTemplateIndicator_, context, request, response);
}

void TemplateService::Stub::async::GetTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateIndicator_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::GetTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateIndicator_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse>* TemplateService::Stub::PrepareAsyncGetTemplateIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse, ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetTemplateIndicator_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse>* TemplateService::Stub::AsyncGetTemplateIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetTemplateIndicatorRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::ClientReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>* TemplateService::Stub::GetTemplateIndicatorListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest& request) {
  return ::grpc::internal::ClientReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>::Create(channel_.get(), rpcmethod_GetTemplateIndicatorList_, context, request);
}

void TemplateService::Stub::async::GetTemplateIndicatorList(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest* request, ::grpc::ClientReadReactor< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>* reactor) {
  ::grpc::internal::ClientCallbackReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>::Create(stub_->channel_.get(), stub_->rpcmethod_GetTemplateIndicatorList_, context, request, reactor);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>* TemplateService::Stub::AsyncGetTemplateIndicatorListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>::Create(channel_.get(), cq, rpcmethod_GetTemplateIndicatorList_, context, request, true, tag);
}

::grpc::ClientAsyncReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>* TemplateService::Stub::PrepareAsyncGetTemplateIndicatorListRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncReaderFactory< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>::Create(channel_.get(), cq, rpcmethod_GetTemplateIndicatorList_, context, request, false, nullptr);
}

::grpc::Status TemplateService::Stub::GetTemplateIndicatorCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest& request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_GetTemplateIndicatorCount_, context, request, response);
}

void TemplateService::Stub::async::GetTemplateIndicatorCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest* request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateIndicatorCount_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::GetTemplateIndicatorCount(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest* request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_GetTemplateIndicatorCount_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse>* TemplateService::Stub::PrepareAsyncGetTemplateIndicatorCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_GetTemplateIndicatorCount_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse>* TemplateService::Stub::AsyncGetTemplateIndicatorCountRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncGetTemplateIndicatorCountRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status TemplateService::Stub::PostTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest& request, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_PostTemplateIndicator_, context, request, response);
}

void TemplateService::Stub::async::PostTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostTemplateIndicator_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::PostTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_PostTemplateIndicator_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse>* TemplateService::Stub::PrepareAsyncPostTemplateIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse, ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_PostTemplateIndicator_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse>* TemplateService::Stub::AsyncPostTemplateIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncPostTemplateIndicatorRaw(context, request, cq);
  result->StartCall();
  return result;
}

::grpc::Status TemplateService::Stub::DeleteTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest& request, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse* response) {
  return ::grpc::internal::BlockingUnaryCall< ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), rpcmethod_DeleteTemplateIndicator_, context, request, response);
}

void TemplateService::Stub::async::DeleteTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse* response, std::function<void(::grpc::Status)> f) {
  ::grpc::internal::CallbackUnaryCall< ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteTemplateIndicator_, context, request, response, std::move(f));
}

void TemplateService::Stub::async::DeleteTemplateIndicator(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse* response, ::grpc::ClientUnaryReactor* reactor) {
  ::grpc::internal::ClientCallbackUnaryFactory::Create< ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(stub_->channel_.get(), stub_->rpcmethod_DeleteTemplateIndicator_, context, request, response, reactor);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse>* TemplateService::Stub::PrepareAsyncDeleteTemplateIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  return ::grpc::internal::ClientAsyncResponseReaderHelper::Create< ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(channel_.get(), cq, rpcmethod_DeleteTemplateIndicator_, context, request);
}

::grpc::ClientAsyncResponseReader< ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse>* TemplateService::Stub::AsyncDeleteTemplateIndicatorRaw(::grpc::ClientContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest& request, ::grpc::CompletionQueue* cq) {
  auto* result =
    this->PrepareAsyncDeleteTemplateIndicatorRaw(context, request, cq);
  result->StartCall();
  return result;
}

TemplateService::Service::Service() {
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[0],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest* req,
             ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse* resp) {
               return service->GetTemplateDevice(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[1],
      ::grpc::internal::RpcMethod::SERVER_STREAMING,
      new ::grpc::internal::ServerStreamingHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest* req,
             ::grpc::ServerWriter<::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>* writer) {
               return service->GetTemplateDeviceList(ctx, req, writer);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[2],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest* req,
             ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse* resp) {
               return service->GetTemplateDeviceCount(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[3],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest* req,
             ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse* resp) {
               return service->PostTemplateDevice(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[4],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest* req,
             ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse* resp) {
               return service->DeleteTemplateDevice(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[5],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest* req,
             ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse* resp) {
               return service->GetTemplateIndicator(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[6],
      ::grpc::internal::RpcMethod::SERVER_STREAMING,
      new ::grpc::internal::ServerStreamingHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest* req,
             ::grpc::ServerWriter<::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>* writer) {
               return service->GetTemplateIndicatorList(ctx, req, writer);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[7],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest* req,
             ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse* resp) {
               return service->GetTemplateIndicatorCount(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[8],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest* req,
             ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse* resp) {
               return service->PostTemplateIndicator(ctx, req, resp);
             }, this)));
  AddMethod(new ::grpc::internal::RpcServiceMethod(
      TemplateService_method_names[9],
      ::grpc::internal::RpcMethod::NORMAL_RPC,
      new ::grpc::internal::RpcMethodHandler< TemplateService::Service, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse, ::grpc::protobuf::MessageLite, ::grpc::protobuf::MessageLite>(
          [](TemplateService::Service* service,
             ::grpc::ServerContext* ctx,
             const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest* req,
             ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse* resp) {
               return service->DeleteTemplateIndicator(ctx, req, resp);
             }, this)));
}

TemplateService::Service::~Service() {
}

::grpc::Status TemplateService::Service::GetTemplateDevice(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::GetTemplateDeviceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::GetTemplateDeviceList(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceListRequest* request, ::grpc::ServerWriter< ::keyapis::telemetry_control::v1::GetTemplateDeviceListResponse>* writer) {
  (void) context;
  (void) request;
  (void) writer;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::GetTemplateDeviceCount(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetTemplateDeviceCountRequest* request, ::keyapis::telemetry_control::v1::GetTemplateDeviceCountResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::PostTemplateDevice(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PostTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::PostTemplateDeviceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::DeleteTemplateDevice(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateDeviceRequest* request, ::keyapis::telemetry_control::v1::DeleteTemplateDeviceResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::GetTemplateIndicator(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::GetTemplateIndicatorList(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorListRequest* request, ::grpc::ServerWriter< ::keyapis::telemetry_control::v1::GetTemplateIndicatorListResponse>* writer) {
  (void) context;
  (void) request;
  (void) writer;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::GetTemplateIndicatorCount(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountRequest* request, ::keyapis::telemetry_control::v1::GetTemplateIndicatorCountResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::PostTemplateIndicator(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::PostTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::PostTemplateIndicatorResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}

::grpc::Status TemplateService::Service::DeleteTemplateIndicator(::grpc::ServerContext* context, const ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorRequest* request, ::keyapis::telemetry_control::v1::DeleteTemplateIndicatorResponse* response) {
  (void) context;
  (void) request;
  (void) response;
  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
}


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

