def new_copy(self): """Return a new packet that is a copy of this packet with a new id and with a fresh status """ packet = Packet.from_dict(self.as_dict()) packet.id = shared_utils.generate_event_id(self.receiver_id) return packet
def send_message(self, receiver_id, assignment_id, data, blocking=True, ack_func=None): """Send a message through the socket manager, update conversation state """ data['type'] = data_model.MESSAGE_TYPE_MESSAGE # Force messages to have a unique ID if 'message_id' not in data: data['message_id'] = str(uuid.uuid4()) event_id = generate_event_id(receiver_id) packet = Packet(event_id, Packet.TYPE_MESSAGE, self.socket_manager.get_my_sender_id(), receiver_id, assignment_id, data, blocking=blocking, ack_func=ack_func) # Push outgoing message to the message thread to be able to resend # on a reconnect event assignment = self.worker_state[receiver_id].assignments[assignment_id] assignment.messages.append(packet.data) self.socket_manager.queue_packet(packet)
def send_command(self, receiver_id, assignment_id, data, blocking=True, ack_func=None): """Sends a command through the socket manager, update conversation state """ data['type'] = data_model.MESSAGE_TYPE_COMMAND event_id = generate_event_id(receiver_id) packet = Packet(event_id, Packet.TYPE_MESSAGE, self.socket_manager.get_my_sender_id(), receiver_id, assignment_id, data, blocking=blocking, ack_func=ack_func) if (data['text'] != data_model.COMMAND_CHANGE_CONVERSATION and data['text'] != data_model.COMMAND_RESTORE_STATE and assignment_id in self.worker_state[receiver_id].assignments): # Append last command, as it might be necessary to restore state assign = self.worker_state[receiver_id].assignments[assignment_id] assign.last_command = packet.data self.socket_manager.queue_packet(packet)
def new_copy(self): """Return a new packet that is a copy of this packet with a new id and with a fresh status """ packet = Packet.from_dict(self.as_dict()) packet.id = generate_event_id(self.receiver_id) return packet
def send_message(self, receiver_id, assignment_id, data, blocking=True, ack_func=None): """Send a message through the socket manager, update conversation state """ data['type'] = data_model.MESSAGE_TYPE_MESSAGE # Force messages to have a unique ID if 'message_id' not in data: data['message_id'] = str(uuid.uuid4()) event_id = shared_utils.generate_event_id(receiver_id) packet = Packet( event_id, Packet.TYPE_MESSAGE, self.socket_manager.get_my_sender_id(), receiver_id, assignment_id, data, blocking=blocking, ack_func=ack_func ) shared_utils.print_and_log( logging.INFO, 'Manager sending: {}'.format(packet), should_print=self.opt['verbose'] ) # Push outgoing message to the message thread to be able to resend # on a reconnect event agent = self._get_agent(receiver_id, assignment_id) if agent is not None: agent.state.messages.append(packet.data) self.socket_manager.queue_packet(packet)
def send_command(self, receiver_id, assignment_id, data, blocking=True, ack_func=None): """Sends a command through the socket manager, update conversation state """ data['type'] = data_model.MESSAGE_TYPE_COMMAND event_id = shared_utils.generate_event_id(receiver_id) packet = Packet( event_id, Packet.TYPE_MESSAGE, self.socket_manager.get_my_sender_id(), receiver_id, assignment_id, data, blocking=blocking, ack_func=ack_func ) agent = self._get_agent(receiver_id, assignment_id) if (data['text'] != data_model.COMMAND_CHANGE_CONVERSATION and data['text'] != data_model.COMMAND_RESTORE_STATE and agent is not None): # Append last command, as it might be necessary to restore state agent.state.last_command = packet.data self.socket_manager.queue_packet(packet)
def send_message(self, receiver_id, assignment_id, data, blocking=True, ack_func=None): """'Send' a message directly by updating the queue of messages not yet recieved that the agent can pull from """ data = data.copy() # Ensure data packet is sent in current state data['type'] = data_model.MESSAGE_TYPE_MESSAGE # Force messages to have a unique ID if 'message_id' not in data: data['message_id'] = str(uuid.uuid4()) conversation_id = None agent = self.id_to_agent[receiver_id] conversation_id = agent.conversation_id event_id = shared_utils.generate_event_id(receiver_id) packet = Packet(event_id, Packet.TYPE_MESSAGE, 'world', receiver_id, assignment_id, data, conversation_id=conversation_id, blocking=blocking, ack_func=ack_func) shared_utils.print_and_log(logging.INFO, 'Manager sending: {}'.format(packet), should_print=self.opt['verbose']) # Push message to restore queue and incoming queue agent.append_message(packet.data) agent.unread_messages.append(packet) return data['message_id']
def new_copy(self): """Return a new packet that is a copy of this packet with a new id and with a fresh status """ packet = Packet.from_dict(self.as_dict()) packet.id = shared_utils.generate_event_id(self.receiver_id) packet.blocking = self.blocking packet.requires_ack = self.requires_ack return packet