def doBroadcastMessage(self, arg):
     """
     Action method.
     """
     from broadcast import broadcast_service
     msg, newpacket = arg
     msgid = msg['id']
     if _Debug:
         lg.out(_DebugLevel, 'broadcaster_node.doBroadcastMessage %s' % msgid)
     if msgid in self.messages_sent:
         lg.warn('CRITICAL, found same message already broadcasted !!!')
         return
     # if some listeners connected - send to them
     for listener_idurl, scope in self.listeners.items():
         if listener_idurl == newpacket.OwnerID:
             # skip this listener
             continue
         lg.out(4, '           test %s:%s for %s' % (listener_idurl, scope, msg['owner']))
         # but check if they really need that message
         # listener can set a scope, so he will get this broadcasting
         # only if creator of that message is listed in scope
         if not scope or msg['owner'] in scope:
             outpacket = broadcast_service.packet_for_listener(
                 listener_idurl, msg)
             p2p_service.SendBroadcastMessage(outpacket)
     # fire broadcast listening callback
     if self.incoming_broadcast_message_callback is not None:
         self.incoming_broadcast_message_callback(msg)
     for broadcaster_idurl in self.connected_broadcasters:
         outpacket = broadcast_service.packet_for_broadcaster(
             broadcaster_idurl, msg)
         p2p_service.SendBroadcastMessage(outpacket)
     self.messages_sent[msgid] = int(time.time())
 def doBroadcastMessage(self, arg):
     """
     Action method.
     """
     from broadcast import broadcast_service
     msg, newpacket = arg
     msgid = msg['id']
     if _Debug:
         lg.out(_DebugLevel, 'broadcaster_node.doBroadcastMessage %s' % msgid)
     if msgid in self.messages_sent:
         lg.warn('CRITICAL, found same message already broadcasted !!!')
         return
     # if some listeners connected - send to them
     for listener_idurl, scope in self.listeners.items():
         if listener_idurl == newpacket.OwnerID:
             # skip this listener
             continue
         lg.out(4, '           test %s:%s for %s' % (listener_idurl, scope, msg['owner']))
         # but check if they really need that message
         # listener can set a scope, so he will get this broadcasting
         # only if creator of that message is listed in scope
         if not scope or msg['owner'] in scope:
             outpacket = broadcast_service.packet_for_listener(
                 listener_idurl, msg)
             p2p_service.SendBroadcastMessage(outpacket)
     # fire broadcast listening callback
     if self.incoming_broadcast_message_callback is not None:
         self.incoming_broadcast_message_callback(msg)
     for broadcaster_idurl in self.connected_broadcasters:
         outpacket = broadcast_service.packet_for_broadcaster(
             broadcaster_idurl, msg)
         p2p_service.SendBroadcastMessage(outpacket)
     self.messages_sent[msgid] = int(time.time())
 def doSendMessageToBroadcaster(self, *args, **kwargs):
     """
     Action method.
     """
     from broadcast import broadcast_service
     outpacket = broadcast_service.packet_for_broadcaster(
         self.broadcaster_idurl, *args, **kwargs)
     p2p_service.SendBroadcastMessage(outpacket)
 def doSendMessageToBroadcaster(self, arg):
     """
     Action method.
     """
     from broadcast import broadcast_service
     outpacket = broadcast_service.packet_for_broadcaster(
         self.broadcaster_idurl, arg)
     p2p_service.SendBroadcastMessage(outpacket)
Beispiel #5
0
    def doCheckAndSendForward(self, arg):
        """
        Action method.
        """
        from broadcast import broadcast_service
        msg, newpacket = arg
        msgid = msg['id']
        if _Debug:
            lg.out(_DebugLevel,
                   'broadcaster_node.doCheckAndSendForward %s' % msgid)
        self.last_success_action_time = time.time()
        # skip broadcasting if this message was already sent
        if msgid in self.messages_sent:
            if _Debug:
                lg.out(
                    _DebugLevel,
                    '        resent skipped, %s was already sent to my broadcasters'
                    % msgid)
#             if msgid not in self.messages_acked:
#                 p2p_service.SendAck(newpacket, '0')
#             else:
#                 p2p_service.SendAck(newpacket, str(self.messages_acked[msgid]))
            return
        # if some listeners connected - send to them
        for listener_idurl, scope in self.listeners.items():
            lg.out(
                4, '           test %s:%s for %s' %
                (listener_idurl, scope, msg['owner']))
            # but check if they really need that message
            # listener can set a scope, so he will get this broadcasting
            # only if creator of that message is listed in scope
            if not scope or msg['owner'] in scope:
                outpacket = broadcast_service.packet_for_listener(
                    listener_idurl, msg)
                p2p_service.SendBroadcastMessage(outpacket)
        # fire broadcast listening callback
        if self.incoming_broadcast_message_callback is not None:
            self.incoming_broadcast_message_callback(msg)
        # finally broadcast further
        for broadcaster_idurl in self.connected_broadcasters:
            outpacket = broadcast_service.packet_for_broadcaster(
                broadcaster_idurl, msg)
            p2p_service.SendBroadcastMessage(outpacket)
        self.messages_sent[msgid] = int(time.time())
    def doCheckAndSendForward(self, arg):
        """
        Action method.
        """
        from broadcast import broadcast_service
        msg, newpacket = arg
        msgid = msg['id']
        if _Debug:
            lg.out(_DebugLevel, 'broadcaster_node.doCheckAndSendForward %s' % msgid)
        self.last_success_action_time = time.time()
        # skip broadcasting if this message was already sent
        if msgid in self.messages_sent:
            if _Debug:
                lg.out(_DebugLevel,
                       '        resent skipped, %s was already sent to my broadcasters' % msgid)
#             if msgid not in self.messages_acked:
#                 p2p_service.SendAck(newpacket, '0')
#             else:
#                 p2p_service.SendAck(newpacket, str(self.messages_acked[msgid]))
            return
        # if some listeners connected - send to them
        for listener_idurl, scope in self.listeners.items():
            lg.out(4, '           test %s:%s for %s' % (listener_idurl, scope, msg['owner']))
            # but check if they really need that message
            # listener can set a scope, so he will get this broadcasting
            # only if creator of that message is listed in scope
            if not scope or msg['owner'] in scope:
                outpacket = broadcast_service.packet_for_listener(listener_idurl, msg)
                p2p_service.SendBroadcastMessage(outpacket)
        # fire broadcast listening callback
        if self.incoming_broadcast_message_callback is not None:
            self.incoming_broadcast_message_callback(msg)
        # finally broadcast further
        for broadcaster_idurl in self.connected_broadcasters:
            outpacket = broadcast_service.packet_for_broadcaster(broadcaster_idurl, msg)
            p2p_service.SendBroadcastMessage(outpacket)
        self.messages_sent[msgid] = int(time.time())