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
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")