// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: deviceapis/device/v1/deviceapis_device_rfid_v1.proto
// Original file comments:
//
// Сервис RFID ключей устройства
#ifndef GRPC_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frfid_5fv1_2eproto__INCLUDED
#define GRPC_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frfid_5fv1_2eproto__INCLUDED

#include "deviceapis/device/v1/deviceapis_device_rfid_v1.pb.h"

#include <functional>
#include <grpcpp/impl/codegen/async_generic_service.h>
#include <grpcpp/impl/codegen/async_stream.h>
#include <grpcpp/impl/codegen/async_unary_call.h>
#include <grpcpp/impl/codegen/client_callback.h>
#include <grpcpp/impl/codegen/client_context.h>
#include <grpcpp/impl/codegen/completion_queue.h>
#include <grpcpp/impl/codegen/message_allocator.h>
#include <grpcpp/impl/codegen/method_handler.h>
#include <grpcpp/impl/codegen/proto_utils.h>
#include <grpcpp/impl/codegen/rpc_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/status.h>
#include <grpcpp/impl/codegen/stub_options.h>
#include <grpcpp/impl/codegen/sync_stream.h>

namespace deviceapis {
namespace device {
namespace v1 {

// Сервис RFID ключей устройства
class RfidService final {
 public:
  static constexpr char const* service_full_name() {
    return "deviceapis.device.v1.RfidService";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // Метод удаления единичной сущности Rfid по ключу
    virtual ::grpc::Status DeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::deviceapis::device::v1::DeleteRfidResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidResponse>> AsyncDeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidResponse>>(AsyncDeleteRfidRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidResponse>> PrepareAsyncDeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidResponse>>(PrepareAsyncDeleteRfidRaw(context, request, cq));
    }
    // Метод удаления списка сущностей Rfid по фильтру
    virtual ::grpc::Status DeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::deviceapis::device::v1::DeleteRfidListResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidListResponse>> AsyncDeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidListResponse>>(AsyncDeleteRfidListRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidListResponse>> PrepareAsyncDeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidListResponse>>(PrepareAsyncDeleteRfidListRaw(context, request, cq));
    }
    // Метод получения единичной сущности Rfid по ключу
    virtual ::grpc::Status GetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::deviceapis::device::v1::GetRfidResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidResponse>> AsyncGetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidResponse>>(AsyncGetRfidRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidResponse>> PrepareAsyncGetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidResponse>>(PrepareAsyncGetRfidRaw(context, request, cq));
    }
    // Метод получения количества сущностей Rfid по фильтру
    virtual ::grpc::Status GetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::deviceapis::device::v1::GetRfidCountResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidCountResponse>> AsyncGetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidCountResponse>>(AsyncGetRfidCountRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidCountResponse>> PrepareAsyncGetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidCountResponse>>(PrepareAsyncGetRfidCountRaw(context, request, cq));
    }
    // Метод получения списка сущностей Rfid по фильтру
    virtual ::grpc::Status GetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::deviceapis::device::v1::GetRfidListResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidListResponse>> AsyncGetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidListResponse>>(AsyncGetRfidListRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidListResponse>> PrepareAsyncGetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidListResponse>>(PrepareAsyncGetRfidListRaw(context, request, cq));
    }
    // Метод редактирования сущности Rfid
    virtual ::grpc::Status SaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::deviceapis::device::v1::SaveRfidResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidResponse>> AsyncSaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidResponse>>(AsyncSaveRfidRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidResponse>> PrepareAsyncSaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidResponse>>(PrepareAsyncSaveRfidRaw(context, request, cq));
    }
    // Метод редактирования списка сущностей Rfid
    virtual ::grpc::Status SaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::deviceapis::device::v1::SaveRfidListResponse* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidListResponse>> AsyncSaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidListResponse>>(AsyncSaveRfidListRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidListResponse>> PrepareAsyncSaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidListResponse>>(PrepareAsyncSaveRfidListRaw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      // Метод удаления единичной сущности Rfid по ключу
      virtual void DeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest* request, ::deviceapis::device::v1::DeleteRfidResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void DeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest* request, ::deviceapis::device::v1::DeleteRfidResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод удаления списка сущностей Rfid по фильтру
      virtual void DeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest* request, ::deviceapis::device::v1::DeleteRfidListResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void DeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest* request, ::deviceapis::device::v1::DeleteRfidListResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод получения единичной сущности Rfid по ключу
      virtual void GetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest* request, ::deviceapis::device::v1::GetRfidResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest* request, ::deviceapis::device::v1::GetRfidResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод получения количества сущностей Rfid по фильтру
      virtual void GetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest* request, ::deviceapis::device::v1::GetRfidCountResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest* request, ::deviceapis::device::v1::GetRfidCountResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод получения списка сущностей Rfid по фильтру
      virtual void GetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest* request, ::deviceapis::device::v1::GetRfidListResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest* request, ::deviceapis::device::v1::GetRfidListResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод редактирования сущности Rfid
      virtual void SaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest* request, ::deviceapis::device::v1::SaveRfidResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void SaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest* request, ::deviceapis::device::v1::SaveRfidResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Метод редактирования списка сущностей Rfid
      virtual void SaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest* request, ::deviceapis::device::v1::SaveRfidListResponse* response, std::function<void(::grpc::Status)>) = 0;
      virtual void SaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest* request, ::deviceapis::device::v1::SaveRfidListResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
    };
    typedef class async_interface experimental_async_interface;
    virtual class async_interface* async() { return nullptr; }
    class async_interface* experimental_async() { return async(); }
   private:
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidResponse>* AsyncDeleteRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidResponse>* PrepareAsyncDeleteRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidListResponse>* AsyncDeleteRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::DeleteRfidListResponse>* PrepareAsyncDeleteRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidResponse>* AsyncGetRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidResponse>* PrepareAsyncGetRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidCountResponse>* AsyncGetRfidCountRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidCountResponse>* PrepareAsyncGetRfidCountRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidListResponse>* AsyncGetRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::GetRfidListResponse>* PrepareAsyncGetRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidResponse>* AsyncSaveRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidResponse>* PrepareAsyncSaveRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidListResponse>* AsyncSaveRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::deviceapis::device::v1::SaveRfidListResponse>* PrepareAsyncSaveRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) = 0;
  };
  class Stub final : public StubInterface {
   public:
    Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
    ::grpc::Status DeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::deviceapis::device::v1::DeleteRfidResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidResponse>> AsyncDeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidResponse>>(AsyncDeleteRfidRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidResponse>> PrepareAsyncDeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidResponse>>(PrepareAsyncDeleteRfidRaw(context, request, cq));
    }
    ::grpc::Status DeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::deviceapis::device::v1::DeleteRfidListResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidListResponse>> AsyncDeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidListResponse>>(AsyncDeleteRfidListRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidListResponse>> PrepareAsyncDeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidListResponse>>(PrepareAsyncDeleteRfidListRaw(context, request, cq));
    }
    ::grpc::Status GetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::deviceapis::device::v1::GetRfidResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidResponse>> AsyncGetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidResponse>>(AsyncGetRfidRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidResponse>> PrepareAsyncGetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidResponse>>(PrepareAsyncGetRfidRaw(context, request, cq));
    }
    ::grpc::Status GetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::deviceapis::device::v1::GetRfidCountResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidCountResponse>> AsyncGetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidCountResponse>>(AsyncGetRfidCountRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidCountResponse>> PrepareAsyncGetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidCountResponse>>(PrepareAsyncGetRfidCountRaw(context, request, cq));
    }
    ::grpc::Status GetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::deviceapis::device::v1::GetRfidListResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidListResponse>> AsyncGetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidListResponse>>(AsyncGetRfidListRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidListResponse>> PrepareAsyncGetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidListResponse>>(PrepareAsyncGetRfidListRaw(context, request, cq));
    }
    ::grpc::Status SaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::deviceapis::device::v1::SaveRfidResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidResponse>> AsyncSaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidResponse>>(AsyncSaveRfidRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidResponse>> PrepareAsyncSaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidResponse>>(PrepareAsyncSaveRfidRaw(context, request, cq));
    }
    ::grpc::Status SaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::deviceapis::device::v1::SaveRfidListResponse* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidListResponse>> AsyncSaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidListResponse>>(AsyncSaveRfidListRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidListResponse>> PrepareAsyncSaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidListResponse>>(PrepareAsyncSaveRfidListRaw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void DeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest* request, ::deviceapis::device::v1::DeleteRfidResponse* response, std::function<void(::grpc::Status)>) override;
      void DeleteRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest* request, ::deviceapis::device::v1::DeleteRfidResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void DeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest* request, ::deviceapis::device::v1::DeleteRfidListResponse* response, std::function<void(::grpc::Status)>) override;
      void DeleteRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest* request, ::deviceapis::device::v1::DeleteRfidListResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest* request, ::deviceapis::device::v1::GetRfidResponse* response, std::function<void(::grpc::Status)>) override;
      void GetRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest* request, ::deviceapis::device::v1::GetRfidResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest* request, ::deviceapis::device::v1::GetRfidCountResponse* response, std::function<void(::grpc::Status)>) override;
      void GetRfidCount(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest* request, ::deviceapis::device::v1::GetRfidCountResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest* request, ::deviceapis::device::v1::GetRfidListResponse* response, std::function<void(::grpc::Status)>) override;
      void GetRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest* request, ::deviceapis::device::v1::GetRfidListResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void SaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest* request, ::deviceapis::device::v1::SaveRfidResponse* response, std::function<void(::grpc::Status)>) override;
      void SaveRfid(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest* request, ::deviceapis::device::v1::SaveRfidResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
      void SaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest* request, ::deviceapis::device::v1::SaveRfidListResponse* response, std::function<void(::grpc::Status)>) override;
      void SaveRfidList(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest* request, ::deviceapis::device::v1::SaveRfidListResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
     private:
      friend class Stub;
      explicit async(Stub* stub): stub_(stub) { }
      Stub* stub() { return stub_; }
      Stub* stub_;
    };
    class async* async() override { return &async_stub_; }

   private:
    std::shared_ptr< ::grpc::ChannelInterface> channel_;
    class async async_stub_{this};
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidResponse>* AsyncDeleteRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidResponse>* PrepareAsyncDeleteRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidListResponse>* AsyncDeleteRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::DeleteRfidListResponse>* PrepareAsyncDeleteRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidResponse>* AsyncGetRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidResponse>* PrepareAsyncGetRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidCountResponse>* AsyncGetRfidCountRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidCountResponse>* PrepareAsyncGetRfidCountRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidCountRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidListResponse>* AsyncGetRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::GetRfidListResponse>* PrepareAsyncGetRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::GetRfidListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidResponse>* AsyncSaveRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidResponse>* PrepareAsyncSaveRfidRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidListResponse>* AsyncSaveRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::deviceapis::device::v1::SaveRfidListResponse>* PrepareAsyncSaveRfidListRaw(::grpc::ClientContext* context, const ::deviceapis::device::v1::SaveRfidListRequest& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_DeleteRfid_;
    const ::grpc::internal::RpcMethod rpcmethod_DeleteRfidList_;
    const ::grpc::internal::RpcMethod rpcmethod_GetRfid_;
    const ::grpc::internal::RpcMethod rpcmethod_GetRfidCount_;
    const ::grpc::internal::RpcMethod rpcmethod_GetRfidList_;
    const ::grpc::internal::RpcMethod rpcmethod_SaveRfid_;
    const ::grpc::internal::RpcMethod rpcmethod_SaveRfidList_;
  };
  static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());

  class Service : public ::grpc::Service {
   public:
    Service();
    virtual ~Service();
    // Метод удаления единичной сущности Rfid по ключу
    virtual ::grpc::Status DeleteRfid(::grpc::ServerContext* context, const ::deviceapis::device::v1::DeleteRfidRequest* request, ::deviceapis::device::v1::DeleteRfidResponse* response);
    // Метод удаления списка сущностей Rfid по фильтру
    virtual ::grpc::Status DeleteRfidList(::grpc::ServerContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest* request, ::deviceapis::device::v1::DeleteRfidListResponse* response);
    // Метод получения единичной сущности Rfid по ключу
    virtual ::grpc::Status GetRfid(::grpc::ServerContext* context, const ::deviceapis::device::v1::GetRfidRequest* request, ::deviceapis::device::v1::GetRfidResponse* response);
    // Метод получения количества сущностей Rfid по фильтру
    virtual ::grpc::Status GetRfidCount(::grpc::ServerContext* context, const ::deviceapis::device::v1::GetRfidCountRequest* request, ::deviceapis::device::v1::GetRfidCountResponse* response);
    // Метод получения списка сущностей Rfid по фильтру
    virtual ::grpc::Status GetRfidList(::grpc::ServerContext* context, const ::deviceapis::device::v1::GetRfidListRequest* request, ::deviceapis::device::v1::GetRfidListResponse* response);
    // Метод редактирования сущности Rfid
    virtual ::grpc::Status SaveRfid(::grpc::ServerContext* context, const ::deviceapis::device::v1::SaveRfidRequest* request, ::deviceapis::device::v1::SaveRfidResponse* response);
    // Метод редактирования списка сущностей Rfid
    virtual ::grpc::Status SaveRfidList(::grpc::ServerContext* context, const ::deviceapis::device::v1::SaveRfidListRequest* request, ::deviceapis::device::v1::SaveRfidListResponse* response);
  };
  template <class BaseClass>
  class WithAsyncMethod_DeleteRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_DeleteRfid() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_DeleteRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteRfid(::grpc::ServerContext* context, ::deviceapis::device::v1::DeleteRfidRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::DeleteRfidResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_DeleteRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_DeleteRfidList() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_DeleteRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteRfidList(::grpc::ServerContext* context, ::deviceapis::device::v1::DeleteRfidListRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::DeleteRfidListResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetRfid() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_GetRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRfid(::grpc::ServerContext* context, ::deviceapis::device::v1::GetRfidRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::GetRfidResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetRfidCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetRfidCount() {
      ::grpc::Service::MarkMethodAsync(3);
    }
    ~WithAsyncMethod_GetRfidCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidCount(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRfidCount(::grpc::ServerContext* context, ::deviceapis::device::v1::GetRfidCountRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::GetRfidCountResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetRfidList() {
      ::grpc::Service::MarkMethodAsync(4);
    }
    ~WithAsyncMethod_GetRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRfidList(::grpc::ServerContext* context, ::deviceapis::device::v1::GetRfidListRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::GetRfidListResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SaveRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SaveRfid() {
      ::grpc::Service::MarkMethodAsync(5);
    }
    ~WithAsyncMethod_SaveRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSaveRfid(::grpc::ServerContext* context, ::deviceapis::device::v1::SaveRfidRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::SaveRfidResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_SaveRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_SaveRfidList() {
      ::grpc::Service::MarkMethodAsync(6);
    }
    ~WithAsyncMethod_SaveRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSaveRfidList(::grpc::ServerContext* context, ::deviceapis::device::v1::SaveRfidListRequest* request, ::grpc::ServerAsyncResponseWriter< ::deviceapis::device::v1::SaveRfidListResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  typedef WithAsyncMethod_DeleteRfid<WithAsyncMethod_DeleteRfidList<WithAsyncMethod_GetRfid<WithAsyncMethod_GetRfidCount<WithAsyncMethod_GetRfidList<WithAsyncMethod_SaveRfid<WithAsyncMethod_SaveRfidList<Service > > > > > > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_DeleteRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_DeleteRfid() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::DeleteRfidRequest, ::deviceapis::device::v1::DeleteRfidResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::DeleteRfidRequest* request, ::deviceapis::device::v1::DeleteRfidResponse* response) { return this->DeleteRfid(context, request, response); }));}
    void SetMessageAllocatorFor_DeleteRfid(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::DeleteRfidRequest, ::deviceapis::device::v1::DeleteRfidResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::DeleteRfidRequest, ::deviceapis::device::v1::DeleteRfidResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_DeleteRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteRfid(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_DeleteRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_DeleteRfidList() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::DeleteRfidListRequest, ::deviceapis::device::v1::DeleteRfidListResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::DeleteRfidListRequest* request, ::deviceapis::device::v1::DeleteRfidListResponse* response) { return this->DeleteRfidList(context, request, response); }));}
    void SetMessageAllocatorFor_DeleteRfidList(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::DeleteRfidListRequest, ::deviceapis::device::v1::DeleteRfidListResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::DeleteRfidListRequest, ::deviceapis::device::v1::DeleteRfidListResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_DeleteRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteRfidList(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetRfid() {
      ::grpc::Service::MarkMethodCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::GetRfidRequest, ::deviceapis::device::v1::GetRfidResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::GetRfidRequest* request, ::deviceapis::device::v1::GetRfidResponse* response) { return this->GetRfid(context, request, response); }));}
    void SetMessageAllocatorFor_GetRfid(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::GetRfidRequest, ::deviceapis::device::v1::GetRfidResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(2);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::GetRfidRequest, ::deviceapis::device::v1::GetRfidResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRfid(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetRfidCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetRfidCount() {
      ::grpc::Service::MarkMethodCallback(3,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::GetRfidCountRequest, ::deviceapis::device::v1::GetRfidCountResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::GetRfidCountRequest* request, ::deviceapis::device::v1::GetRfidCountResponse* response) { return this->GetRfidCount(context, request, response); }));}
    void SetMessageAllocatorFor_GetRfidCount(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::GetRfidCountRequest, ::deviceapis::device::v1::GetRfidCountResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(3);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::GetRfidCountRequest, ::deviceapis::device::v1::GetRfidCountResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetRfidCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidCount(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRfidCount(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetRfidList() {
      ::grpc::Service::MarkMethodCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::GetRfidListRequest, ::deviceapis::device::v1::GetRfidListResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::GetRfidListRequest* request, ::deviceapis::device::v1::GetRfidListResponse* response) { return this->GetRfidList(context, request, response); }));}
    void SetMessageAllocatorFor_GetRfidList(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::GetRfidListRequest, ::deviceapis::device::v1::GetRfidListResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::GetRfidListRequest, ::deviceapis::device::v1::GetRfidListResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRfidList(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SaveRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SaveRfid() {
      ::grpc::Service::MarkMethodCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::SaveRfidRequest, ::deviceapis::device::v1::SaveRfidResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::SaveRfidRequest* request, ::deviceapis::device::v1::SaveRfidResponse* response) { return this->SaveRfid(context, request, response); }));}
    void SetMessageAllocatorFor_SaveRfid(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::SaveRfidRequest, ::deviceapis::device::v1::SaveRfidResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::SaveRfidRequest, ::deviceapis::device::v1::SaveRfidResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_SaveRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SaveRfid(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_SaveRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_SaveRfidList() {
      ::grpc::Service::MarkMethodCallback(6,
          new ::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::SaveRfidListRequest, ::deviceapis::device::v1::SaveRfidListResponse>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::deviceapis::device::v1::SaveRfidListRequest* request, ::deviceapis::device::v1::SaveRfidListResponse* response) { return this->SaveRfidList(context, request, response); }));}
    void SetMessageAllocatorFor_SaveRfidList(
        ::grpc::MessageAllocator< ::deviceapis::device::v1::SaveRfidListRequest, ::deviceapis::device::v1::SaveRfidListResponse>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(6);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::deviceapis::device::v1::SaveRfidListRequest, ::deviceapis::device::v1::SaveRfidListResponse>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_SaveRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SaveRfidList(
      ::grpc::CallbackServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_DeleteRfid<WithCallbackMethod_DeleteRfidList<WithCallbackMethod_GetRfid<WithCallbackMethod_GetRfidCount<WithCallbackMethod_GetRfidList<WithCallbackMethod_SaveRfid<WithCallbackMethod_SaveRfidList<Service > > > > > > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_DeleteRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_DeleteRfid() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_DeleteRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DeleteRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_DeleteRfidList() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_DeleteRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetRfid() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_GetRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetRfidCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetRfidCount() {
      ::grpc::Service::MarkMethodGeneric(3);
    }
    ~WithGenericMethod_GetRfidCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidCount(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetRfidList() {
      ::grpc::Service::MarkMethodGeneric(4);
    }
    ~WithGenericMethod_GetRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SaveRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SaveRfid() {
      ::grpc::Service::MarkMethodGeneric(5);
    }
    ~WithGenericMethod_SaveRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_SaveRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_SaveRfidList() {
      ::grpc::Service::MarkMethodGeneric(6);
    }
    ~WithGenericMethod_SaveRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_DeleteRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_DeleteRfid() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_DeleteRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteRfid(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(0, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_DeleteRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_DeleteRfidList() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_DeleteRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDeleteRfidList(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(1, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetRfid() {
      ::grpc::Service::MarkMethodRaw(2);
    }
    ~WithRawMethod_GetRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRfid(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(2, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetRfidCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetRfidCount() {
      ::grpc::Service::MarkMethodRaw(3);
    }
    ~WithRawMethod_GetRfidCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidCount(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRfidCount(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(3, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetRfidList() {
      ::grpc::Service::MarkMethodRaw(4);
    }
    ~WithRawMethod_GetRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRfidList(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(4, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SaveRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SaveRfid() {
      ::grpc::Service::MarkMethodRaw(5);
    }
    ~WithRawMethod_SaveRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSaveRfid(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(5, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_SaveRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_SaveRfidList() {
      ::grpc::Service::MarkMethodRaw(6);
    }
    ~WithRawMethod_SaveRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestSaveRfidList(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncUnary(6, context, request, response, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_DeleteRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_DeleteRfid() {
      ::grpc::Service::MarkMethodRawCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->DeleteRfid(context, request, response); }));
    }
    ~WithRawCallbackMethod_DeleteRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteRfid(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_DeleteRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_DeleteRfidList() {
      ::grpc::Service::MarkMethodRawCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->DeleteRfidList(context, request, response); }));
    }
    ~WithRawCallbackMethod_DeleteRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DeleteRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DeleteRfidList(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetRfid() {
      ::grpc::Service::MarkMethodRawCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetRfid(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRfid(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetRfidCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetRfidCount() {
      ::grpc::Service::MarkMethodRawCallback(3,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetRfidCount(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetRfidCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidCount(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRfidCount(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetRfidList() {
      ::grpc::Service::MarkMethodRawCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetRfidList(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRfidList(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SaveRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SaveRfid() {
      ::grpc::Service::MarkMethodRawCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SaveRfid(context, request, response); }));
    }
    ~WithRawCallbackMethod_SaveRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SaveRfid(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_SaveRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_SaveRfidList() {
      ::grpc::Service::MarkMethodRawCallback(6,
          new ::grpc::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SaveRfidList(context, request, response); }));
    }
    ~WithRawCallbackMethod_SaveRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status SaveRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* SaveRfidList(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeleteRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_DeleteRfid() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::DeleteRfidRequest, ::deviceapis::device::v1::DeleteRfidResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::DeleteRfidRequest, ::deviceapis::device::v1::DeleteRfidResponse>* streamer) {
                       return this->StreamedDeleteRfid(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_DeleteRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeleteRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeleteRfid(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::DeleteRfidRequest,::deviceapis::device::v1::DeleteRfidResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DeleteRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_DeleteRfidList() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::DeleteRfidListRequest, ::deviceapis::device::v1::DeleteRfidListResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::DeleteRfidListRequest, ::deviceapis::device::v1::DeleteRfidListResponse>* streamer) {
                       return this->StreamedDeleteRfidList(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_DeleteRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DeleteRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::DeleteRfidListRequest* /*request*/, ::deviceapis::device::v1::DeleteRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDeleteRfidList(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::DeleteRfidListRequest,::deviceapis::device::v1::DeleteRfidListResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetRfid() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::GetRfidRequest, ::deviceapis::device::v1::GetRfidResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::GetRfidRequest, ::deviceapis::device::v1::GetRfidResponse>* streamer) {
                       return this->StreamedGetRfid(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidRequest* /*request*/, ::deviceapis::device::v1::GetRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetRfid(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::GetRfidRequest,::deviceapis::device::v1::GetRfidResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetRfidCount : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetRfidCount() {
      ::grpc::Service::MarkMethodStreamed(3,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::GetRfidCountRequest, ::deviceapis::device::v1::GetRfidCountResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::GetRfidCountRequest, ::deviceapis::device::v1::GetRfidCountResponse>* streamer) {
                       return this->StreamedGetRfidCount(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetRfidCount() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetRfidCount(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidCountRequest* /*request*/, ::deviceapis::device::v1::GetRfidCountResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetRfidCount(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::GetRfidCountRequest,::deviceapis::device::v1::GetRfidCountResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetRfidList() {
      ::grpc::Service::MarkMethodStreamed(4,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::GetRfidListRequest, ::deviceapis::device::v1::GetRfidListResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::GetRfidListRequest, ::deviceapis::device::v1::GetRfidListResponse>* streamer) {
                       return this->StreamedGetRfidList(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::GetRfidListRequest* /*request*/, ::deviceapis::device::v1::GetRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetRfidList(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::GetRfidListRequest,::deviceapis::device::v1::GetRfidListResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_SaveRfid : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_SaveRfid() {
      ::grpc::Service::MarkMethodStreamed(5,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::SaveRfidRequest, ::deviceapis::device::v1::SaveRfidResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::SaveRfidRequest, ::deviceapis::device::v1::SaveRfidResponse>* streamer) {
                       return this->StreamedSaveRfid(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_SaveRfid() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SaveRfid(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidRequest* /*request*/, ::deviceapis::device::v1::SaveRfidResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedSaveRfid(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::SaveRfidRequest,::deviceapis::device::v1::SaveRfidResponse>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_SaveRfidList : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_SaveRfidList() {
      ::grpc::Service::MarkMethodStreamed(6,
        new ::grpc::internal::StreamedUnaryHandler<
          ::deviceapis::device::v1::SaveRfidListRequest, ::deviceapis::device::v1::SaveRfidListResponse>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::deviceapis::device::v1::SaveRfidListRequest, ::deviceapis::device::v1::SaveRfidListResponse>* streamer) {
                       return this->StreamedSaveRfidList(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_SaveRfidList() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status SaveRfidList(::grpc::ServerContext* /*context*/, const ::deviceapis::device::v1::SaveRfidListRequest* /*request*/, ::deviceapis::device::v1::SaveRfidListResponse* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedSaveRfidList(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::deviceapis::device::v1::SaveRfidListRequest,::deviceapis::device::v1::SaveRfidListResponse>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_DeleteRfid<WithStreamedUnaryMethod_DeleteRfidList<WithStreamedUnaryMethod_GetRfid<WithStreamedUnaryMethod_GetRfidCount<WithStreamedUnaryMethod_GetRfidList<WithStreamedUnaryMethod_SaveRfid<WithStreamedUnaryMethod_SaveRfidList<Service > > > > > > > StreamedUnaryService;
  typedef Service SplitStreamedService;
  typedef WithStreamedUnaryMethod_DeleteRfid<WithStreamedUnaryMethod_DeleteRfidList<WithStreamedUnaryMethod_GetRfid<WithStreamedUnaryMethod_GetRfidCount<WithStreamedUnaryMethod_GetRfidList<WithStreamedUnaryMethod_SaveRfid<WithStreamedUnaryMethod_SaveRfidList<Service > > > > > > > StreamedService;
};

}  // namespace v1
}  // namespace device
}  // namespace deviceapis


#endif  // GRPC_deviceapis_2fdevice_2fv1_2fdeviceapis_5fdevice_5frfid_5fv1_2eproto__INCLUDED
