public void Modify(
OperationContext context,
double publishingInterval,
uint maxLifetimeCount,
uint maxKeepAliveCount,
uint maxNotificationsPerPublish,
byte priority)
{
lock (m_lock)
{
// check session.
VerifySession(context);
// clear lifetime counter.
ResetLifetimeCount();
m_maxLifetimeCount = maxLifetimeCount;
// update publishing interval.
if (publishingInterval != m_publishingInterval)
{
m_publishingInterval = publishingInterval;
m_publishTimerExpiry = (HiResClock.UtcNow.Ticks/TimeSpan.TicksPerMillisecond) + (long)publishingInterval;
ResetKeepaliveCount();
}
// update keep alive count.
if (maxKeepAliveCount != m_maxKeepAliveCount)
{
m_maxKeepAliveCount = maxKeepAliveCount;
}
m_maxNotificationsPerPublish = maxNotificationsPerPublish;
// update priority.
m_priority = priority;
// update diagnostics
lock (m_diagnostics)
{
m_diagnostics.ModifyCount++;
m_diagnostics.PublishingInterval = m_publishingInterval;
m_diagnostics.MaxKeepAliveCount = m_maxKeepAliveCount;
m_diagnostics.MaxLifetimeCount = m_maxLifetimeCount;
m_diagnostics.Priority = m_priority;
m_diagnostics.MaxNotificationsPerPublish = m_maxNotificationsPerPublish;
}
// TraceState("MODIFIED");
}
}