Commit 1498f2b1 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Events:

- Correct dispatcher and runner of BaseEventDispatcher
- Adapt Simap Updater
parent 1fdeb6c6
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -44,7 +44,9 @@ class BaseEventDispatcher(threading.Thread):

    def _get_dispatcher(self, event : Any) -> Optional[Callable]:
        object_name = str(event.__class__.__name__).lower().replace('event', '')
        event_type  = EventTypeEnum.Name(event.event.event_type).lower().replace('eventtype_', '')
        event_type  = event.event.event_type
        event_type  = EventTypeEnum.Name(event_type)
        event_type  = event_type.lower().replace('eventtype_', '')

        method_name = 'dispatch_{:s}_{:s}'.format(object_name, event_type)
        dispatcher  = getattr(self, method_name, None)
@@ -65,6 +67,16 @@ class BaseEventDispatcher(threading.Thread):
            event = self._get_event()
            if event is None: continue

            object_name = str(event.__class__.__name__)
            object_name = object_name.lower().replace('event', '')
            if object_name == 'any':
                field_name = event.WhichOneof('event')
                event = getattr(event, field_name)

            event_type = event.event.event_type
            event_type = EventTypeEnum.Name(event_type)
            event_type = event_type.lower().replace('eventtype_', '')

            dispatcher = self._get_dispatcher(event)
            if dispatcher is None:
                MSG = 'No dispatcher available for Event({:s})'
+0 −29
Original line number Diff line number Diff line
@@ -68,35 +68,6 @@ class EventDispatcher(BaseEventDispatcher):
        MSG = 'Unexpected Event: {:s}'
        LOGGER.warning(MSG.format(grpc_message_to_json_string(event)))

    # overwrite default _get_dispatcher() method
    def _get_dispatcher(self, event : Any) -> Optional[Callable]:
        LOGGER.info('event[1]={:s}'.format(grpc_message_to_json_string(event)))
        object_name = str(event.__class__.__name__).lower().replace('event', '')
        LOGGER.info('object_name[1]={:s}'.format(str(object_name)))
        if object_name == 'any':
            object_name = event.WhichOneof('event')
            LOGGER.info('object_name[2]={:s}'.format(str(object_name)))
            event = getattr(event, object_name)
            LOGGER.info('event[2]={:s}'.format(grpc_message_to_json_string(event)))

        event_type = event.event.event_type
        LOGGER.info('event_type[1]={:s}'.format(str(event_type)))
        event_type  = EventTypeEnum.Name(event_type).lower().replace('eventtype_', '')
        LOGGER.info('event_type[2]={:s}'.format(str(event_type)))

        method_name = 'dispatch_{:s}_{:s}'.format(object_name, event_type)
        dispatcher  = getattr(self, method_name, None)
        if dispatcher is not None: return dispatcher

        method_name = 'dispatch_{:s}'.format(object_name)
        dispatcher  = getattr(self, method_name, None)
        if dispatcher is not None: return dispatcher

        method_name = 'dispatch'
        dispatcher  = getattr(self, method_name, None)
        if dispatcher is not None: return dispatcher

        return None

    def dispatch_topology_create(self, topology_event : TopologyEvent) -> None:
        MSG = 'Processing Topology Event: {:s}'