def publish_callback(self, publishresult): self.logger.info("Publish callback called with result: %s", publishresult) if not self.is_ready(): self.logger.warning( "Result received but subscription not ready %s", publishresult) return if publishresult.NotificationMessage.NotificationData is not None: for notif in publishresult.NotificationMessage.NotificationData: if isinstance(notif, ua.DataChangeNotification): self._call_datachange(notif) elif isinstance(notif, ua.EventNotificationList): self._call_event(notif) elif isinstance(notif, ua.StatusChangeNotification): self._call_status(notif) else: self.logger.warning( "Notification type not supported yet for notification %s", notif) else: self.logger.warning("NotificationMessage is None.") ack = ua.SubscriptionAcknowledgement() ack.SubscriptionId = self.subscription_id ack.SequenceNumber = publishresult.NotificationMessage.SequenceNumber self.server.publish([ack])
def publish_callback(self, publishresult): self.logger.info("Publish callback called with result: %s", publishresult) while self.subscription_id is None: time.sleep(0.01) for notif in publishresult.NotificationMessage.NotificationData: if notif.TypeId == ua.FourByteNodeId( ua.ObjectIds.DataChangeNotification_Encoding_DefaultBinary ): datachange = ua.DataChangeNotification.from_binary( io.BytesIO(notif.to_binary())) self._call_datachange(datachange) elif notif.TypeId == ua.FourByteNodeId( ua.ObjectIds.EventNotificationList_Encoding_DefaultBinary): eventlist = ua.EventNotificationList.from_binary( io.BytesIO(notif.to_binary())) self._call_event(eventlist) elif notif.TypeId == ua.FourByteNodeId( ua.ObjectIds. StatusChangeNotification_Encoding_DefaultBinary): statuschange = ua.StatusChangeNotification.from_binary( io.BytesIO(notif.to_binary())) self._call_status(statuschange) else: self.logger.warning( "Notification type not supported yet for notification %s", notif) ack = ua.SubscriptionAcknowledgement() ack.SubscriptionId = self.subscription_id ack.SequenceNumber = publishresult.NotificationMessage.SequenceNumber self.server.publish([ack])
def publish_callback(self, publishresult): self.logger.info("Publish callback called with result: %s", publishresult) while self.subscription_id is None: time.sleep(0.01) for notif in publishresult.NotificationMessage.NotificationData: if isinstance(notif, ua.DataChangeNotification): self._call_datachange(notif) elif isinstance(notif, ua.EventNotificationList): self._call_event(notif) elif isinstance(notif, ua.StatusChangeNotification): self._call_status(notif) else: self.logger.warning("Notification type not supported yet for notification %s", notif) ack = ua.SubscriptionAcknowledgement() ack.SubscriptionId = self.subscription_id ack.SequenceNumber = publishresult.NotificationMessage.SequenceNumber self.server.publish([ack])