示例#1
0
    def insert_method_sequence_obj(in_sequence, in_conn):
        """
        添加对消息唯一标示进行处理
        """
        #启动MethodSequence节点时效性管理线程
        start_method_sequence_object_management_thread()

        #查找in_sequence是否纯正处理对象
        sequence_obj_handle = MethodSequenceManagement.get_method_sequence_obj_handle(
            in_sequence)
        if None != sequence_obj_handle:

            log_out("Sequence ID:%s" % in_sequence)

            #获取消息的状态
            sequence_obj_status = sequence_obj_handle.get_sequence_status()

            if (MethodSequence.METHOD_SEQUENCE_INIT == sequence_obj_status or
                    MethodSequence.METHOD_SEQUENCE_TRY == sequence_obj_status):

                log_out(
                    "Sequence object(%s) is exist, method status is METHOD_SEQUENCE_INIT or METHOD_SEQUENCE_TRY"
                    % in_sequence)

                #更新消息的状态为TRY,INIT之后并没有得到处理结果
                sequence_obj_handle.set_sequence_status_to_try(in_conn)

                #不再向下传递消息请求
                return False

            elif (MethodSequence.METHOD_SEQUENCE_FINISH == sequence_obj_status
                  or MethodSequence.METHOD_SEQUENCE_CONN_LOSE
                  == sequence_obj_status):

                log_out(
                    "Sequence object(%s) is exist, response buf finish data to client"
                    % in_sequence)

                #直接回复客户端消息处理结果
                sequence_obj_reponse_data = sequence_obj_handle.get_sequence_response_data(
                )

                from outputcontrol import ClientResponseHandle
                ClientResponseHandle.write_data_to_client(
                    in_conn, sequence_obj_reponse_data)

                #不再向下传递消息请求
                return False
        else:
            log_out("Create sequence object, sequence=%s" % in_sequence)

            #创建新的消息对象,并保存到列表中
            sequence_obj_handle = MethodSequenceManagement.new_method_sequence_obj(
                in_sequence, in_conn)

        #继续向下分发消息处理
        return True
示例#2
0
    def send_response_data_to_sequence_obj_other_conn_handle(
            in_conn_list, in_response_data):
        """
        将响应结果发送给消息ID的其他重复的连接
        """
        log_out(
            "send_response_data_to_sequence_obj_other_conn_handle start, in_conn_list count=%d"
            % len(in_conn_list))

        for conn in in_conn_list:

            #通过Client连接句柄发送响应数据到连接客户端
            from outputcontrol import ClientResponseHandle
            ClientResponseHandle.write_data_to_client(conn, in_response_data)

        log_out("send_response_data_to_sequence_obj_other_conn_handle end")