def master_watch(self): """ 处理收包,调用具体协议的业务逻辑 调用master处理类中的enter()函数 :return: """ try: # 收包,放在这的原因是,如果包错误(可能性很大),省掉类实例话操作 result = branch_socket.receive_from_sock(self.master_sock) if result == 0: return 0 message, address = result # 调用业务处理逻辑 master_obj = self.master_class(config=self.config) response = master_obj.enter(message) if response == 0: # 非法包,不处理,不回包 g_log.debug("no response") return 0 # g_log.debug("response %s", response) self.master_sock.sendto(response, address) except Exception as e: # TODO 后台处理异常,暂时不回包 g_log.critical("%s", e) return 0
def receive_from_level2(self): return receive_from_sock(self.lv2_sock) # def get_level2_sock(): # """ # 获取请求level2的socket # :return: sock/成功,None/失败 # """ # try: # level2 = Level2Access() # return level2.lv2_sock # except Exception as e: # g_log.error("<%s> %s", e.__class__, e) # return None # # # def send_to_level2(request): # """ # 发送请求到level2 # :param request: 请求pb # :return: # """ # try: # message = package.serial_pb(request) # level2 = Level2Access() # yield level2.send_to_level2(message) # # # # def receive_from_level2(fd, events): # def receive_from_level2(): # try: # level2 = Level2Access() # response = level2.receive_from_level2() # g_log.debug(response) # res = common_pb2.Response() # res.ParseFromString(response[6:-2]) # # uuid = res.head.coroutine_uuid # return res # except Exception as e: # g_log.debug(e)
def pack_send_receive(req): address = ('127.0.0.1', 9527) request = package.serial_pb(req) # 发包 sock = socket.socket(type=socket.SOCK_DGRAM) sock.connect(address) g_log.debug("Sending %s bytes to %s", len(request), address) g_log.debug("%s", req) send_to_sock(sock, request) # 收包 result = receive_from_sock(sock) if result == 0: return 0 response, _ = result g_log.debug('receive %s bytes from %s', len(response), _) res = common_pb2.Response() res.ParseFromString(response[6:-2]) g_log.debug('%s', res)