Esempio n. 1
0
    // 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);
    }
Esempio n. 2
0
    // 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;
    }