public void Delete(OperationContext context)
{
// delete the diagnostics.
if (m_diagnosticsId != null && !m_diagnosticsId.IsNullNodeId)
{
ServerSystemContext systemContext = m_server.DefaultSystemContext.Copy(m_session);
m_server.DiagnosticsNodeManager.DeleteSubscriptionDiagnostics(systemContext, m_diagnosticsId);
}
lock (m_lock)
{
try
{
// TraceState("DELETED");
// the context may be null if the server is cleaning up expired subscriptions.
// in this case we create a context with a dummy request and use the current session.
if (context == null)
{
RequestHeader requestHeader = new RequestHeader();
requestHeader.ReturnDiagnostics = (uint)(int)DiagnosticsMasks.OperationSymbolicIdAndText;
context = new OperationContext(requestHeader, RequestType.Unknown);
}
StatusCodeCollection results;
DiagnosticInfoCollection diagnosticInfos;
DeleteMonitoredItems(
context,
new UInt32Collection(m_monitoredItems.Keys),
true,
out results,
out diagnosticInfos);
}
catch (Exception e)
{
Utils.Trace(e, "Delete items for subscription failed.");
}
}
}