Opc.Ua.Server.Subscription.PublishTimeout C# (CSharp) Method

PublishTimeout() public method

Publishes a timeout status message.
public PublishTimeout ( ) : NotificationMessage
return NotificationMessage
        public NotificationMessage PublishTimeout()
        {
            NotificationMessage message = null;

            lock (m_lock)
            {
                m_expired = true;

                message = new NotificationMessage();

                message.SequenceNumber = (uint)m_sequenceNumber;
                message.PublishTime = DateTime.UtcNow;

                Utils.IncrementIdentifier(ref m_sequenceNumber);

                lock (m_diagnostics)
                {
                    m_diagnostics.NextSequenceNumber = (uint)m_sequenceNumber;
                }

                StatusChangeNotification notification = new StatusChangeNotification();
                notification.Status = StatusCodes.BadTimeout;
                message.NotificationData.Add(new ExtensionObject(notification));
            }

            return message;
        }

Usage Example

コード例 #1
0
        /// <summary>
        /// Called when a subscription expires.
        /// </summary>
        /// <param name="subscription">The subscription.</param>
        internal void SubscriptionExpired(Subscription subscription)
        {
            lock (m_statusMessages)
            {
                StatusMessage message = new StatusMessage();
                message.SubscriptionId = subscription.Id;
                message.Message = subscription.PublishTimeout();

                Queue<StatusMessage> queue = null;

                if (subscription.SessionId != null && m_statusMessages.TryGetValue(subscription.SessionId, out queue))
                {
                    queue.Enqueue(message);
                }
            }
        }