# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
import grpc

import bess_msg_pb2 as bess__msg__pb2


class BESSControlStub(object):
  # missing associated documentation comment in .proto file
  pass

  def __init__(self, channel):
    """Constructor.

    Args:
      channel: A grpc.Channel.
    """
    self.GetVersion = channel.unary_unary(
        '/bess.pb.BESSControl/GetVersion',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.VersionResponse.FromString,
        )
    self.ResetAll = channel.unary_unary(
        '/bess.pb.BESSControl/ResetAll',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.KillBess = channel.unary_unary(
        '/bess.pb.BESSControl/KillBess',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ImportPlugin = channel.unary_unary(
        '/bess.pb.BESSControl/ImportPlugin',
        request_serializer=bess__msg__pb2.ImportPluginRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.UnloadPlugin = channel.unary_unary(
        '/bess.pb.BESSControl/UnloadPlugin',
        request_serializer=bess__msg__pb2.UnloadPluginRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ListPlugins = channel.unary_unary(
        '/bess.pb.BESSControl/ListPlugins',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListPluginsResponse.FromString,
        )
    self.PauseAll = channel.unary_unary(
        '/bess.pb.BESSControl/PauseAll',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.PauseWorker = channel.unary_unary(
        '/bess.pb.BESSControl/PauseWorker',
        request_serializer=bess__msg__pb2.PauseWorkerRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ResumeWorker = channel.unary_unary(
        '/bess.pb.BESSControl/ResumeWorker',
        request_serializer=bess__msg__pb2.ResumeWorkerRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ResumeAll = channel.unary_unary(
        '/bess.pb.BESSControl/ResumeAll',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ResetWorkers = channel.unary_unary(
        '/bess.pb.BESSControl/ResetWorkers',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ListWorkers = channel.unary_unary(
        '/bess.pb.BESSControl/ListWorkers',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListWorkersResponse.FromString,
        )
    self.AddWorker = channel.unary_unary(
        '/bess.pb.BESSControl/AddWorker',
        request_serializer=bess__msg__pb2.AddWorkerRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.DestroyWorker = channel.unary_unary(
        '/bess.pb.BESSControl/DestroyWorker',
        request_serializer=bess__msg__pb2.DestroyWorkerRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ResetTcs = channel.unary_unary(
        '/bess.pb.BESSControl/ResetTcs',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ListTcs = channel.unary_unary(
        '/bess.pb.BESSControl/ListTcs',
        request_serializer=bess__msg__pb2.ListTcsRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListTcsResponse.FromString,
        )
    self.CheckSchedulingConstraints = channel.unary_unary(
        '/bess.pb.BESSControl/CheckSchedulingConstraints',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CheckSchedulingConstraintsResponse.FromString,
        )
    self.AddTc = channel.unary_unary(
        '/bess.pb.BESSControl/AddTc',
        request_serializer=bess__msg__pb2.AddTcRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.UpdateTcParams = channel.unary_unary(
        '/bess.pb.BESSControl/UpdateTcParams',
        request_serializer=bess__msg__pb2.UpdateTcParamsRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.UpdateTcParent = channel.unary_unary(
        '/bess.pb.BESSControl/UpdateTcParent',
        request_serializer=bess__msg__pb2.UpdateTcParentRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.GetTcStats = channel.unary_unary(
        '/bess.pb.BESSControl/GetTcStats',
        request_serializer=bess__msg__pb2.GetTcStatsRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetTcStatsResponse.FromString,
        )
    self.ListDrivers = channel.unary_unary(
        '/bess.pb.BESSControl/ListDrivers',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListDriversResponse.FromString,
        )
    self.GetDriverInfo = channel.unary_unary(
        '/bess.pb.BESSControl/GetDriverInfo',
        request_serializer=bess__msg__pb2.GetDriverInfoRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetDriverInfoResponse.FromString,
        )
    self.ResetPorts = channel.unary_unary(
        '/bess.pb.BESSControl/ResetPorts',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ListPorts = channel.unary_unary(
        '/bess.pb.BESSControl/ListPorts',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListPortsResponse.FromString,
        )
    self.CreatePort = channel.unary_unary(
        '/bess.pb.BESSControl/CreatePort',
        request_serializer=bess__msg__pb2.CreatePortRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CreatePortResponse.FromString,
        )
    self.DestroyPort = channel.unary_unary(
        '/bess.pb.BESSControl/DestroyPort',
        request_serializer=bess__msg__pb2.DestroyPortRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.SetPortConf = channel.unary_unary(
        '/bess.pb.BESSControl/SetPortConf',
        request_serializer=bess__msg__pb2.SetPortConfRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CommandResponse.FromString,
        )
    self.GetPortConf = channel.unary_unary(
        '/bess.pb.BESSControl/GetPortConf',
        request_serializer=bess__msg__pb2.GetPortConfRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetPortConfResponse.FromString,
        )
    self.GetPortStats = channel.unary_unary(
        '/bess.pb.BESSControl/GetPortStats',
        request_serializer=bess__msg__pb2.GetPortStatsRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetPortStatsResponse.FromString,
        )
    self.GetLinkStatus = channel.unary_unary(
        '/bess.pb.BESSControl/GetLinkStatus',
        request_serializer=bess__msg__pb2.GetLinkStatusRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetLinkStatusResponse.FromString,
        )
    self.ListMclass = channel.unary_unary(
        '/bess.pb.BESSControl/ListMclass',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListMclassResponse.FromString,
        )
    self.GetMclassInfo = channel.unary_unary(
        '/bess.pb.BESSControl/GetMclassInfo',
        request_serializer=bess__msg__pb2.GetMclassInfoRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetMclassInfoResponse.FromString,
        )
    self.ResetModules = channel.unary_unary(
        '/bess.pb.BESSControl/ResetModules',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.ListModules = channel.unary_unary(
        '/bess.pb.BESSControl/ListModules',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListModulesResponse.FromString,
        )
    self.CreateModule = channel.unary_unary(
        '/bess.pb.BESSControl/CreateModule',
        request_serializer=bess__msg__pb2.CreateModuleRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CreateModuleResponse.FromString,
        )
    self.DestroyModule = channel.unary_unary(
        '/bess.pb.BESSControl/DestroyModule',
        request_serializer=bess__msg__pb2.DestroyModuleRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.GetModuleInfo = channel.unary_unary(
        '/bess.pb.BESSControl/GetModuleInfo',
        request_serializer=bess__msg__pb2.GetModuleInfoRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetModuleInfoResponse.FromString,
        )
    self.ConnectModules = channel.unary_unary(
        '/bess.pb.BESSControl/ConnectModules',
        request_serializer=bess__msg__pb2.ConnectModulesRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.DisconnectModules = channel.unary_unary(
        '/bess.pb.BESSControl/DisconnectModules',
        request_serializer=bess__msg__pb2.DisconnectModulesRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.EmptyResponse.FromString,
        )
    self.DumpMempool = channel.unary_unary(
        '/bess.pb.BESSControl/DumpMempool',
        request_serializer=bess__msg__pb2.DumpMempoolRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.DumpMempoolResponse.FromString,
        )
    self.ModuleCommand = channel.unary_unary(
        '/bess.pb.BESSControl/ModuleCommand',
        request_serializer=bess__msg__pb2.CommandRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CommandResponse.FromString,
        )
    self.ListGateHookClass = channel.unary_unary(
        '/bess.pb.BESSControl/ListGateHookClass',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListGateHookClassResponse.FromString,
        )
    self.GetGateHookClassInfo = channel.unary_unary(
        '/bess.pb.BESSControl/GetGateHookClassInfo',
        request_serializer=bess__msg__pb2.GetGateHookClassInfoRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.GetGateHookClassInfoResponse.FromString,
        )
    self.ConfigureGateHook = channel.unary_unary(
        '/bess.pb.BESSControl/ConfigureGateHook',
        request_serializer=bess__msg__pb2.ConfigureGateHookRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ConfigureGateHookResponse.FromString,
        )
    self.ListGateHooks = channel.unary_unary(
        '/bess.pb.BESSControl/ListGateHooks',
        request_serializer=bess__msg__pb2.EmptyRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.ListGateHooksResponse.FromString,
        )
    self.GateHookCommand = channel.unary_unary(
        '/bess.pb.BESSControl/GateHookCommand',
        request_serializer=bess__msg__pb2.GateHookCommandRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CommandResponse.FromString,
        )
    self.ConfigureResumeHook = channel.unary_unary(
        '/bess.pb.BESSControl/ConfigureResumeHook',
        request_serializer=bess__msg__pb2.ConfigureResumeHookRequest.SerializeToString,
        response_deserializer=bess__msg__pb2.CommandResponse.FromString,
        )


class BESSControlServicer(object):
  # missing associated documentation comment in .proto file
  pass

  def GetVersion(self, request, context):
    """-------------------------------------------------------------------------
    System
    -------------------------------------------------------------------------

    / Query version of bessd
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResetAll(self, request, context):
    """/ Reset the current packet processing datapath to the initial state.
    /
    / This command is identical to the following sequence:
    /   ResetModules()
    /   ResetPorts()
    /   ResetTcs()
    /   ResetWorkers()
    / As it clears everything, BESS should appear as if the daemon has freshly
    / started (if not, it is a bug; please report).
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def KillBess(self, request, context):
    """/ Terminate the BESS daemon.
    /
    / BESS daemon shuts off in a graceful manner. Note that this command is
    / "asynchronous": this command doesn't block until the BESS daemon has
    / shut off.
    /
    / NOTE: There should be no running worker to run this command.
    / FIXME: rename (e.g., Terminate)
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ImportPlugin(self, request, context):
    """/ Import a plugin
    /
    / At the moment plugins can only contain module types,
    / but might also support drivers/hooks/schedulers in the future.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def UnloadPlugin(self, request, context):
    """/ Unload a plugin
    /
    / At the moment plugins can only contain module types,
    / but might also support drivers/hooks/schedulers in the future.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListPlugins(self, request, context):
    """/ List imported plugins
    /
    / At the moment plugins can only contain module types,
    / but might also support drivers/hooks/schedulers in the future.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def PauseAll(self, request, context):
    """-------------------------------------------------------------------------
    Worker
    -------------------------------------------------------------------------

    / Pause all running workers temporarily
    /
    / Some RPC commands to BESS or individual modules/ports require that
    / threads must be inactive, to avoid race conditions.
    / For such commands, use PauseALl at the beginning and ResumeAll at the end.
    /  PauseAll()
    /   SomeCommand1()
    /   SomeCommand2()
    /   ...
    /  ResumeAll()
    / Keep the duration as short as possible, to avoid packet drops.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def PauseWorker(self, request, context):
    """/ Pause the specified worker temporarily
    /
    / Some RPC commands to BESS or individual modules/ports require that
    / threads must be inactive, to avoid race conditions.
    / For such commands, use PauseWorker at the beginning and ResumeWorker at the end.
    /  PauseWorker(0)
    /   SomeCommand1()
    /   SomeCommand2()
    /   ...
    /  ResumeWorker(0)
    / Keep the duration as short as possible, to avoid packet drops.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResumeWorker(self, request, context):
    """/ Resume the specified worker
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResumeAll(self, request, context):
    """/ Resume all paused workers
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResetWorkers(self, request, context):
    """/ Remove all existing workers
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListWorkers(self, request, context):
    """/ Enumerate all existing workers
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def AddWorker(self, request, context):
    """/ Create a new worker
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def DestroyWorker(self, request, context):
    """/ Remove a single worker
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResetTcs(self, request, context):
    """-------------------------------------------------------------------------
    Traffic classe & task
    -------------------------------------------------------------------------

    / Remove all existing traffic classes
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListTcs(self, request, context):
    """/ Enumerate all existing workers
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def CheckSchedulingConstraints(self, request, context):
    """/ Check scheduling contraints
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def AddTc(self, request, context):
    """/ Create a new traffic class
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def UpdateTcParams(self, request, context):
    """/ Update parameters of an existing traffic class
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def UpdateTcParent(self, request, context):
    """/ Change parent (and child arguments) of an existing traffic class
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetTcStats(self, request, context):
    """/ Collect statistics of a traffic class
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListDrivers(self, request, context):
    """-------------------------------------------------------------------------
    Port
    -------------------------------------------------------------------------

    / Enumerate all port drivers available
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetDriverInfo(self, request, context):
    """/ Query detailed information of a port driver
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResetPorts(self, request, context):
    """/ Remove all initialized ports
    /
    / Will fail if there are modules that are still using ports.
    / (e.g., PortInc, PortOut, QueueInc, QueueOut)
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListPorts(self, request, context):
    """/ Enumerate all initialized ports
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def CreatePort(self, request, context):
    """/ Create a new port from the specified driver
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def DestroyPort(self, request, context):
    """/ Remove a port
    /
    / The port should not be being used by a port-related module.
    / (e.g., PortInc, PortOut, QueueInc, QueueOut)
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def SetPortConf(self, request, context):
    """/ Runtime-updatable configuration
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetPortConf(self, request, context):
    # missing associated documentation comment in .proto file
    pass
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetPortStats(self, request, context):
    """/ Collect port statistics
    /
    / At the moment, per-queue stats are not supported.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetLinkStatus(self, request, context):
    """/ Query link status
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListMclass(self, request, context):
    """TODO: Add PortCommand, like ModuleCommand, which performs driver-specific
    actions on a port.

    -------------------------------------------------------------------------
    Module
    -------------------------------------------------------------------------

    / Enumerate all module types available
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetMclassInfo(self, request, context):
    """/ Query detailed information of a module type
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ResetModules(self, request, context):
    """/ Remove all modules.
    /
    / This RPC will always succeed (unless there is a running worker)
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListModules(self, request, context):
    """/ Enumerate all initialized modules
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def CreateModule(self, request, context):
    """/ Create a new module instance from the given module type
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def DestroyModule(self, request, context):
    """/ Destroy an exsting module
    /
    / If the module is connected to other modules' input/output gate, they are
    / disconnected first. All tasks created by the module will also be destoyed.
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetModuleInfo(self, request, context):
    """/ Fetch detailed information of an module instance
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ConnectModules(self, request, context):
    """/ Connect two modules.
    /
    / Connect between m1's ogate and n2's igate (i.e., ackets sent to m1's ogate
    / will be fed to m2's igate). The oate can be connected to only one igate,
    / while the igate can be connected to multiple output gates.
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def DisconnectModules(self, request, context):
    """/ Disconnect two modules.
    /
    / It removes a connection between two modules (you specify the previous one
    / and its output gate). All packets coming out from the ogate will be
    / dropped. Once disconnected, the ogate can be connected
    / to any input gate.
    /
    / NOTE: There should be no running worker to run this command.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def DumpMempool(self, request, context):
    """/ Dump various stats about BESS's packet pools
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ModuleCommand(self, request, context):
    """/ Send a command to the specified module instance.
    /
    / Each module type defines a list of modyle-specific commands, which
    / allow external programs to communicate with the module at runtime.
    / See module_msg.proto for details.
    /
    / NOTE: Some commands cannot be used if there are running workers.
    /       For those commands you must pause all workers first.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListGateHookClass(self, request, context):
    """-------------------------------------------------------------------------
    Gate hooks
    -------------------------------------------------------------------------

    / Enumerate all gatehook types available
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GetGateHookClassInfo(self, request, context):
    """/ Query detailed information of a gatehook type
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ConfigureGateHook(self, request, context):
    """/ Enable/Disable a gate hook.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ListGateHooks(self, request, context):
    """/ Enumerate all gatehook installed
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def GateHookCommand(self, request, context):
    """/ Send command to gate hook instance.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')

  def ConfigureResumeHook(self, request, context):
    """-------------------------------------------------------------------------
    Resume hooks
    -------------------------------------------------------------------------

    / Enable/Disable a resume hook.
    """
    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
    context.set_details('Method not implemented!')
    raise NotImplementedError('Method not implemented!')


def add_BESSControlServicer_to_server(servicer, server):
  rpc_method_handlers = {
      'GetVersion': grpc.unary_unary_rpc_method_handler(
          servicer.GetVersion,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.VersionResponse.SerializeToString,
      ),
      'ResetAll': grpc.unary_unary_rpc_method_handler(
          servicer.ResetAll,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'KillBess': grpc.unary_unary_rpc_method_handler(
          servicer.KillBess,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ImportPlugin': grpc.unary_unary_rpc_method_handler(
          servicer.ImportPlugin,
          request_deserializer=bess__msg__pb2.ImportPluginRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'UnloadPlugin': grpc.unary_unary_rpc_method_handler(
          servicer.UnloadPlugin,
          request_deserializer=bess__msg__pb2.UnloadPluginRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ListPlugins': grpc.unary_unary_rpc_method_handler(
          servicer.ListPlugins,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListPluginsResponse.SerializeToString,
      ),
      'PauseAll': grpc.unary_unary_rpc_method_handler(
          servicer.PauseAll,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'PauseWorker': grpc.unary_unary_rpc_method_handler(
          servicer.PauseWorker,
          request_deserializer=bess__msg__pb2.PauseWorkerRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ResumeWorker': grpc.unary_unary_rpc_method_handler(
          servicer.ResumeWorker,
          request_deserializer=bess__msg__pb2.ResumeWorkerRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ResumeAll': grpc.unary_unary_rpc_method_handler(
          servicer.ResumeAll,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ResetWorkers': grpc.unary_unary_rpc_method_handler(
          servicer.ResetWorkers,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ListWorkers': grpc.unary_unary_rpc_method_handler(
          servicer.ListWorkers,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListWorkersResponse.SerializeToString,
      ),
      'AddWorker': grpc.unary_unary_rpc_method_handler(
          servicer.AddWorker,
          request_deserializer=bess__msg__pb2.AddWorkerRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'DestroyWorker': grpc.unary_unary_rpc_method_handler(
          servicer.DestroyWorker,
          request_deserializer=bess__msg__pb2.DestroyWorkerRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ResetTcs': grpc.unary_unary_rpc_method_handler(
          servicer.ResetTcs,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ListTcs': grpc.unary_unary_rpc_method_handler(
          servicer.ListTcs,
          request_deserializer=bess__msg__pb2.ListTcsRequest.FromString,
          response_serializer=bess__msg__pb2.ListTcsResponse.SerializeToString,
      ),
      'CheckSchedulingConstraints': grpc.unary_unary_rpc_method_handler(
          servicer.CheckSchedulingConstraints,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.CheckSchedulingConstraintsResponse.SerializeToString,
      ),
      'AddTc': grpc.unary_unary_rpc_method_handler(
          servicer.AddTc,
          request_deserializer=bess__msg__pb2.AddTcRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'UpdateTcParams': grpc.unary_unary_rpc_method_handler(
          servicer.UpdateTcParams,
          request_deserializer=bess__msg__pb2.UpdateTcParamsRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'UpdateTcParent': grpc.unary_unary_rpc_method_handler(
          servicer.UpdateTcParent,
          request_deserializer=bess__msg__pb2.UpdateTcParentRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'GetTcStats': grpc.unary_unary_rpc_method_handler(
          servicer.GetTcStats,
          request_deserializer=bess__msg__pb2.GetTcStatsRequest.FromString,
          response_serializer=bess__msg__pb2.GetTcStatsResponse.SerializeToString,
      ),
      'ListDrivers': grpc.unary_unary_rpc_method_handler(
          servicer.ListDrivers,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListDriversResponse.SerializeToString,
      ),
      'GetDriverInfo': grpc.unary_unary_rpc_method_handler(
          servicer.GetDriverInfo,
          request_deserializer=bess__msg__pb2.GetDriverInfoRequest.FromString,
          response_serializer=bess__msg__pb2.GetDriverInfoResponse.SerializeToString,
      ),
      'ResetPorts': grpc.unary_unary_rpc_method_handler(
          servicer.ResetPorts,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ListPorts': grpc.unary_unary_rpc_method_handler(
          servicer.ListPorts,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListPortsResponse.SerializeToString,
      ),
      'CreatePort': grpc.unary_unary_rpc_method_handler(
          servicer.CreatePort,
          request_deserializer=bess__msg__pb2.CreatePortRequest.FromString,
          response_serializer=bess__msg__pb2.CreatePortResponse.SerializeToString,
      ),
      'DestroyPort': grpc.unary_unary_rpc_method_handler(
          servicer.DestroyPort,
          request_deserializer=bess__msg__pb2.DestroyPortRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'SetPortConf': grpc.unary_unary_rpc_method_handler(
          servicer.SetPortConf,
          request_deserializer=bess__msg__pb2.SetPortConfRequest.FromString,
          response_serializer=bess__msg__pb2.CommandResponse.SerializeToString,
      ),
      'GetPortConf': grpc.unary_unary_rpc_method_handler(
          servicer.GetPortConf,
          request_deserializer=bess__msg__pb2.GetPortConfRequest.FromString,
          response_serializer=bess__msg__pb2.GetPortConfResponse.SerializeToString,
      ),
      'GetPortStats': grpc.unary_unary_rpc_method_handler(
          servicer.GetPortStats,
          request_deserializer=bess__msg__pb2.GetPortStatsRequest.FromString,
          response_serializer=bess__msg__pb2.GetPortStatsResponse.SerializeToString,
      ),
      'GetLinkStatus': grpc.unary_unary_rpc_method_handler(
          servicer.GetLinkStatus,
          request_deserializer=bess__msg__pb2.GetLinkStatusRequest.FromString,
          response_serializer=bess__msg__pb2.GetLinkStatusResponse.SerializeToString,
      ),
      'ListMclass': grpc.unary_unary_rpc_method_handler(
          servicer.ListMclass,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListMclassResponse.SerializeToString,
      ),
      'GetMclassInfo': grpc.unary_unary_rpc_method_handler(
          servicer.GetMclassInfo,
          request_deserializer=bess__msg__pb2.GetMclassInfoRequest.FromString,
          response_serializer=bess__msg__pb2.GetMclassInfoResponse.SerializeToString,
      ),
      'ResetModules': grpc.unary_unary_rpc_method_handler(
          servicer.ResetModules,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'ListModules': grpc.unary_unary_rpc_method_handler(
          servicer.ListModules,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListModulesResponse.SerializeToString,
      ),
      'CreateModule': grpc.unary_unary_rpc_method_handler(
          servicer.CreateModule,
          request_deserializer=bess__msg__pb2.CreateModuleRequest.FromString,
          response_serializer=bess__msg__pb2.CreateModuleResponse.SerializeToString,
      ),
      'DestroyModule': grpc.unary_unary_rpc_method_handler(
          servicer.DestroyModule,
          request_deserializer=bess__msg__pb2.DestroyModuleRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'GetModuleInfo': grpc.unary_unary_rpc_method_handler(
          servicer.GetModuleInfo,
          request_deserializer=bess__msg__pb2.GetModuleInfoRequest.FromString,
          response_serializer=bess__msg__pb2.GetModuleInfoResponse.SerializeToString,
      ),
      'ConnectModules': grpc.unary_unary_rpc_method_handler(
          servicer.ConnectModules,
          request_deserializer=bess__msg__pb2.ConnectModulesRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'DisconnectModules': grpc.unary_unary_rpc_method_handler(
          servicer.DisconnectModules,
          request_deserializer=bess__msg__pb2.DisconnectModulesRequest.FromString,
          response_serializer=bess__msg__pb2.EmptyResponse.SerializeToString,
      ),
      'DumpMempool': grpc.unary_unary_rpc_method_handler(
          servicer.DumpMempool,
          request_deserializer=bess__msg__pb2.DumpMempoolRequest.FromString,
          response_serializer=bess__msg__pb2.DumpMempoolResponse.SerializeToString,
      ),
      'ModuleCommand': grpc.unary_unary_rpc_method_handler(
          servicer.ModuleCommand,
          request_deserializer=bess__msg__pb2.CommandRequest.FromString,
          response_serializer=bess__msg__pb2.CommandResponse.SerializeToString,
      ),
      'ListGateHookClass': grpc.unary_unary_rpc_method_handler(
          servicer.ListGateHookClass,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListGateHookClassResponse.SerializeToString,
      ),
      'GetGateHookClassInfo': grpc.unary_unary_rpc_method_handler(
          servicer.GetGateHookClassInfo,
          request_deserializer=bess__msg__pb2.GetGateHookClassInfoRequest.FromString,
          response_serializer=bess__msg__pb2.GetGateHookClassInfoResponse.SerializeToString,
      ),
      'ConfigureGateHook': grpc.unary_unary_rpc_method_handler(
          servicer.ConfigureGateHook,
          request_deserializer=bess__msg__pb2.ConfigureGateHookRequest.FromString,
          response_serializer=bess__msg__pb2.ConfigureGateHookResponse.SerializeToString,
      ),
      'ListGateHooks': grpc.unary_unary_rpc_method_handler(
          servicer.ListGateHooks,
          request_deserializer=bess__msg__pb2.EmptyRequest.FromString,
          response_serializer=bess__msg__pb2.ListGateHooksResponse.SerializeToString,
      ),
      'GateHookCommand': grpc.unary_unary_rpc_method_handler(
          servicer.GateHookCommand,
          request_deserializer=bess__msg__pb2.GateHookCommandRequest.FromString,
          response_serializer=bess__msg__pb2.CommandResponse.SerializeToString,
      ),
      'ConfigureResumeHook': grpc.unary_unary_rpc_method_handler(
          servicer.ConfigureResumeHook,
          request_deserializer=bess__msg__pb2.ConfigureResumeHookRequest.FromString,
          response_serializer=bess__msg__pb2.CommandResponse.SerializeToString,
      ),
  }
  generic_handler = grpc.method_handlers_generic_handler(
      'bess.pb.BESSControl', rpc_method_handlers)
  server.add_generic_rpc_handlers((generic_handler,))
