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