// implemented from callback interface // ============================================================================================= void SubscriptionFactory::notificationsMissing( OpcUa_UInt32 clientSubscriptionHandle, OpcUa_UInt32 previousSequenceNumber, OpcUa_UInt32 newSequenceNumber) { logger_->debug("Notifications are missing for subscription %d! (%d + 1 != %d)", clientSubscriptionHandle, previousSequenceNumber, newSequenceNumber); // acquire the subscription: Subscription* subscription = 0; Status acquireStatus = acquireExistingSubscription(clientSubscriptionHandle, subscription); SubscriptionInformation info; if (acquireStatus.isGood()) { // get the updated subscription info info = subscription->subscriptionInformation(); // release the acquired session releaseSubscription(subscription); } else { logger_->warning("Unknown ClientSubscriptionHandle, discarding notification!"); } // call the callback interface clientInterface_->notificationsMissing(info, previousSequenceNumber, newSequenceNumber); }
// Get information about the subscription // ============================================================================================= Status SubscriptionFactory::subscriptionInformation( ClientSubscriptionHandle clientSubscriptionHandle, SubscriptionInformation& subscriptionInformation) { Status ret; Subscription* subscription = 0; ret = acquireExistingSubscription(clientSubscriptionHandle, subscription); if (ret.isGood()) { subscriptionInformation = subscription->subscriptionInformation(); releaseSubscription(subscription); } return ret; }