private void UpdateDiagnosticCounters(RequestType requestType, bool error, bool authorizationError)
{
lock (m_diagnostics)
{
if (!error)
{
m_diagnostics.ClientLastContactTime = DateTime.UtcNow;
}
m_diagnostics.TotalRequestCount.TotalCount++;
if (error)
{
m_diagnostics.TotalRequestCount.ErrorCount++;
if (authorizationError)
{
m_diagnostics.UnauthorizedRequestCount++;
}
}
ServiceCounterDataType counter = null;
switch (requestType)
{
case RequestType.Read: { counter = m_diagnostics.ReadCount; break; }
case RequestType.HistoryRead: { counter = m_diagnostics.HistoryReadCount; break; }
case RequestType.Write: { counter = m_diagnostics.WriteCount; break; }
case RequestType.HistoryUpdate: { counter = m_diagnostics.HistoryUpdateCount; break; }
case RequestType.Call: { counter = m_diagnostics.CallCount; break; }
case RequestType.CreateMonitoredItems: { counter = m_diagnostics.CreateMonitoredItemsCount; break; }
case RequestType.ModifyMonitoredItems: { counter = m_diagnostics.ModifyMonitoredItemsCount; break; }
case RequestType.SetMonitoringMode: { counter = m_diagnostics.SetMonitoringModeCount; break; }
case RequestType.SetTriggering: { counter = m_diagnostics.SetTriggeringCount; break; }
case RequestType.DeleteMonitoredItems: { counter = m_diagnostics.DeleteMonitoredItemsCount; break; }
case RequestType.CreateSubscription: { counter = m_diagnostics.CreateSubscriptionCount; break; }
case RequestType.ModifySubscription: { counter = m_diagnostics.ModifySubscriptionCount; break; }
case RequestType.SetPublishingMode: { counter = m_diagnostics.SetPublishingModeCount; break; }
case RequestType.Publish: { counter = m_diagnostics.PublishCount; break; }
case RequestType.Republish: { counter = m_diagnostics.RepublishCount; break; }
case RequestType.TransferSubscriptions: { counter = m_diagnostics.TransferSubscriptionsCount; break; }
case RequestType.DeleteSubscriptions: { counter = m_diagnostics.DeleteSubscriptionsCount; break; }
case RequestType.AddNodes: { counter = m_diagnostics.AddNodesCount; break; }
case RequestType.AddReferences: { counter = m_diagnostics.AddReferencesCount; break; }
case RequestType.DeleteNodes: { counter = m_diagnostics.DeleteNodesCount; break; }
case RequestType.DeleteReferences: { counter = m_diagnostics.DeleteReferencesCount; break; }
case RequestType.Browse: { counter = m_diagnostics.BrowseCount; break; }
case RequestType.BrowseNext: { counter = m_diagnostics.BrowseNextCount; break; }
case RequestType.TranslateBrowsePathsToNodeIds: { counter = m_diagnostics.TranslateBrowsePathsToNodeIdsCount; break; }
case RequestType.QueryFirst: { counter = m_diagnostics.QueryFirstCount; break; }
case RequestType.QueryNext: { counter = m_diagnostics.QueryNextCount; break; }
case RequestType.RegisterNodes: { counter = m_diagnostics.RegisterNodesCount; break; }
case RequestType.UnregisterNodes: { counter = m_diagnostics.UnregisterNodesCount; break; }
}
if (counter != null)
{
counter.TotalCount = counter.TotalCount + 1;
if (error)
{
counter.ErrorCount = counter.ErrorCount + 1;
}
}
}
}
#endregion