def listen_to_events(delta_filters=None): '''Listen to cookiejar state-delta events.''' # Subscribe to events block_commit_subscription = events_pb2.EventSubscription( event_type="sawtooth/block-commit") state_delta_subscription = events_pb2.EventSubscription( event_type="sawtooth/state-delta", filters=delta_filters) fine_subscription = events_pb2.EventSubscription( event_type="AC is in good condition") problem_subscription = events_pb2.EventSubscription( event_type="AC is malfunctioning") fixed_subscription = events_pb2.EventSubscription( event_type="Maintenance fixed the AC") notfixed_subscription = events_pb2.EventSubscription( event_type="Maintenance hasn't fixed the AC yet") request = client_event_pb2.ClientEventsSubscribeRequest( subscriptions=[fine_subscription,problem_subscription,fixed_subscription,notfixed_subscription]) # Send the subscription request stream = Stream(DEFAULT_VALIDATOR_URL) msg = stream.send(message_type=Message.CLIENT_EVENTS_SUBSCRIBE_REQUEST, content=request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_SUBSCRIBE_RESPONSE # Parse the subscription response response = client_event_pb2.ClientEventsSubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsSubscribeResponse.OK # Listen for events in an infinite loop print("Listening to events.") msg = stream.receive().result() assert msg.message_type == Message.CLIENT_EVENTS # Parse the response event_list = events_pb2.EventList() event_list.ParseFromString(msg.content) print("Received the following events: ----------") notification=[] for event in event_list.events: notification.append((event.event_type,event.attributes)) #server_socket(notification) # Unsubscribe from events request = client_event_pb2.ClientEventsUnsubscribeRequest() msg = stream.send(Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_UNSUBSCRIBE_RESPONSE # Parse the unsubscribe response response = client_event_pb2.ClientEventsUnsubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsUnsubscribeResponse.OK return notification
def unsubscribeEvent(self): request = client_event_pb2.ClientEventsUnsubscribeRequest() msg = stream.send(Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_UNSUBSCRIBE_RESPONSE response = client_event_pb2.ClientEventsUnsubscribeResponse() response.ParseFromString(msg.content) assert response.status == client_event_pb2.ClientEventsUnsubscribeResponse.OK print("Evens Unsubscribed ! ", flush=True)
def listen_to_events(delta_filters=None): '''Listen to cookiejar state-delta events.''' # Subscribe to events block_commit_subscription = events_pb2.EventSubscription( event_type="sawtooth/block-commit") state_delta_subscription = events_pb2.EventSubscription( event_type="sawtooth/state-delta", filters=delta_filters) bake_subscription = events_pb2.EventSubscription( event_type="cookiejar/bake") eat_subscription = events_pb2.EventSubscription(event_type="cookiejar/eat") request = client_event_pb2.ClientEventsSubscribeRequest(subscriptions=[ block_commit_subscription, state_delta_subscription, bake_subscription, eat_subscription ]) # Send the subscription request stream = Stream(DEFAULT_VALIDATOR_URL) msg = stream.send(message_type=Message.CLIENT_EVENTS_SUBSCRIBE_REQUEST, content=request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_SUBSCRIBE_RESPONSE # Parse the subscription response response = client_event_pb2.ClientEventsSubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsSubscribeResponse.OK # Listen for events in an infinite loop print("Listening to events.") while True: msg = stream.receive().result() assert msg.message_type == Message.CLIENT_EVENTS # Parse the response event_list = events_pb2.EventList() event_list.ParseFromString(msg.content) print("Received the following events: ----------") for event in event_list.events: print(event) # Unsubscribe from events request = client_event_pb2.ClientEventsUnsubscribeRequest() msg = stream.send(Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_UNSUBSCRIBE_RESPONSE # Parse the unsubscribe response response = client_event_pb2.ClientEventsUnsubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsUnsubscribeResponse.OK
def unsubscribe_from_events(): # Unsubscribe from events stream = Stream(DEFAULT_VALIDATOR_URL) request = client_event_pb2.ClientEventsUnsubscribeRequest() msg = stream.send(Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_UNSUBSCRIBE_RESPONSE # Parse the unsubscribe response response = client_event_pb2.ClientEventsUnsubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsUnsubscribeResponse.OK
async def _unregister_subscriptions(self): with await self._subscriber_lock: if self._delta_task and not self._subscribers: self._listening = False self._delta_task.cancel() self._delta_task = None req = client_event_pb2.ClientEventsUnsubscribeRequest() try: await self._connection.send( Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, req.SerializeToString(), timeout=DEFAULT_TIMEOUT) LOGGER.info('Unsubscribed to state delta events') except asyncio.TimeoutError as e: LOGGER.error('Unable to unsubscribe from events: %s', str(e))
def _unsubscribe(self): request = client_event_pb2.ClientEventsUnsubscribeRequest() response = self.stream.send( validator_pb2.Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() return response
def listen_to_events(delta_filters=None): BenLogDB.set_table('beneficiary_log', '(id,beneficiary_id,beneficiary_type_id)') '''Listen to vaccination state-delta events.''' # Subscribe to events add_beneficiary_subscription = events_pb2.EventSubscription( event_type="Beneficiary/Add_Beneficiary", filters=delta_filters) block_commit_subscription = events_pb2.EventSubscription( event_type="sawtooth/block-commit", filters=delta_filters) #Create subscription request requestBen = client_event_pb2.ClientEventsSubscribeRequest( subscriptions=[ block_commit_subscription, add_beneficiary_subscription ], last_known_block_ids=['0000000000000000']) # Send the subscription request streamBen = Stream(BEN_VALIDATOR_URL) msgBen = streamBen.send( message_type=Message.CLIENT_EVENTS_SUBSCRIBE_REQUEST, content=requestBen.SerializeToString()).result() assert msgBen.message_type == Message.CLIENT_EVENTS_SUBSCRIBE_RESPONSE # Parse the subscription response responseBen = client_event_pb2.ClientEventsSubscribeResponse() responseBen.ParseFromString(msgBen.content) assert responseBen.status == client_event_pb2.ClientEventsSubscribeResponse.OK # Listen for events in an infinite loop while True: msgBen = streamBen.receive().result() assert msgBen.message_type == Message.CLIENT_EVENTS # Parse the response event_list_ben = events_pb2.EventList() event_list_ben.ParseFromString(msgBen.content) # Log each Beneficiary event into the DB for event in event_list_ben.events: if event.event_type == "Beneficiary/Add_Beneficiary": print("Received the beneficiry event", flush=True) print("Beneficiary ID : ", event.attributes[0].value, flush=True) print("Beneficiary Type : ", event.attributes[1].value, flush=True) BenLogDB.insert_data( uuid.uuid4(), #uuid event.attributes[0].value, #beneficiaryId event.attributes[1].value) #beneficiaryType # Unsubscribe from events request = client_event_pb2.ClientEventsUnsubscribeRequest() msg = stream.send(Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_UNSUBSCRIBE_RESPONSE # Parse the unsubscribe response response = client_event_pb2.ClientEventsUnsubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsUnsubscribeResponse.OK
def listen_to_events(delta_filters=None): '''Listen to all state-delta events from the attestation TF.''' trustQueryHits = 0 trustQueryMisses = 0 # Subscribe to events evidence_submission_subscription = events_pb2.EventSubscription( event_type="attestation/evidence_submission", filters=delta_filters) evidence_deletion_subscription = events_pb2.EventSubscription( event_type="attestation/evidence_deletion", filters=delta_filters) trust_path_subscription = events_pb2.EventSubscription( event_type="attestation/trustpath", filters=delta_filters) trust_entry_subscription = events_pb2.EventSubscription( event_type="attestation/entrypoint", filters=delta_filters) request = client_event_pb2.ClientEventsSubscribeRequest( subscriptions=[evidence_submission_subscription, evidence_deletion_subscription, trust_path_subscription, trust_entry_subscription]) ''' block_commit_subscription = events_pb2.EventSubscription( event_type="sawtooth/block-commit") state_delta_subscription = events_pb2.EventSubscription( event_type="sawtooth/state-delta", filters=delta_filters) request = client_event_pb2.ClientEventsSubscribeRequest( subscriptions=[block_commit_subscription, state_delta_subscription]) ''' # Send the subscription request stream = Stream(DEFAULT_VALIDATOR_URL) msg = stream.send(message_type=Message.CLIENT_EVENTS_SUBSCRIBE_REQUEST, content=request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_SUBSCRIBE_RESPONSE # Parse the subscription response response = client_event_pb2.ClientEventsSubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsSubscribeResponse.OK # Listen for events in an infinite loop print("Listening to events.") lastevent = None while True: msg = stream.receive().result() assert msg.message_type == Message.CLIENT_EVENTS # Parse the response event_list = events_pb2.EventList() event_list.ParseFromString(msg.content) print("Received the following events: ----------") for event in event_list.events: if event == lastevent: continue else: lastevent = event print(event) if (event.event_type == "attestation/evidence_submission"): vrf = event.attributes[0].value prv = event.attributes[1].value writeEdgeData(vrf, prv) elif (event.event_type == "attestation/evidence_deletion"): vrf = event.attributes[0].value prv = event.attributes[1].value deleteEdgeData(vrf, prv) elif (event.event_type == "attestation/trustpath"): trustQueryHits +=1 elif (event.event_type == "attestation/entrypoint"): trustQueryMisses +=1 # Unsubscribe from events request = client_event_pb2.ClientEventsUnsubscribeRequest() msg = stream.send(Message.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, request.SerializeToString()).result() assert msg.message_type == Message.CLIENT_EVENTS_UNSUBSCRIBE_RESPONSE # Parse the unsubscribe response response = client_event_pb2.ClientEventsUnsubscribeResponse() response.ParseFromString(msg.content) assert response.status == \ client_event_pb2.ClientEventsUnsubscribeResponse.OK