Esempio n. 1
0
 def _on_broadcast_routing_enabled_disabled(self, path, value, oldvalue,
                                            result):
     from logs import lg
     from broadcast import broadcaster_node
     from broadcast import broadcast_listener
     from broadcast import broadcast_service
     lg.out(
         2,
         'service_broadcasting._on_broadcast_routing_enabled_disabled : %s->%s : %s'
         % (oldvalue, value, path))
     if not value:
         if broadcaster_node.A() is not None:
             broadcaster_node.A().removeStateChangedCallback(
                 self._on_broadcaster_node_switched)
             broadcaster_node.A('shutdown')
         broadcast_listener.A(
             'init', broadcast_service.on_incoming_broadcast_message)
         broadcast_listener.A().addStateChangedCallback(
             self._on_broadcast_listener_switched)
         broadcast_listener.A('connect', self.scope)
     else:
         if broadcast_listener.A() is not None:
             broadcast_listener.A().removeStateChangedCallback(
                 self._on_broadcast_listener_switched)
             broadcast_listener.A('shutdown')
         broadcaster_node.A('init',
                            broadcast_service.on_incoming_broadcast_message)
         broadcaster_node.A().addStateChangedCallback(
             self._on_broadcaster_node_switched)
 def request(self, json_payload, newpacket, info):
     from logs import lg
     from p2p import p2p_service
     from main import settings
     # words = newpacket.Payload.split(' ')
     try:
         mode = json_payload['action']
     except:
         lg.exc()
         return p2p_service.SendFail(newpacket, 'invalid json payload')
     if mode != 'route' and mode != 'listen':
         lg.out(
             8,
             "service_broadcasting.request DENIED, wrong mode provided : %s"
             % mode)
         return p2p_service.SendFail(newpacket, 'invalid request')
     if not settings.enableBroadcastRouting():
         lg.out(
             8,
             "service_broadcasting.request DENIED, broadcast routing disabled"
         )
         return p2p_service.SendFail(newpacket,
                                     'broadcast routing disabled')
     from broadcast import broadcaster_node
     if not broadcaster_node.A():
         lg.out(
             8,
             "service_broadcasting.request DENIED, broadcast routing disabled"
         )
         return p2p_service.SendFail(newpacket,
                                     'broadcast routing disabled')
     if broadcaster_node.A().state not in [
             'BROADCASTING',
             'OFFLINE',
             'BROADCASTERS?',
     ]:
         lg.out(
             8,
             "service_broadcasting.request DENIED, current state is : %s" %
             broadcaster_node.A().state)
         return p2p_service.SendFail(newpacket,
                                     'currently not broadcasting')
     if mode == 'route':
         broadcaster_node.A('new-broadcaster-connected', newpacket.OwnerID)
         lg.out(8,
                "service_broadcasting.request ACCEPTED, mode: %s" % words)
         return p2p_service.SendAck(newpacket, 'accepted')
     if mode == 'listen':
         broadcaster_node.A().add_listener(newpacket.OwnerID,
                                           ' '.join(words[2:]))
         lg.out(
             8,
             "service_broadcasting.request ACCEPTED, mode: %s" % words[1])
         return p2p_service.SendAck(newpacket, 'accepted')
     return p2p_service.SendAck(newpacket, 'bad request')
Esempio n. 3
0
def send_broadcast_message(payload):
    from broadcast import broadcaster_node
    from broadcast import broadcast_listener
    msg = prepare_broadcast_message(my_id.getLocalID(), payload)
    if broadcaster_node.A():
        broadcaster_node.A('new-outbound-message', (msg, None))
    elif broadcast_listener.A():
        if broadcast_listener.A().state == 'OFFLINE':
            broadcast_listener.A('connect')
        broadcast_listener.A('outbound-message', msg)
    else:
        lg.warn('nor broadcaster_node(), nor broadcast_listener() exists')
        return None
    return msg
Esempio n. 4
0
 def stop(self):
     from broadcast import broadcaster_node
     from broadcast import broadcasters_finder
     from broadcast import broadcast_listener
     from main.config import conf
     broadcasters_finder.A('shutdown')
     if broadcaster_node.A() is not None:
         broadcaster_node.A().removeStateChangedCallback(
             self._on_broadcaster_node_switched)
         broadcaster_node.A('shutdown')
     if broadcast_listener.A() is not None:
         broadcast_listener.A().removeStateChangedCallback(
             self._on_broadcast_listener_switched)
         broadcast_listener.A('shutdown')
     conf().removeConfigNotifier('services/broadcasting/routing-enabled')
     return True
Esempio n. 5
0
 def start(self):
     from twisted.internet.defer import Deferred
     from broadcast import broadcasters_finder
     from broadcast import broadcaster_node
     from broadcast import broadcast_listener
     from broadcast import broadcast_service
     from main.config import conf
     from main import settings
     self.starting_deferred = Deferred()
     broadcasters_finder.A('init')
     if settings.enableBroadcastRouting():
         broadcaster_node.A('init',
                            broadcast_service.on_incoming_broadcast_message)
         broadcaster_node.A().addStateChangedCallback(
             self._on_broadcaster_node_switched)
     else:
         broadcast_listener.A(
             'init', broadcast_service.on_incoming_broadcast_message)
         broadcast_listener.A().addStateChangedCallback(
             self._on_broadcast_listener_switched)
         broadcast_listener.A('connect', self.scope)
     conf().addConfigNotifier('services/broadcasting/routing-enabled',
                              self._on_broadcast_routing_enabled_disabled)
     return self.starting_deferred
Esempio n. 6
0
 def health_check(self):
     from broadcast import broadcaster_node
     return broadcaster_node.A().state in [
         'BROADCASTING',
     ]