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;
}
/// <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); } } }