// Generated by the gRPC C++ plugin.
// If you make any local change, they will be lost.
// source: fastnetmon_internal_api.proto
#ifndef GRPC_fastnetmon_5finternal_5fapi_2eproto__INCLUDED
#define GRPC_fastnetmon_5finternal_5fapi_2eproto__INCLUDED

#include "fastnetmon_internal_api.pb.h"

#include <functional>
#include <grpcpp/generic/async_generic_service.h>
#include <grpcpp/support/async_stream.h>
#include <grpcpp/support/async_unary_call.h>
#include <grpcpp/support/client_callback.h>
#include <grpcpp/client_context.h>
#include <grpcpp/completion_queue.h>
#include <grpcpp/support/message_allocator.h>
#include <grpcpp/support/method_handler.h>
#include <grpcpp/impl/proto_utils.h>
#include <grpcpp/impl/rpc_method.h>
#include <grpcpp/support/server_callback.h>
#include <grpcpp/impl/server_callback_handlers.h>
#include <grpcpp/server_context.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/support/status.h>
#include <grpcpp/support/stub_options.h>
#include <grpcpp/support/sync_stream.h>
#include <grpcpp/ports_def.inc>

namespace fastnetmoninternal {

class Fastnetmon final {
 public:
  static constexpr char const* service_full_name() {
    return "fastnetmoninternal.Fastnetmon";
  }
  class StubInterface {
   public:
    virtual ~StubInterface() {}
    // TODO: legacy to remove and replace by DisableMitigation
    virtual ::grpc::Status ExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::fastnetmoninternal::ExecuteBanReply* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>> AsyncExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>>(AsyncExecuteUnBanRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>> PrepareAsyncExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>>(PrepareAsyncExecuteUnBanRaw(context, request, cq));
    }
    // Pings gRPC server to check availability
    virtual ::grpc::Status Ping(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::fastnetmoninternal::PingReply* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::PingReply>> AsyncPing(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::PingReply>>(AsyncPingRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::PingReply>> PrepareAsyncPing(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::PingReply>>(PrepareAsyncPingRaw(context, request, cq));
    }
    // Returns current running version of FastNetMon
    virtual ::grpc::Status GetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::fastnetmoninternal::GetRunningVersionReply* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::GetRunningVersionReply>> AsyncGetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::GetRunningVersionReply>>(AsyncGetRunningVersionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::GetRunningVersionReply>> PrepareAsyncGetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::GetRunningVersionReply>>(PrepareAsyncGetRunningVersionRaw(context, request, cq));
    }
    // Get standard blacklist
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::BanListReply>> GetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::BanListReply>>(GetBanlistRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::BanListReply>> AsyncGetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::BanListReply>>(AsyncGetBanlistRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::BanListReply>> PrepareAsyncGetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::BanListReply>>(PrepareAsyncGetBanlistRaw(context, request, cq));
    }
    // Block hosts
    virtual ::grpc::Status ExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::fastnetmoninternal::ExecuteBanReply* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>> AsyncExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>>(AsyncExecuteBanRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>> PrepareAsyncExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>>(PrepareAsyncExecuteBanRaw(context, request, cq));
    }
    // For local hosts
    virtual ::grpc::Status DisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::fastnetmoninternal::DisableMitigationReply* response) = 0;
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::DisableMitigationReply>> AsyncDisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::DisableMitigationReply>>(AsyncDisableMitigationRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::DisableMitigationReply>> PrepareAsyncDisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::DisableMitigationReply>>(PrepareAsyncDisableMitigationRaw(context, request, cq));
    }
    // This method will return total counters
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> GetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(GetTotalTrafficCountersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> AsyncGetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(AsyncGetTotalTrafficCountersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> PrepareAsyncGetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(PrepareAsyncGetTotalTrafficCountersRaw(context, request, cq));
    }
    // This method will return total counters only for IPv4 traffic
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> GetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(GetTotalTrafficCountersV4Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> AsyncGetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(AsyncGetTotalTrafficCountersV4Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> PrepareAsyncGetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(PrepareAsyncGetTotalTrafficCountersV4Raw(context, request, cq));
    }
    // This method will return total counters only for IPv6 traffic
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> GetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(GetTotalTrafficCountersV6Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> AsyncGetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(AsyncGetTotalTrafficCountersV6Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>> PrepareAsyncGetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>>(PrepareAsyncGetTotalTrafficCountersV6Raw(context, request, cq));
    }
    // This method will return arbitrary counters related with FastNetMon internals
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SystemCounter>> GetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::SystemCounter>>(GetSystemCountersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SystemCounter>> AsyncGetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SystemCounter>>(AsyncGetSystemCountersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SystemCounter>> PrepareAsyncGetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SystemCounter>>(PrepareAsyncGetSystemCountersRaw(context, request, cq));
    }
    // Return per subnet traffic stats
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::NetworkCounter>> GetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::NetworkCounter>>(GetNetworkCountersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>> AsyncGetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>>(AsyncGetNetworkCountersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>> PrepareAsyncGetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>>(PrepareAsyncGetNetworkCountersRaw(context, request, cq));
    }
    // Return per subnet IPv6 traffic stats
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::NetworkCounter>> GetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::NetworkCounter>>(GetNetworkCountersV6Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>> AsyncGetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>>(AsyncGetNetworkCountersV6Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>> PrepareAsyncGetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>>(PrepareAsyncGetNetworkCountersV6Raw(context, request, cq));
    }
    // Return per host IPv4 traffic stats
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::HostCounter>> GetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::HostCounter>>(GetHostCountersV4Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>> AsyncGetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>>(AsyncGetHostCountersV4Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>> PrepareAsyncGetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>>(PrepareAsyncGetHostCountersV4Raw(context, request, cq));
    }
    // Return per IPv6 host traffic stats
    std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::HostCounter>> GetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request) {
      return std::unique_ptr< ::grpc::ClientReaderInterface< ::fastnetmoninternal::HostCounter>>(GetHostCountersV6Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>> AsyncGetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>>(AsyncGetHostCountersV6Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>> PrepareAsyncGetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>>(PrepareAsyncGetHostCountersV6Raw(context, request, cq));
    }
    class async_interface {
     public:
      virtual ~async_interface() {}
      // TODO: legacy to remove and replace by DisableMitigation
      virtual void ExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Pings gRPC server to check availability
      virtual void Ping(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest* request, ::fastnetmoninternal::PingReply* response, std::function<void(::grpc::Status)>) = 0;
      virtual void Ping(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest* request, ::fastnetmoninternal::PingReply* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Returns current running version of FastNetMon
      virtual void GetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest* request, ::fastnetmoninternal::GetRunningVersionReply* response, std::function<void(::grpc::Status)>) = 0;
      virtual void GetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest* request, ::fastnetmoninternal::GetRunningVersionReply* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // Get standard blacklist
      virtual void GetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::BanListReply>* reactor) = 0;
      // Block hosts
      virtual void ExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, std::function<void(::grpc::Status)>) = 0;
      virtual void ExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // For local hosts
      virtual void DisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest* request, ::fastnetmoninternal::DisableMitigationReply* response, std::function<void(::grpc::Status)>) = 0;
      virtual void DisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest* request, ::fastnetmoninternal::DisableMitigationReply* response, ::grpc::ClientUnaryReactor* reactor) = 0;
      // This method will return total counters
      virtual void GetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* reactor) = 0;
      // This method will return total counters only for IPv4 traffic
      virtual void GetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* reactor) = 0;
      // This method will return total counters only for IPv6 traffic
      virtual void GetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* reactor) = 0;
      // This method will return arbitrary counters related with FastNetMon internals
      virtual void GetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SystemCounter>* reactor) = 0;
      // Return per subnet traffic stats
      virtual void GetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::NetworkCounter>* reactor) = 0;
      // Return per subnet IPv6 traffic stats
      virtual void GetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::NetworkCounter>* reactor) = 0;
      // Return per host IPv4 traffic stats
      virtual void GetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::HostCounter>* reactor) = 0;
      // Return per IPv6 host traffic stats
      virtual void GetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::HostCounter>* 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< ::fastnetmoninternal::ExecuteBanReply>* AsyncExecuteUnBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>* PrepareAsyncExecuteUnBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::PingReply>* AsyncPingRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::PingReply>* PrepareAsyncPingRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::GetRunningVersionReply>* AsyncGetRunningVersionRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::GetRunningVersionReply>* PrepareAsyncGetRunningVersionRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::BanListReply>* GetBanlistRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::BanListReply>* AsyncGetBanlistRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::BanListReply>* PrepareAsyncGetBanlistRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>* AsyncExecuteBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::ExecuteBanReply>* PrepareAsyncExecuteBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::DisableMitigationReply>* AsyncDisableMitigationRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientAsyncResponseReaderInterface< ::fastnetmoninternal::DisableMitigationReply>* PrepareAsyncDisableMitigationRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* AsyncGetTotalTrafficCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* PrepareAsyncGetTotalTrafficCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* AsyncGetTotalTrafficCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* PrepareAsyncGetTotalTrafficCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* AsyncGetTotalTrafficCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SixtyFourNamedCounter>* PrepareAsyncGetTotalTrafficCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::SystemCounter>* GetSystemCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SystemCounter>* AsyncGetSystemCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::SystemCounter>* PrepareAsyncGetSystemCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::NetworkCounter>* GetNetworkCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>* AsyncGetNetworkCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>* PrepareAsyncGetNetworkCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::NetworkCounter>* GetNetworkCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>* AsyncGetNetworkCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::NetworkCounter>* PrepareAsyncGetNetworkCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::HostCounter>* GetHostCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>* AsyncGetHostCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>* PrepareAsyncGetHostCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq) = 0;
    virtual ::grpc::ClientReaderInterface< ::fastnetmoninternal::HostCounter>* GetHostCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>* AsyncGetHostCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) = 0;
    virtual ::grpc::ClientAsyncReaderInterface< ::fastnetmoninternal::HostCounter>* PrepareAsyncGetHostCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& 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 ExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::fastnetmoninternal::ExecuteBanReply* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>> AsyncExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>>(AsyncExecuteUnBanRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>> PrepareAsyncExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>>(PrepareAsyncExecuteUnBanRaw(context, request, cq));
    }
    ::grpc::Status Ping(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::fastnetmoninternal::PingReply* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::PingReply>> AsyncPing(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::PingReply>>(AsyncPingRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::PingReply>> PrepareAsyncPing(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::PingReply>>(PrepareAsyncPingRaw(context, request, cq));
    }
    ::grpc::Status GetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::fastnetmoninternal::GetRunningVersionReply* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::GetRunningVersionReply>> AsyncGetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::GetRunningVersionReply>>(AsyncGetRunningVersionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::GetRunningVersionReply>> PrepareAsyncGetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::GetRunningVersionReply>>(PrepareAsyncGetRunningVersionRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::BanListReply>> GetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::BanListReply>>(GetBanlistRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::BanListReply>> AsyncGetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::BanListReply>>(AsyncGetBanlistRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::BanListReply>> PrepareAsyncGetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::BanListReply>>(PrepareAsyncGetBanlistRaw(context, request, cq));
    }
    ::grpc::Status ExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::fastnetmoninternal::ExecuteBanReply* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>> AsyncExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>>(AsyncExecuteBanRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>> PrepareAsyncExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>>(PrepareAsyncExecuteBanRaw(context, request, cq));
    }
    ::grpc::Status DisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::fastnetmoninternal::DisableMitigationReply* response) override;
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::DisableMitigationReply>> AsyncDisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::DisableMitigationReply>>(AsyncDisableMitigationRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::DisableMitigationReply>> PrepareAsyncDisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::DisableMitigationReply>>(PrepareAsyncDisableMitigationRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>> GetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(GetTotalTrafficCountersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>> AsyncGetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(AsyncGetTotalTrafficCountersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>> PrepareAsyncGetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(PrepareAsyncGetTotalTrafficCountersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>> GetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(GetTotalTrafficCountersV4Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>> AsyncGetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(AsyncGetTotalTrafficCountersV4Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>> PrepareAsyncGetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(PrepareAsyncGetTotalTrafficCountersV4Raw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>> GetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(GetTotalTrafficCountersV6Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>> AsyncGetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(AsyncGetTotalTrafficCountersV6Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>> PrepareAsyncGetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>>(PrepareAsyncGetTotalTrafficCountersV6Raw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SystemCounter>> GetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::SystemCounter>>(GetSystemCountersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SystemCounter>> AsyncGetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SystemCounter>>(AsyncGetSystemCountersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SystemCounter>> PrepareAsyncGetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::SystemCounter>>(PrepareAsyncGetSystemCountersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::NetworkCounter>> GetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::NetworkCounter>>(GetNetworkCountersRaw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>> AsyncGetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>>(AsyncGetNetworkCountersRaw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>> PrepareAsyncGetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>>(PrepareAsyncGetNetworkCountersRaw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::NetworkCounter>> GetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::NetworkCounter>>(GetNetworkCountersV6Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>> AsyncGetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>>(AsyncGetNetworkCountersV6Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>> PrepareAsyncGetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>>(PrepareAsyncGetNetworkCountersV6Raw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::HostCounter>> GetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::HostCounter>>(GetHostCountersV4Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>> AsyncGetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>>(AsyncGetHostCountersV4Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>> PrepareAsyncGetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>>(PrepareAsyncGetHostCountersV4Raw(context, request, cq));
    }
    std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::HostCounter>> GetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request) {
      return std::unique_ptr< ::grpc::ClientReader< ::fastnetmoninternal::HostCounter>>(GetHostCountersV6Raw(context, request));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>> AsyncGetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>>(AsyncGetHostCountersV6Raw(context, request, cq, tag));
    }
    std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>> PrepareAsyncGetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq) {
      return std::unique_ptr< ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>>(PrepareAsyncGetHostCountersV6Raw(context, request, cq));
    }
    class async final :
      public StubInterface::async_interface {
     public:
      void ExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, std::function<void(::grpc::Status)>) override;
      void ExecuteUnBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, ::grpc::ClientUnaryReactor* reactor) override;
      void Ping(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest* request, ::fastnetmoninternal::PingReply* response, std::function<void(::grpc::Status)>) override;
      void Ping(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest* request, ::fastnetmoninternal::PingReply* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest* request, ::fastnetmoninternal::GetRunningVersionReply* response, std::function<void(::grpc::Status)>) override;
      void GetRunningVersion(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest* request, ::fastnetmoninternal::GetRunningVersionReply* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetBanlist(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::BanListReply>* reactor) override;
      void ExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, std::function<void(::grpc::Status)>) override;
      void ExecuteBan(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response, ::grpc::ClientUnaryReactor* reactor) override;
      void DisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest* request, ::fastnetmoninternal::DisableMitigationReply* response, std::function<void(::grpc::Status)>) override;
      void DisableMitigation(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest* request, ::fastnetmoninternal::DisableMitigationReply* response, ::grpc::ClientUnaryReactor* reactor) override;
      void GetTotalTrafficCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* reactor) override;
      void GetTotalTrafficCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* reactor) override;
      void GetTotalTrafficCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* reactor) override;
      void GetSystemCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::SystemCounter>* reactor) override;
      void GetNetworkCounters(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::NetworkCounter>* reactor) override;
      void GetNetworkCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::NetworkCounter>* reactor) override;
      void GetHostCountersV4(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::HostCounter>* reactor) override;
      void GetHostCountersV6(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request* request, ::grpc::ClientReadReactor< ::fastnetmoninternal::HostCounter>* 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< ::fastnetmoninternal::ExecuteBanReply>* AsyncExecuteUnBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>* PrepareAsyncExecuteUnBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::PingReply>* AsyncPingRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::PingReply>* PrepareAsyncPingRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::PingRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::GetRunningVersionReply>* AsyncGetRunningVersionRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::GetRunningVersionReply>* PrepareAsyncGetRunningVersionRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetRunningVersionRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::BanListReply>* GetBanlistRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::BanListReply>* AsyncGetBanlistRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::BanListReply>* PrepareAsyncGetBanlistRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::BanListRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>* AsyncExecuteBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::ExecuteBanReply>* PrepareAsyncExecuteBanRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::ExecuteBanRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::DisableMitigationReply>* AsyncDisableMitigationRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientAsyncResponseReader< ::fastnetmoninternal::DisableMitigationReply>* PrepareAsyncDisableMitigationRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::DisableMitigationRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>* AsyncGetTotalTrafficCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>* PrepareAsyncGetTotalTrafficCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>* AsyncGetTotalTrafficCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>* PrepareAsyncGetTotalTrafficCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>* AsyncGetTotalTrafficCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SixtyFourNamedCounter>* PrepareAsyncGetTotalTrafficCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::SystemCounter>* GetSystemCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SystemCounter>* AsyncGetSystemCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::SystemCounter>* PrepareAsyncGetSystemCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetSystemCountersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::NetworkCounter>* GetNetworkCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>* AsyncGetNetworkCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>* PrepareAsyncGetNetworkCountersRaw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::NetworkCounter>* GetNetworkCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>* AsyncGetNetworkCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::NetworkCounter>* PrepareAsyncGetNetworkCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::HostCounter>* GetHostCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>* AsyncGetHostCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>* PrepareAsyncGetHostCountersV4Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersRequest& request, ::grpc::CompletionQueue* cq) override;
    ::grpc::ClientReader< ::fastnetmoninternal::HostCounter>* GetHostCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>* AsyncGetHostCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq, void* tag) override;
    ::grpc::ClientAsyncReader< ::fastnetmoninternal::HostCounter>* PrepareAsyncGetHostCountersV6Raw(::grpc::ClientContext* context, const ::fastnetmoninternal::GetHostCountersV6Request& request, ::grpc::CompletionQueue* cq) override;
    const ::grpc::internal::RpcMethod rpcmethod_ExecuteUnBan_;
    const ::grpc::internal::RpcMethod rpcmethod_Ping_;
    const ::grpc::internal::RpcMethod rpcmethod_GetRunningVersion_;
    const ::grpc::internal::RpcMethod rpcmethod_GetBanlist_;
    const ::grpc::internal::RpcMethod rpcmethod_ExecuteBan_;
    const ::grpc::internal::RpcMethod rpcmethod_DisableMitigation_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTotalTrafficCounters_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTotalTrafficCountersV4_;
    const ::grpc::internal::RpcMethod rpcmethod_GetTotalTrafficCountersV6_;
    const ::grpc::internal::RpcMethod rpcmethod_GetSystemCounters_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNetworkCounters_;
    const ::grpc::internal::RpcMethod rpcmethod_GetNetworkCountersV6_;
    const ::grpc::internal::RpcMethod rpcmethod_GetHostCountersV4_;
    const ::grpc::internal::RpcMethod rpcmethod_GetHostCountersV6_;
  };
  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();
    // TODO: legacy to remove and replace by DisableMitigation
    virtual ::grpc::Status ExecuteUnBan(::grpc::ServerContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response);
    // Pings gRPC server to check availability
    virtual ::grpc::Status Ping(::grpc::ServerContext* context, const ::fastnetmoninternal::PingRequest* request, ::fastnetmoninternal::PingReply* response);
    // Returns current running version of FastNetMon
    virtual ::grpc::Status GetRunningVersion(::grpc::ServerContext* context, const ::fastnetmoninternal::GetRunningVersionRequest* request, ::fastnetmoninternal::GetRunningVersionReply* response);
    // Get standard blacklist
    virtual ::grpc::Status GetBanlist(::grpc::ServerContext* context, const ::fastnetmoninternal::BanListRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* writer);
    // Block hosts
    virtual ::grpc::Status ExecuteBan(::grpc::ServerContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response);
    // For local hosts
    virtual ::grpc::Status DisableMitigation(::grpc::ServerContext* context, const ::fastnetmoninternal::DisableMitigationRequest* request, ::fastnetmoninternal::DisableMitigationReply* response);
    // This method will return total counters
    virtual ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* writer);
    // This method will return total counters only for IPv4 traffic
    virtual ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* writer);
    // This method will return total counters only for IPv6 traffic
    virtual ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* writer);
    // This method will return arbitrary counters related with FastNetMon internals
    virtual ::grpc::Status GetSystemCounters(::grpc::ServerContext* context, const ::fastnetmoninternal::GetSystemCountersRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* writer);
    // Return per subnet traffic stats
    virtual ::grpc::Status GetNetworkCounters(::grpc::ServerContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* writer);
    // Return per subnet IPv6 traffic stats
    virtual ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request* request, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* writer);
    // Return per host IPv4 traffic stats
    virtual ::grpc::Status GetHostCountersV4(::grpc::ServerContext* context, const ::fastnetmoninternal::GetHostCountersRequest* request, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* writer);
    // Return per IPv6 host traffic stats
    virtual ::grpc::Status GetHostCountersV6(::grpc::ServerContext* context, const ::fastnetmoninternal::GetHostCountersV6Request* request, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* writer);
  };
  template <class BaseClass>
  class WithAsyncMethod_ExecuteUnBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ExecuteUnBan() {
      ::grpc::Service::MarkMethodAsync(0);
    }
    ~WithAsyncMethod_ExecuteUnBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteUnBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestExecuteUnBan(::grpc::ServerContext* context, ::fastnetmoninternal::ExecuteBanRequest* request, ::grpc::ServerAsyncResponseWriter< ::fastnetmoninternal::ExecuteBanReply>* 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_Ping : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_Ping() {
      ::grpc::Service::MarkMethodAsync(1);
    }
    ~WithAsyncMethod_Ping() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Ping(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestPing(::grpc::ServerContext* context, ::fastnetmoninternal::PingRequest* request, ::grpc::ServerAsyncResponseWriter< ::fastnetmoninternal::PingReply>* 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_GetRunningVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetRunningVersion() {
      ::grpc::Service::MarkMethodAsync(2);
    }
    ~WithAsyncMethod_GetRunningVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRunningVersion(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRunningVersion(::grpc::ServerContext* context, ::fastnetmoninternal::GetRunningVersionRequest* request, ::grpc::ServerAsyncResponseWriter< ::fastnetmoninternal::GetRunningVersionReply>* 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_GetBanlist : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetBanlist() {
      ::grpc::Service::MarkMethodAsync(3);
    }
    ~WithAsyncMethod_GetBanlist() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBanlist(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBanlist(::grpc::ServerContext* context, ::fastnetmoninternal::BanListRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::BanListReply>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(3, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_ExecuteBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_ExecuteBan() {
      ::grpc::Service::MarkMethodAsync(4);
    }
    ~WithAsyncMethod_ExecuteBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestExecuteBan(::grpc::ServerContext* context, ::fastnetmoninternal::ExecuteBanRequest* request, ::grpc::ServerAsyncResponseWriter< ::fastnetmoninternal::ExecuteBanReply>* 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_DisableMitigation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_DisableMitigation() {
      ::grpc::Service::MarkMethodAsync(5);
    }
    ~WithAsyncMethod_DisableMitigation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DisableMitigation(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDisableMitigation(::grpc::ServerContext* context, ::fastnetmoninternal::DisableMitigationRequest* request, ::grpc::ServerAsyncResponseWriter< ::fastnetmoninternal::DisableMitigationReply>* 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_GetTotalTrafficCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetTotalTrafficCounters() {
      ::grpc::Service::MarkMethodAsync(6);
    }
    ~WithAsyncMethod_GetTotalTrafficCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTotalTrafficCounters(::grpc::ServerContext* context, ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(6, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetTotalTrafficCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetTotalTrafficCountersV4() {
      ::grpc::Service::MarkMethodAsync(7);
    }
    ~WithAsyncMethod_GetTotalTrafficCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTotalTrafficCountersV4(::grpc::ServerContext* context, ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(7, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetTotalTrafficCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetTotalTrafficCountersV6() {
      ::grpc::Service::MarkMethodAsync(8);
    }
    ~WithAsyncMethod_GetTotalTrafficCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTotalTrafficCountersV6(::grpc::ServerContext* context, ::fastnetmoninternal::GetTotalTrafficCountersRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(8, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetSystemCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetSystemCounters() {
      ::grpc::Service::MarkMethodAsync(9);
    }
    ~WithAsyncMethod_GetSystemCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSystemCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSystemCounters(::grpc::ServerContext* context, ::fastnetmoninternal::GetSystemCountersRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::SystemCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(9, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNetworkCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNetworkCounters() {
      ::grpc::Service::MarkMethodAsync(10);
    }
    ~WithAsyncMethod_GetNetworkCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkCounters(::grpc::ServerContext* context, ::fastnetmoninternal::GetNetworkCountersRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::NetworkCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(10, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetNetworkCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetNetworkCountersV6() {
      ::grpc::Service::MarkMethodAsync(11);
    }
    ~WithAsyncMethod_GetNetworkCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkCountersV6(::grpc::ServerContext* context, ::fastnetmoninternal::GetNetworkCountersV6Request* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::NetworkCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(11, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetHostCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetHostCountersV4() {
      ::grpc::Service::MarkMethodAsync(12);
    }
    ~WithAsyncMethod_GetHostCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetHostCountersV4(::grpc::ServerContext* context, ::fastnetmoninternal::GetHostCountersRequest* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::HostCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(12, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithAsyncMethod_GetHostCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithAsyncMethod_GetHostCountersV6() {
      ::grpc::Service::MarkMethodAsync(13);
    }
    ~WithAsyncMethod_GetHostCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetHostCountersV6(::grpc::ServerContext* context, ::fastnetmoninternal::GetHostCountersV6Request* request, ::grpc::ServerAsyncWriter< ::fastnetmoninternal::HostCounter>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(13, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  typedef WithAsyncMethod_ExecuteUnBan<WithAsyncMethod_Ping<WithAsyncMethod_GetRunningVersion<WithAsyncMethod_GetBanlist<WithAsyncMethod_ExecuteBan<WithAsyncMethod_DisableMitigation<WithAsyncMethod_GetTotalTrafficCounters<WithAsyncMethod_GetTotalTrafficCountersV4<WithAsyncMethod_GetTotalTrafficCountersV6<WithAsyncMethod_GetSystemCounters<WithAsyncMethod_GetNetworkCounters<WithAsyncMethod_GetNetworkCountersV6<WithAsyncMethod_GetHostCountersV4<WithAsyncMethod_GetHostCountersV6<Service > > > > > > > > > > > > > > AsyncService;
  template <class BaseClass>
  class WithCallbackMethod_ExecuteUnBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ExecuteUnBan() {
      ::grpc::Service::MarkMethodCallback(0,
          new ::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response) { return this->ExecuteUnBan(context, request, response); }));}
    void SetMessageAllocatorFor_ExecuteUnBan(
        ::grpc::MessageAllocator< ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(0);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ExecuteUnBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteUnBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ExecuteUnBan(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_Ping : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_Ping() {
      ::grpc::Service::MarkMethodCallback(1,
          new ::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::PingRequest, ::fastnetmoninternal::PingReply>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::PingRequest* request, ::fastnetmoninternal::PingReply* response) { return this->Ping(context, request, response); }));}
    void SetMessageAllocatorFor_Ping(
        ::grpc::MessageAllocator< ::fastnetmoninternal::PingRequest, ::fastnetmoninternal::PingReply>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(1);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::PingRequest, ::fastnetmoninternal::PingReply>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_Ping() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Ping(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Ping(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetRunningVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetRunningVersion() {
      ::grpc::Service::MarkMethodCallback(2,
          new ::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::GetRunningVersionRequest, ::fastnetmoninternal::GetRunningVersionReply>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetRunningVersionRequest* request, ::fastnetmoninternal::GetRunningVersionReply* response) { return this->GetRunningVersion(context, request, response); }));}
    void SetMessageAllocatorFor_GetRunningVersion(
        ::grpc::MessageAllocator< ::fastnetmoninternal::GetRunningVersionRequest, ::fastnetmoninternal::GetRunningVersionReply>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(2);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::GetRunningVersionRequest, ::fastnetmoninternal::GetRunningVersionReply>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_GetRunningVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRunningVersion(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRunningVersion(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetBanlist : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetBanlist() {
      ::grpc::Service::MarkMethodCallback(3,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::BanListRequest, ::fastnetmoninternal::BanListReply>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::BanListRequest* request) { return this->GetBanlist(context, request); }));
    }
    ~WithCallbackMethod_GetBanlist() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBanlist(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::BanListReply>* GetBanlist(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_ExecuteBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_ExecuteBan() {
      ::grpc::Service::MarkMethodCallback(4,
          new ::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::ExecuteBanRequest* request, ::fastnetmoninternal::ExecuteBanReply* response) { return this->ExecuteBan(context, request, response); }));}
    void SetMessageAllocatorFor_ExecuteBan(
        ::grpc::MessageAllocator< ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(4);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_ExecuteBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ExecuteBan(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_DisableMitigation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_DisableMitigation() {
      ::grpc::Service::MarkMethodCallback(5,
          new ::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::DisableMitigationRequest, ::fastnetmoninternal::DisableMitigationReply>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::DisableMitigationRequest* request, ::fastnetmoninternal::DisableMitigationReply* response) { return this->DisableMitigation(context, request, response); }));}
    void SetMessageAllocatorFor_DisableMitigation(
        ::grpc::MessageAllocator< ::fastnetmoninternal::DisableMitigationRequest, ::fastnetmoninternal::DisableMitigationReply>* allocator) {
      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(5);
      static_cast<::grpc::internal::CallbackUnaryHandler< ::fastnetmoninternal::DisableMitigationRequest, ::fastnetmoninternal::DisableMitigationReply>*>(handler)
              ->SetMessageAllocator(allocator);
    }
    ~WithCallbackMethod_DisableMitigation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DisableMitigation(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DisableMitigation(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetTotalTrafficCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetTotalTrafficCounters() {
      ::grpc::Service::MarkMethodCallback(6,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request) { return this->GetTotalTrafficCounters(context, request); }));
    }
    ~WithCallbackMethod_GetTotalTrafficCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCounters(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetTotalTrafficCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetTotalTrafficCountersV4() {
      ::grpc::Service::MarkMethodCallback(7,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request) { return this->GetTotalTrafficCountersV4(context, request); }));
    }
    ~WithCallbackMethod_GetTotalTrafficCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersV4(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetTotalTrafficCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetTotalTrafficCountersV6() {
      ::grpc::Service::MarkMethodCallback(8,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* request) { return this->GetTotalTrafficCountersV6(context, request); }));
    }
    ~WithCallbackMethod_GetTotalTrafficCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::SixtyFourNamedCounter>* GetTotalTrafficCountersV6(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetSystemCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetSystemCounters() {
      ::grpc::Service::MarkMethodCallback(9,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetSystemCountersRequest, ::fastnetmoninternal::SystemCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetSystemCountersRequest* request) { return this->GetSystemCounters(context, request); }));
    }
    ~WithCallbackMethod_GetSystemCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSystemCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::SystemCounter>* GetSystemCounters(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNetworkCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNetworkCounters() {
      ::grpc::Service::MarkMethodCallback(10,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetNetworkCountersRequest, ::fastnetmoninternal::NetworkCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetNetworkCountersRequest* request) { return this->GetNetworkCounters(context, request); }));
    }
    ~WithCallbackMethod_GetNetworkCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::NetworkCounter>* GetNetworkCounters(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetNetworkCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetNetworkCountersV6() {
      ::grpc::Service::MarkMethodCallback(11,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetNetworkCountersV6Request, ::fastnetmoninternal::NetworkCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetNetworkCountersV6Request* request) { return this->GetNetworkCountersV6(context, request); }));
    }
    ~WithCallbackMethod_GetNetworkCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::NetworkCounter>* GetNetworkCountersV6(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetHostCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetHostCountersV4() {
      ::grpc::Service::MarkMethodCallback(12,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetHostCountersRequest, ::fastnetmoninternal::HostCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetHostCountersRequest* request) { return this->GetHostCountersV4(context, request); }));
    }
    ~WithCallbackMethod_GetHostCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::HostCounter>* GetHostCountersV4(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithCallbackMethod_GetHostCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithCallbackMethod_GetHostCountersV6() {
      ::grpc::Service::MarkMethodCallback(13,
          new ::grpc::internal::CallbackServerStreamingHandler< ::fastnetmoninternal::GetHostCountersV6Request, ::fastnetmoninternal::HostCounter>(
            [this](
                   ::grpc::CallbackServerContext* context, const ::fastnetmoninternal::GetHostCountersV6Request* request) { return this->GetHostCountersV6(context, request); }));
    }
    ~WithCallbackMethod_GetHostCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::fastnetmoninternal::HostCounter>* GetHostCountersV6(
      ::grpc::CallbackServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/)  { return nullptr; }
  };
  typedef WithCallbackMethod_ExecuteUnBan<WithCallbackMethod_Ping<WithCallbackMethod_GetRunningVersion<WithCallbackMethod_GetBanlist<WithCallbackMethod_ExecuteBan<WithCallbackMethod_DisableMitigation<WithCallbackMethod_GetTotalTrafficCounters<WithCallbackMethod_GetTotalTrafficCountersV4<WithCallbackMethod_GetTotalTrafficCountersV6<WithCallbackMethod_GetSystemCounters<WithCallbackMethod_GetNetworkCounters<WithCallbackMethod_GetNetworkCountersV6<WithCallbackMethod_GetHostCountersV4<WithCallbackMethod_GetHostCountersV6<Service > > > > > > > > > > > > > > CallbackService;
  typedef CallbackService ExperimentalCallbackService;
  template <class BaseClass>
  class WithGenericMethod_ExecuteUnBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ExecuteUnBan() {
      ::grpc::Service::MarkMethodGeneric(0);
    }
    ~WithGenericMethod_ExecuteUnBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteUnBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_Ping : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_Ping() {
      ::grpc::Service::MarkMethodGeneric(1);
    }
    ~WithGenericMethod_Ping() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Ping(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetRunningVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetRunningVersion() {
      ::grpc::Service::MarkMethodGeneric(2);
    }
    ~WithGenericMethod_GetRunningVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRunningVersion(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetBanlist : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetBanlist() {
      ::grpc::Service::MarkMethodGeneric(3);
    }
    ~WithGenericMethod_GetBanlist() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBanlist(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_ExecuteBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_ExecuteBan() {
      ::grpc::Service::MarkMethodGeneric(4);
    }
    ~WithGenericMethod_ExecuteBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_DisableMitigation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_DisableMitigation() {
      ::grpc::Service::MarkMethodGeneric(5);
    }
    ~WithGenericMethod_DisableMitigation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DisableMitigation(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTotalTrafficCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetTotalTrafficCounters() {
      ::grpc::Service::MarkMethodGeneric(6);
    }
    ~WithGenericMethod_GetTotalTrafficCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTotalTrafficCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetTotalTrafficCountersV4() {
      ::grpc::Service::MarkMethodGeneric(7);
    }
    ~WithGenericMethod_GetTotalTrafficCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetTotalTrafficCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetTotalTrafficCountersV6() {
      ::grpc::Service::MarkMethodGeneric(8);
    }
    ~WithGenericMethod_GetTotalTrafficCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetSystemCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetSystemCounters() {
      ::grpc::Service::MarkMethodGeneric(9);
    }
    ~WithGenericMethod_GetSystemCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSystemCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNetworkCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNetworkCounters() {
      ::grpc::Service::MarkMethodGeneric(10);
    }
    ~WithGenericMethod_GetNetworkCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetNetworkCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetNetworkCountersV6() {
      ::grpc::Service::MarkMethodGeneric(11);
    }
    ~WithGenericMethod_GetNetworkCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetHostCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetHostCountersV4() {
      ::grpc::Service::MarkMethodGeneric(12);
    }
    ~WithGenericMethod_GetHostCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithGenericMethod_GetHostCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithGenericMethod_GetHostCountersV6() {
      ::grpc::Service::MarkMethodGeneric(13);
    }
    ~WithGenericMethod_GetHostCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
  };
  template <class BaseClass>
  class WithRawMethod_ExecuteUnBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ExecuteUnBan() {
      ::grpc::Service::MarkMethodRaw(0);
    }
    ~WithRawMethod_ExecuteUnBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteUnBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestExecuteUnBan(::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_Ping : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_Ping() {
      ::grpc::Service::MarkMethodRaw(1);
    }
    ~WithRawMethod_Ping() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Ping(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestPing(::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_GetRunningVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetRunningVersion() {
      ::grpc::Service::MarkMethodRaw(2);
    }
    ~WithRawMethod_GetRunningVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRunningVersion(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetRunningVersion(::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_GetBanlist : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetBanlist() {
      ::grpc::Service::MarkMethodRaw(3);
    }
    ~WithRawMethod_GetBanlist() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBanlist(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetBanlist(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(3, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_ExecuteBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_ExecuteBan() {
      ::grpc::Service::MarkMethodRaw(4);
    }
    ~WithRawMethod_ExecuteBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestExecuteBan(::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_DisableMitigation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_DisableMitigation() {
      ::grpc::Service::MarkMethodRaw(5);
    }
    ~WithRawMethod_DisableMitigation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DisableMitigation(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestDisableMitigation(::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_GetTotalTrafficCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetTotalTrafficCounters() {
      ::grpc::Service::MarkMethodRaw(6);
    }
    ~WithRawMethod_GetTotalTrafficCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTotalTrafficCounters(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(6, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetTotalTrafficCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetTotalTrafficCountersV4() {
      ::grpc::Service::MarkMethodRaw(7);
    }
    ~WithRawMethod_GetTotalTrafficCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTotalTrafficCountersV4(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(7, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetTotalTrafficCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetTotalTrafficCountersV6() {
      ::grpc::Service::MarkMethodRaw(8);
    }
    ~WithRawMethod_GetTotalTrafficCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetTotalTrafficCountersV6(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(8, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetSystemCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetSystemCounters() {
      ::grpc::Service::MarkMethodRaw(9);
    }
    ~WithRawMethod_GetSystemCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSystemCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetSystemCounters(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(9, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNetworkCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNetworkCounters() {
      ::grpc::Service::MarkMethodRaw(10);
    }
    ~WithRawMethod_GetNetworkCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkCounters(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(10, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetNetworkCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetNetworkCountersV6() {
      ::grpc::Service::MarkMethodRaw(11);
    }
    ~WithRawMethod_GetNetworkCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetNetworkCountersV6(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(11, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetHostCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetHostCountersV4() {
      ::grpc::Service::MarkMethodRaw(12);
    }
    ~WithRawMethod_GetHostCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetHostCountersV4(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(12, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawMethod_GetHostCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawMethod_GetHostCountersV6() {
      ::grpc::Service::MarkMethodRaw(13);
    }
    ~WithRawMethod_GetHostCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    void RequestGetHostCountersV6(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncWriter< ::grpc::ByteBuffer>* writer, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
      ::grpc::Service::RequestAsyncServerStreaming(13, context, request, writer, new_call_cq, notification_cq, tag);
    }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ExecuteUnBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ExecuteUnBan() {
      ::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->ExecuteUnBan(context, request, response); }));
    }
    ~WithRawCallbackMethod_ExecuteUnBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteUnBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ExecuteUnBan(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_Ping : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_Ping() {
      ::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->Ping(context, request, response); }));
    }
    ~WithRawCallbackMethod_Ping() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status Ping(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* Ping(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetRunningVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetRunningVersion() {
      ::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->GetRunningVersion(context, request, response); }));
    }
    ~WithRawCallbackMethod_GetRunningVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetRunningVersion(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* GetRunningVersion(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetBanlist : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetBanlist() {
      ::grpc::Service::MarkMethodRawCallback(3,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetBanlist(context, request); }));
    }
    ~WithRawCallbackMethod_GetBanlist() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetBanlist(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetBanlist(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_ExecuteBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_ExecuteBan() {
      ::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->ExecuteBan(context, request, response); }));
    }
    ~WithRawCallbackMethod_ExecuteBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status ExecuteBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* ExecuteBan(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_DisableMitigation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_DisableMitigation() {
      ::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->DisableMitigation(context, request, response); }));
    }
    ~WithRawCallbackMethod_DisableMitigation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status DisableMitigation(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerUnaryReactor* DisableMitigation(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetTotalTrafficCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetTotalTrafficCounters() {
      ::grpc::Service::MarkMethodRawCallback(6,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetTotalTrafficCounters(context, request); }));
    }
    ~WithRawCallbackMethod_GetTotalTrafficCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetTotalTrafficCounters(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetTotalTrafficCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetTotalTrafficCountersV4() {
      ::grpc::Service::MarkMethodRawCallback(7,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetTotalTrafficCountersV4(context, request); }));
    }
    ~WithRawCallbackMethod_GetTotalTrafficCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetTotalTrafficCountersV4(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetTotalTrafficCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetTotalTrafficCountersV6() {
      ::grpc::Service::MarkMethodRawCallback(8,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetTotalTrafficCountersV6(context, request); }));
    }
    ~WithRawCallbackMethod_GetTotalTrafficCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetTotalTrafficCountersV6(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetSystemCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetSystemCounters() {
      ::grpc::Service::MarkMethodRawCallback(9,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetSystemCounters(context, request); }));
    }
    ~WithRawCallbackMethod_GetSystemCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetSystemCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetSystemCounters(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNetworkCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNetworkCounters() {
      ::grpc::Service::MarkMethodRawCallback(10,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetNetworkCounters(context, request); }));
    }
    ~WithRawCallbackMethod_GetNetworkCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetNetworkCounters(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetNetworkCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetNetworkCountersV6() {
      ::grpc::Service::MarkMethodRawCallback(11,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetNetworkCountersV6(context, request); }));
    }
    ~WithRawCallbackMethod_GetNetworkCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetNetworkCountersV6(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetHostCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetHostCountersV4() {
      ::grpc::Service::MarkMethodRawCallback(12,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetHostCountersV4(context, request); }));
    }
    ~WithRawCallbackMethod_GetHostCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetHostCountersV4(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithRawCallbackMethod_GetHostCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithRawCallbackMethod_GetHostCountersV6() {
      ::grpc::Service::MarkMethodRawCallback(13,
          new ::grpc::internal::CallbackServerStreamingHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
            [this](
                   ::grpc::CallbackServerContext* context, const::grpc::ByteBuffer* request) { return this->GetHostCountersV6(context, request); }));
    }
    ~WithRawCallbackMethod_GetHostCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable synchronous version of this method
    ::grpc::Status GetHostCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    virtual ::grpc::ServerWriteReactor< ::grpc::ByteBuffer>* GetHostCountersV6(
      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/)  { return nullptr; }
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ExecuteUnBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ExecuteUnBan() {
      ::grpc::Service::MarkMethodStreamed(0,
        new ::grpc::internal::StreamedUnaryHandler<
          ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>* streamer) {
                       return this->StreamedExecuteUnBan(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ExecuteUnBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ExecuteUnBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedExecuteUnBan(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::fastnetmoninternal::ExecuteBanRequest,::fastnetmoninternal::ExecuteBanReply>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_Ping : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_Ping() {
      ::grpc::Service::MarkMethodStreamed(1,
        new ::grpc::internal::StreamedUnaryHandler<
          ::fastnetmoninternal::PingRequest, ::fastnetmoninternal::PingReply>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::fastnetmoninternal::PingRequest, ::fastnetmoninternal::PingReply>* streamer) {
                       return this->StreamedPing(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_Ping() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status Ping(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::PingRequest* /*request*/, ::fastnetmoninternal::PingReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedPing(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::fastnetmoninternal::PingRequest,::fastnetmoninternal::PingReply>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_GetRunningVersion : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_GetRunningVersion() {
      ::grpc::Service::MarkMethodStreamed(2,
        new ::grpc::internal::StreamedUnaryHandler<
          ::fastnetmoninternal::GetRunningVersionRequest, ::fastnetmoninternal::GetRunningVersionReply>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::fastnetmoninternal::GetRunningVersionRequest, ::fastnetmoninternal::GetRunningVersionReply>* streamer) {
                       return this->StreamedGetRunningVersion(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_GetRunningVersion() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetRunningVersion(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetRunningVersionRequest* /*request*/, ::fastnetmoninternal::GetRunningVersionReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedGetRunningVersion(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::fastnetmoninternal::GetRunningVersionRequest,::fastnetmoninternal::GetRunningVersionReply>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_ExecuteBan : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_ExecuteBan() {
      ::grpc::Service::MarkMethodStreamed(4,
        new ::grpc::internal::StreamedUnaryHandler<
          ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::fastnetmoninternal::ExecuteBanRequest, ::fastnetmoninternal::ExecuteBanReply>* streamer) {
                       return this->StreamedExecuteBan(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_ExecuteBan() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status ExecuteBan(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::ExecuteBanRequest* /*request*/, ::fastnetmoninternal::ExecuteBanReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedExecuteBan(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::fastnetmoninternal::ExecuteBanRequest,::fastnetmoninternal::ExecuteBanReply>* server_unary_streamer) = 0;
  };
  template <class BaseClass>
  class WithStreamedUnaryMethod_DisableMitigation : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithStreamedUnaryMethod_DisableMitigation() {
      ::grpc::Service::MarkMethodStreamed(5,
        new ::grpc::internal::StreamedUnaryHandler<
          ::fastnetmoninternal::DisableMitigationRequest, ::fastnetmoninternal::DisableMitigationReply>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerUnaryStreamer<
                     ::fastnetmoninternal::DisableMitigationRequest, ::fastnetmoninternal::DisableMitigationReply>* streamer) {
                       return this->StreamedDisableMitigation(context,
                         streamer);
                  }));
    }
    ~WithStreamedUnaryMethod_DisableMitigation() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status DisableMitigation(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::DisableMitigationRequest* /*request*/, ::fastnetmoninternal::DisableMitigationReply* /*response*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with streamed unary
    virtual ::grpc::Status StreamedDisableMitigation(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::fastnetmoninternal::DisableMitigationRequest,::fastnetmoninternal::DisableMitigationReply>* server_unary_streamer) = 0;
  };
  typedef WithStreamedUnaryMethod_ExecuteUnBan<WithStreamedUnaryMethod_Ping<WithStreamedUnaryMethod_GetRunningVersion<WithStreamedUnaryMethod_ExecuteBan<WithStreamedUnaryMethod_DisableMitigation<Service > > > > > StreamedUnaryService;
  template <class BaseClass>
  class WithSplitStreamingMethod_GetBanlist : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetBanlist() {
      ::grpc::Service::MarkMethodStreamed(3,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::BanListRequest, ::fastnetmoninternal::BanListReply>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::BanListRequest, ::fastnetmoninternal::BanListReply>* streamer) {
                       return this->StreamedGetBanlist(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetBanlist() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetBanlist(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::BanListRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::BanListReply>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetBanlist(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::BanListRequest,::fastnetmoninternal::BanListReply>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetTotalTrafficCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetTotalTrafficCounters() {
      ::grpc::Service::MarkMethodStreamed(6,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>* streamer) {
                       return this->StreamedGetTotalTrafficCounters(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetTotalTrafficCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTotalTrafficCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetTotalTrafficCounters(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetTotalTrafficCountersRequest,::fastnetmoninternal::SixtyFourNamedCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetTotalTrafficCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetTotalTrafficCountersV4() {
      ::grpc::Service::MarkMethodStreamed(7,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>* streamer) {
                       return this->StreamedGetTotalTrafficCountersV4(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetTotalTrafficCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTotalTrafficCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetTotalTrafficCountersV4(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetTotalTrafficCountersRequest,::fastnetmoninternal::SixtyFourNamedCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetTotalTrafficCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetTotalTrafficCountersV6() {
      ::grpc::Service::MarkMethodStreamed(8,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetTotalTrafficCountersRequest, ::fastnetmoninternal::SixtyFourNamedCounter>* streamer) {
                       return this->StreamedGetTotalTrafficCountersV6(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetTotalTrafficCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetTotalTrafficCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetTotalTrafficCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SixtyFourNamedCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetTotalTrafficCountersV6(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetTotalTrafficCountersRequest,::fastnetmoninternal::SixtyFourNamedCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetSystemCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetSystemCounters() {
      ::grpc::Service::MarkMethodStreamed(9,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetSystemCountersRequest, ::fastnetmoninternal::SystemCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetSystemCountersRequest, ::fastnetmoninternal::SystemCounter>* streamer) {
                       return this->StreamedGetSystemCounters(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetSystemCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetSystemCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetSystemCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::SystemCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetSystemCounters(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetSystemCountersRequest,::fastnetmoninternal::SystemCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetNetworkCounters : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetNetworkCounters() {
      ::grpc::Service::MarkMethodStreamed(10,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetNetworkCountersRequest, ::fastnetmoninternal::NetworkCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetNetworkCountersRequest, ::fastnetmoninternal::NetworkCounter>* streamer) {
                       return this->StreamedGetNetworkCounters(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetNetworkCounters() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNetworkCounters(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetNetworkCounters(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetNetworkCountersRequest,::fastnetmoninternal::NetworkCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetNetworkCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetNetworkCountersV6() {
      ::grpc::Service::MarkMethodStreamed(11,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetNetworkCountersV6Request, ::fastnetmoninternal::NetworkCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetNetworkCountersV6Request, ::fastnetmoninternal::NetworkCounter>* streamer) {
                       return this->StreamedGetNetworkCountersV6(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetNetworkCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetNetworkCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetNetworkCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::NetworkCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetNetworkCountersV6(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetNetworkCountersV6Request,::fastnetmoninternal::NetworkCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetHostCountersV4 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetHostCountersV4() {
      ::grpc::Service::MarkMethodStreamed(12,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetHostCountersRequest, ::fastnetmoninternal::HostCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetHostCountersRequest, ::fastnetmoninternal::HostCounter>* streamer) {
                       return this->StreamedGetHostCountersV4(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetHostCountersV4() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetHostCountersV4(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersRequest* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetHostCountersV4(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetHostCountersRequest,::fastnetmoninternal::HostCounter>* server_split_streamer) = 0;
  };
  template <class BaseClass>
  class WithSplitStreamingMethod_GetHostCountersV6 : public BaseClass {
   private:
    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
   public:
    WithSplitStreamingMethod_GetHostCountersV6() {
      ::grpc::Service::MarkMethodStreamed(13,
        new ::grpc::internal::SplitServerStreamingHandler<
          ::fastnetmoninternal::GetHostCountersV6Request, ::fastnetmoninternal::HostCounter>(
            [this](::grpc::ServerContext* context,
                   ::grpc::ServerSplitStreamer<
                     ::fastnetmoninternal::GetHostCountersV6Request, ::fastnetmoninternal::HostCounter>* streamer) {
                       return this->StreamedGetHostCountersV6(context,
                         streamer);
                  }));
    }
    ~WithSplitStreamingMethod_GetHostCountersV6() override {
      BaseClassMustBeDerivedFromService(this);
    }
    // disable regular version of this method
    ::grpc::Status GetHostCountersV6(::grpc::ServerContext* /*context*/, const ::fastnetmoninternal::GetHostCountersV6Request* /*request*/, ::grpc::ServerWriter< ::fastnetmoninternal::HostCounter>* /*writer*/) override {
      abort();
      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
    }
    // replace default version of method with split streamed
    virtual ::grpc::Status StreamedGetHostCountersV6(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::fastnetmoninternal::GetHostCountersV6Request,::fastnetmoninternal::HostCounter>* server_split_streamer) = 0;
  };
  typedef WithSplitStreamingMethod_GetBanlist<WithSplitStreamingMethod_GetTotalTrafficCounters<WithSplitStreamingMethod_GetTotalTrafficCountersV4<WithSplitStreamingMethod_GetTotalTrafficCountersV6<WithSplitStreamingMethod_GetSystemCounters<WithSplitStreamingMethod_GetNetworkCounters<WithSplitStreamingMethod_GetNetworkCountersV6<WithSplitStreamingMethod_GetHostCountersV4<WithSplitStreamingMethod_GetHostCountersV6<Service > > > > > > > > > SplitStreamedService;
  typedef WithStreamedUnaryMethod_ExecuteUnBan<WithStreamedUnaryMethod_Ping<WithStreamedUnaryMethod_GetRunningVersion<WithSplitStreamingMethod_GetBanlist<WithStreamedUnaryMethod_ExecuteBan<WithStreamedUnaryMethod_DisableMitigation<WithSplitStreamingMethod_GetTotalTrafficCounters<WithSplitStreamingMethod_GetTotalTrafficCountersV4<WithSplitStreamingMethod_GetTotalTrafficCountersV6<WithSplitStreamingMethod_GetSystemCounters<WithSplitStreamingMethod_GetNetworkCounters<WithSplitStreamingMethod_GetNetworkCountersV6<WithSplitStreamingMethod_GetHostCountersV4<WithSplitStreamingMethod_GetHostCountersV6<Service > > > > > > > > > > > > > > StreamedService;
};

}  // namespace fastnetmoninternal


#include <grpcpp/ports_undef.inc>
#endif  // GRPC_fastnetmon_5finternal_5fapi_2eproto__INCLUDED
