Пример #1
0
 def _send(self, socks, msg, no_make=False):
     """Raw function to send a message"""
     count = len(socks)
     for s in socks:
         try:
             if no_make:
                 s.sendall(msg)
             else:
                 s.sendall(
                     message_key_types.make_message(
                         PayloadType.Type_msgpack, msg))
             self.stats.update_stats_increment("user_message",
                                               "sent_msg_to_user", 1)
         except:
             count -= 1
     return count > 0
Пример #2
0
    def _send_msg(self, dat):
        """Send the message to the core node

        Args:
            dat (dict): message object to send
        Returns:
            bytes: query ID for request/response type message
        """
        if KeyType.domain_id not in dat or KeyType.source_user_id not in dat:
            self.logger.warn("Message must include domain_id and source_id")
            return None
        try:
            msg = message_key_types.make_message(PayloadType.Type_msgpack, dat)
            self.connection.sendall(msg)
        except Exception as e:
            self.logger.error(traceback.format_exc())
            return None
        return self.query_id
Пример #3
0
    def send_message_in_network(self, domain_id, dst_user_id, msg):
        """Send message to another user

        Args:
            domain_id (bytes): target domain_id
            dst_user_id (bytes): target user_id
            msg (dict): message to send
        """
        dat = bytes(
            message_key_types.make_message(PayloadType.Type_msgpack, msg))
        dst_info = bytearray(int(0).to_bytes(1, 'big'))
        dst_info.extend(int(len(dst_user_id)).to_bytes(1, 'big'))
        dst_info.extend(int(len(domain_id)).to_bytes(1, 'big'))
        dst_info.extend(dst_user_id)
        dst_info.extend(domain_id)
        dst_info = bytes(dst_info)
        if not self.redis_msg.exists(dst_info):
            self.redis_msg.lpush(dst_info, dat)
            self.redis_msg.expire(dst_info, MSG_EXPIRE_SECONDS)
        else:
            self.redis_msg.lpush(dst_info, dat)
        self.redis_pubsub.publish(domain_id, dst_info)
Пример #4
0
def direct_send_to_user(sock, msg):
    sock.sendall(message_key_types.make_message(PayloadType.Type_msgpack, msg))