123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- __all__= ['ASRServicer','init']
- import grpc,threading,traceback
- import logging as Log
- import mllp_grpc.asr_pb2_grpc as asr_pb2_grpc
- import mllp_grpc.asr_pb2 as asr_pb2
- import mllp_grpc.asr_common_pb2 as asr_common_pb2
- import google.protobuf.empty_pb2 as empty_pb2
- import server_lib.decoder_multi as decoder_multi
- from server_lib.decoder_mng import DecoderException
- def ii_(func,txt,context):
- Log.info('[%s] (%s) %s'%(context.peer(),func,txt))
-
- class ASRServicer(asr_pb2_grpc.ASRServicer):
- def __init__(self,mng):
- self._mng= mng
- def AddSystem(self,request,context):
- def ii(txt): ii_('AddSystem',txt,context)
- try:
- self._mng.add(request.host,request.port,ii)
- ii('added %s:%d'%(request.host,request.port))
- code= asr_pb2.AddSystemResponse.Code.OK
- return asr_pb2.AddSystemResponse(code=code)
- except Exception as e:
- msg= 'error adding system %s:%d: %s'%(request.host,
- request.port,
- str(e))
- ii(msg)
- code= asr_pb2.AddSystemResponse.Code.OK
- return asr_pb2.AddSystemResponse(code=code,
- details=msg)
- def GetSystemInfoById(self,request,context):
- def ii(txt): ii_('GetSystemInfoById',txt,context)
- ii("retrieving ASR system information for %s"%request.system_id)
- ok,info= self._mng.get_system_info(request.system_id,ii)
- if ok:
- return asr_pb2.GetSystemInfoByIdResponse(
- code=asr_pb2.GetSystemInfoByIdResponse.Code.OK,
- info=info.info,
- num_decoders=info.num_decoders,
- num_decoders_available=info.num_decoders_available,
- id=info.id)
- else:
- return asr_pb2.GetSystemInfoByIdResponse(
- code=asr_pb2.GetSystemInfoByIdResponse.Code.ERR)
-
- def GetSystemsInfo(self,request,context):
- def ii(txt): ii_('GetSystemsInfo',txt,context)
- ii('retrieving ASR systems information')
- for v in self._mng.get_systems_info(ii):
- yield asr_pb2.GetSystemsInfoResponse(
- info=v.info,
- num_decoders=v.num_decoders,
- num_decoders_available=v.num_decoders_available,
- id=v.id)
- def GetHostsInfo(self,request,context):
- def ii(txt): ii_('GetHostsInfo',txt,context)
- ii('retrieving hosts information')
- for v in self._mng.get_hosts_info(ii):
- yield asr_pb2.GetHostsInfoResponse(
- info=v.info,
- num_decoders=v.num_decoders,
- num_decoders_available=v.num_decoders_available,
- host=v.host,
- port=v.port)
-
- def Decode(self,request_iterator,context):
- def ii(txt): ii_('Decode',txt,context)
- try:
- for o in self._mng.decode(request_iterator,ii):
- yield o
- except DecoderException as e:
- ii(e.msg)
- status= asr_common_pb2.DecodeResponse.Status(code=e.code,
- details=e.msg)
- yield asr_common_pb2.DecodeResponse(status=status)
- except BaseException as e:
- traceback.print_exc()
- ii(str(e))
- code= asr_common_pb2.DecodeResponse.Status.Code.ERR_RECO
- status= asr_common_pb2.DecodeResponse.Status(code=code,
- details=str(e))
- yield asr_common_pb2.DecodeResponse(status=status)
- ii('Done!')
- def DecodeMulti(self,request_iterator,context):
- def ii(txt): ii_('DecodeMulti',txt,context)
- try:
- for o in decoder_multi.decode(self._mng,request_iterator,ii):
- yield o
- except DecoderException as e:
- ii(e.msg)
- status= asr_common_pb2.DecodeResponse.Status(code=e.code,
- details=e.msg)
- res= asr_common_pb2.DecodeResponse(status=status)
- yield asr_pb2.DecodeMultiResponse(res=res)
- except BaseException as e:
- traceback.print_exc()
- ii(str(e))
- code= asr_common_pb2.DecodeResponse.Status.Code.ERR_RECO
- status= asr_common_pb2.DecodeResponse.Status(code=code,
- details=str(e))
- res= asr_common_pb2.DecodeResponse(status=status)
- yield asr_pb2.DecodeMultiResponse(res=res)
- ii('Done!')
-
- def init(server,mng):
- asr_pb2_grpc.add_ASRServicer_to_server(
- ASRServicer(mng),server)
-
|