public bool Publish(OperationContext context, Queue<MonitoredItemNotification> notifications, Queue<DiagnosticInfo> diagnostics)
{
lock (m_lock)
{
// check if not ready to publish.
if (!IsReadyToPublish)
{
return false;
}
// update sample time.
IncrementSampleTime();
// update publish flag.
m_readyToPublish = false;
m_readyToTrigger = false;
// check if queuing is enabled.
if (m_queue == null)
{
Publish(context, m_lastValue, m_lastError, notifications, diagnostics);
}
else
{
DataValue value = null;
ServiceResult error = null;
while (m_queue.Publish(out value, out error))
{
Publish(context, value, error, notifications, diagnostics);
}
}
return true;
}
}