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
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
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 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