Example #1
0
    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
Example #2
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)
Example #3
0
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)