Opc.Ua.ServerTest.SubscribeTest.ModifySubscription C# (CSharp) Method

ModifySubscription() private method

Sets the publishing enable state for the subscriptions.
private ModifySubscription ( Subscription subscription, double publishingInterval ) : bool
subscription Subscription
publishingInterval double
return bool
        private bool ModifySubscription(Subscription subscription, double publishingInterval)
        {   
            try
            {        
                double revisedPublishingInterval;
                uint revisedLifetimeCount;
                uint revisedKeepAliveCount;
          
                RequestHeader requestHeader = new RequestHeader();
                requestHeader.ReturnDiagnostics = 0;

                DateTime start = DateTime.UtcNow;

                ResponseHeader responseHeader = Session.ModifySubscription(
                    requestHeader,
                    subscription.SubscriptionId,
                    publishingInterval,
                    subscription.LifetimeCount,
                    subscription.KeepAliveCount,
                    subscription.MaxNotificationsPerPublish,
                    subscription.Priority,
                    out revisedPublishingInterval,
                    out revisedLifetimeCount,
                    out revisedKeepAliveCount);
                
                double elapsedTime = (DateTime.UtcNow - start).TotalMilliseconds;

                if (elapsedTime > 300)
                {
                    Log("WARNING: ModifySubscription took {0}ms. Timing errors may occur.", (DateTime.UtcNow - start).TotalMilliseconds);
                }               

                PublishingState state = new PublishingState();

                state.KeepAliveCount = revisedKeepAliveCount;
                state.PublishingInterval = revisedPublishingInterval;
                state.Start = responseHeader.Timestamp;
                state.KeepAliveMode = true;

                lock (subscription)
                {
                    subscription.PublishingInterval = revisedPublishingInterval;
                    subscription.KeepAliveCount = revisedKeepAliveCount;
                    subscription.LifetimeCount = revisedLifetimeCount;
                    subscription.States[subscription.States.Count-1].End = state.Start;
                    subscription.States.Add(state);
                }

                return true;
            }
            catch (Exception e)
            {
                Log(e, "Error modifying state of subscription {0}.", subscription.SubscriptionId);
                return false;
            } 
        }