Пример #1
0
    def list_all_events(self,
                        start_time: int = None,
                        start_version: int = None,
                        end_version: int = None) -> List[BaseEvent]:
        """
        List specific `key` or `version` of events in Notification Service.

        :param start_time: (Optional) Start time of the events.
        :param start_version: (Optional) the version of the events must greater than the
                              start_version.
        :param end_version: (Optional) the version of the events must equal or less than the
                            end_version.
        :return: The event list.
        """
        request = ListAllEventsRequest(start_time=start_time,
                                       start_version=start_version,
                                       end_version=end_version)
        response = self.notification_stub.listAllEvents(request)
        if response.return_code == ReturnStatus.SUCCESS:
            if response.events is None:
                return []
            else:
                events = []
                for event_proto in response.events:
                    event = event_proto_to_event(event_proto)
                    events.append(event)
                return events
        else:
            raise Exception(response.return_msg)
Пример #2
0
 def list_events(client,
                 k: Tuple[str],
                 v: List[int],
                 t: str = None,
                 ts: int = None,
                 ns: str = None,
                 sd: str = None,
                 timeout_seconds: int = None):
     request = ListEventsRequest(keys=k,
                                 event_type=t,
                                 start_time=ts,
                                 start_version=v,
                                 timeout_seconds=timeout_seconds,
                                 namespace=ns,
                                 sender=sd)
     response = client.notification_stub.listEvents(request)
     if response.return_code == ReturnStatus.SUCCESS:
         if response.events is None:
             return None
         else:
             events = []
             for event_proto in response.events:
                 event = event_proto_to_event(event_proto)
                 events.append(event)
             return events
     else:
         raise Exception(response.return_msg)
Пример #3
0
    def list_events(self,
                    key: Union[str, List[str]],
                    version: int = None,
                    event_type: str = None,
                    start_time: int = None) -> List[BaseEvent]:
        """
        List specific events in Notification Service.

        :param key: Key of the event for listening.
        :param version: (Optional) The version of the events must greater than this version.
        :param event_type: (Optional) Type of the events.
        :param start_time: (Optional) Start time of the events.
        :return: The event list.
        """
        if isinstance(key, str):
            key = (key, )
        elif isinstance(key, Iterable):
            key = tuple(key)
        request = ListEventsRequest(keys=key,
                                    start_version=version,
                                    event_type=event_type,
                                    start_time=start_time,
                                    namespace=self._default_namespace)
        response = self.notification_stub.listEvents(request)
        if response.return_code == ReturnStatus.SUCCESS:
            if response.events is None:
                return []
            else:
                events = []
                for event_proto in response.events:
                    event = event_proto_to_event(event_proto)
                    events.append(event)
                return events
        else:
            raise Exception(response.return_msg)
Пример #4
0
 async def _send_event(self, request):
     response = await super(HighAvailableNotificationService,
                            self)._send_event(request)
     try:
         if response.return_code == notification_service_pb2.ReturnStatus.SUCCESS:
             self.ha_manager.notify_others(
                 event_proto_to_event(response.event))
     finally:
         return response
Пример #5
0
 def list_events_from_version(client, v, timeout_seconds: int = None):
     request = ListAllEventsRequest(start_version=v,
                                    timeout_seconds=timeout_seconds)
     response = client.notification_stub.listAllEvents(request)
     if response.return_code == ReturnStatus.SUCCESS:
         if response.events is None:
             return None
         else:
             events = []
             for event_proto in response.events:
                 event = event_proto_to_event(event_proto)
                 events.append(event)
             return events
     else:
         raise Exception(response.return_msg)
Пример #6
0
    def send_event(self, event: BaseEvent):
        """
        Send event to Notification Service.

        :param event: the event updated.
        :return: The created event which has version and create time.
        """
        request = SendEventRequest(event=EventProto(
            key=event.key,
            value=event.value,
            event_type=event.event_type,
            context=event.context,
            namespace=self._default_namespace),
                                   uuid=str(uuid.uuid4()))
        response = self.notification_stub.sendEvent(request)
        if response.return_code == ReturnStatus.SUCCESS:
            return event_proto_to_event(response.event)
        else:
            raise Exception(response.return_msg)