예제 #1
0
    def callback(self, action, res_content, comm_params):
        """协议处理完后的回调(生成响应结果,写统计日志)

        参数:

        - action:子协议动作

        - res_content:子协议包响应结果

        - comm_params:通传参数

        返回:None
        """
        try:
            # print 'callback'
            res_action = action[3:]
            self.res_packages[res_action] = res_content
            self.res_comm_params[res_action] = comm_params
            self.dealing = self.dealing - 1

            if self.dealing == 0:
                # 处理完所有action
                res_package = packet.RspPacket()
                res_package.mask = 0
                res_package.rescode = 0
                res_package.resmsg = ''

                for each_action in self.req_actions:
                    res_package.action.append('Rsp' + each_action)
                    res_package.params.append(self.res_packages[each_action])
                    self.res_comm_params[each_action].update({'resaction': 'Rsp' + each_action})
                    stats.comm_stat_record(self.res_comm_params[each_action])  # 写统计日志
                self.finish_fuc(res_package.SerializeToString())
        except Exception, e:
            self.logger.write('callback', e)
예제 #2
0
        """
        action_len = len(self.req_packet.action)
        self.dealing = action_len
        self.finish_fuc = finish_fuc

        err_num = 0
        for i in xrange(action_len):
            action = self.req_packet.action[i]
            params = self.req_packet.params[i]
            self.req_actions.append(action[3:])
            try:
                self.com_param['reqaction'] = action  # 用于记录统计数据
                self.com_param['reqactno'] = i + 1
                handler = self.proto_map[action]()  # 初始化协议处理器
                handler.action = action
                yield handler.deal(params, self.com_param, self.callback)
            except Exception, e:
                self.logger.write('run', e)
                err_num = err_num + 1

        if err_num == action_len:
            # 整体失败
            res_package = packet.RspPacket()
            res_package.mask = 0
            res_package.rescode = 1
            res_package.resmsg = u'整体失败'
            self.com_param['rescode'] = 1
            self.com_param['resaction'] = 'RspPacket'
            stats.comm_stat_record(self.com_param)  # 写统计日志
            finish_fuc(res_package.SerializeToString())