def handle_message(self, message: Message): message_type = message.get_message_type() self.__snapshot[message_type] = True (data_handler, business_rule) = setting.messages_to_receive[message_type] data_handler(message.get_message_data(), self.__data) (snapshot_to_meet, logic_rule, messages_to_send) = business_rule is_messages_got = self.is_messages_got if len(snapshot_to_meet) > 0 and snapshot_to_meet[0] == '': snapshot_to_meet.remove('') is_messages_got = self.is_just_messages_got if is_messages_got(snapshot_to_meet) and logic_rule(self.__data): for (message_type, to_entities_ids_generator, send_data_generator) in messages_to_send: (from_entity_type, to_entities_type) = setting.messages_paths[message_type] if from_entity_type != setting.entity_type: continue to_entities_ids = to_entities_ids_generator( self.__entity_id, self.__data) send_data = send_data_generator(self.__data) MessageHandler(self.__artifact_id, message_type, from_entity_type, self.__entity_id, to_entities_type, to_entities_ids, send_data).send()
def send_message(send_data): global new_artifact_id to_entities_ids = to_entities_ids_chooser(1, send_data) MessageHandler(new_artifact_id, begin_message_type, external_type, 1, begin_message_to_entities_type, to_entities_ids, send_data).send() new_artifact_id += 1
def wait_incoming(self): botdb_cursor = self.botdb.cursor() botdb_cursor.execute("SELECT * FROM config") config_data = botdb_cursor.fetchone() botdb_cursor.close() lastid = (config_data[0], ) skypedb_cursor = self.skypedb.cursor() skypedb_cursor.execute("SELECT convo_id, body_xml, id, timestamp, author FROM messages WHERE id > ? ORDER BY id ASC", lastid) messages = skypedb_cursor.fetchall() skypedb_cursor.close() if not messages: return False for message in messages: if message[4] == DTSkypeBotConfig.login: print "Ignoring messages from ourselves" continue MessageHandler(self, message[0], message[1]) last_message = [message[2], message[3]] botdb_cursor = self.botdb.cursor() botdb_cursor.execute("UPDATE config SET last_message_id = ?, last_message_timestamp = ?", last_message) self.botdb.commit()
def handle_message(self, message: Message): if message.get_artifact_id() != self.__artifact_id: return message_type = message.get_message_type() self.__snapshot[message_type] = True (data_handler, business_rule) = setting.messages_to_receive[message_type] data_handler(message.get_message_data(), self.__data) (snapshot_to_meet, logic_rule, messages_to_send) = business_rule # TODO: Choose `is_just_messages_got` or `is_messages_got`? if self.is_just_messages_got(snapshot_to_meet) and logic_rule( self.__data): for (message_type, to_entities_ids_generator, send_data_generator) in messages_to_send: (from_entity_type, to_entities_type) = setting.messages_paths[message_type] if from_entity_type != setting.entity_type: continue to_entities_ids = to_entities_ids_generator( self.__entity_id, self.__data) send_data = send_data_generator(self.__data) MessageHandler(self.__artifact_id, message_type, from_entity_type, self.__entity_id, to_entities_type, to_entities_ids, send_data).send()
def run(self): while True: code, data = MessageHandler.receive_message(self.socket) if int(code) not in self.actions: print('Unknown code {}'.format(code)) continue if code.startswith('0'): self.actions[0](code[1:], data) continue self.actions[int(code)](data)
from addressbar_handler import AddressBarHandler from screen_handler import ScreenHandler from message import MessageHandler message_handler = MessageHandler() ScreenHandler(message_handler).start() AddressBarHandler(message_handler).start()
def message_receiver(self): while True: code, data = MessageHandler.receive_message(self.socket) Client._message_receiver_event.set() # Interrupt main loop self.thread_actions[int(code[0])](data) Client._message_receiver_event.clear() # Continue with main loop
def send_message(self, code, data=None): MessageHandler.send_message('{}:{}'.format(code, data), self.socket)
def on_message(self, message): oauth_token = self.get_secure_cookie(settings["OAUTH"]["session_key"]) user_name = redis_client.get(oauth_token) MessageHandler.handle(user_name, message, MessageSocketHandler.socket_pool)
def acknowledge_login(self, client_socket): MessageHandler.send_message('{}:OK'.format(Code.ACK_LOGIN), client_socket)
def send_users_info(self, client_socket): self.update( ) # TODO: Place update call when client logs in and logs out message = '{}:{}'.format(Code.USERS_INFO, str(self.client_names)) MessageHandler.send_message(message, client_socket)
def notify(self, code, data): """Sends Conversation IDs, forwards messages and exit statuses""" message = '{}:{}'.format(code, data) MessageHandler.send_message(message, *[t.socket for t in self.participants])