private static void FlushDataSuppressExceptions() { try { int key = 0x2098; if (dataValueCache.ContainsKey(key)) { WinSQMWrapper.WinSqmSet(key, dataValueCache[key]); dataValueCache.Remove(key); } WinSQMWrapper.WinSqmIncrement(dataValueCache); dataValueCache.Clear(); WriteWorkflowStateDataToStreamAndClear(); WriteAllDataToStreamAndClear(cmdletData, 0x2665); WriteAllDataToStreamAndClear(workflowData, 0x2662); WriteAllDataToStreamAndClear(workflowTypeData, 0x2696); WriteAllDataToStreamAndClear(workflowCommonParameterData, 0x2660); WriteAllDataToStreamAndClear(workflowOotbActivityData, 0x2661); WriteAllDataToStreamAndClear(workflowSpecificParameterTypeData, 0x2663); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } }
public static void NoteWorkflowEnd(Guid workflowInstanceId) { if (isWinSQMEnabled) { long num2; long ticks = DateTime.Now.Ticks; lock (syncObject) { if (!workflowExecutionDurationData.ContainsKey(workflowInstanceId)) { return; } num2 = workflowExecutionDurationData[workflowInstanceId]; workflowExecutionDurationData.Remove(workflowInstanceId); } try { long num3 = ticks - num2; TimeSpan span = new TimeSpan(num3); WinSQMWrapper.WinSqmAddToStream(0x265c, span.TotalMinutes.ToString(CultureInfo.InvariantCulture)); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
public static void NoteRunspaceEnd(Guid rsInstanceId) { if (isWinSQMEnabled) { long ticks = DateTime.Now.Ticks; long num2 = ticks; lock (syncObject) { if (!runspaceDurationData.ContainsKey(rsInstanceId)) { return; } num2 = runspaceDurationData[rsInstanceId]; runspaceDurationData.Remove(rsInstanceId); } try { long num3 = ticks - num2; if (num3 >= timeValueThreshold) { TimeSpan span = new TimeSpan(num3); WinSQMWrapper.WinSqmAddToStream(0x2666, span.TotalMinutes.ToString(CultureInfo.InvariantCulture)); } } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
private static void WriteAllDataToStreamAndClear(Dictionary <string, int> data, int dataPoint) { foreach (string str in data.Keys) { WinSQMWrapper.WinSqmAddToStream(dataPoint, str, data[str]); } data.Clear(); }
public static void NoteWorkflowOutputStreamSize(int size, string streamType) { if (isWinSQMEnabled) { try { WinSQMWrapper.WinSqmAddToStream(0x269a, streamType, size); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
public static void NoteWorkflowEndpointConfiguration(string quotaName, int data) { if (isWinSQMEnabled) { try { WinSQMWrapper.WinSqmAddToStream(0x2699, quotaName, data); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
public static void NoteWorkflowCommonParametersValues(string parameterName, int data) { if (isWinSQMEnabled) { try { WinSQMWrapper.WinSqmAddToStream(0x268d, parameterName, data); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
public static void NoteSessionConfigurationOutputBufferingMode(string optBufferingMode) { if (isWinSQMEnabled) { try { WinSQMWrapper.WinSqmAddToStream(0x20b8, optBufferingMode); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
public static void NoteSessionConfigurationIdleTimeout(int idleTimeout) { if (isWinSQMEnabled) { try { WinSQMWrapper.WinSqmAddToStream(0x209f, idleTimeout.ToString(CultureInfo.InvariantCulture)); } catch (Exception exception) { CommandProcessorBase.CheckForSevereException(exception); } } }
static PSSQMAPI() { if (WinSQMWrapper.IsWinSqmOptedIn()) { dataValueCache = new Dictionary <int, int>(); cmdletData = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase); workflowData = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase); workflowCommonParameterData = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase); workflowOotbActivityData = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase); workflowSpecificParameterTypeData = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase); workflowStateData = new Dictionary <Guid, Tuple <int, int, int, int> >(); workflowTypeData = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase); runspaceDurationData = new Dictionary <Guid, long>(); workflowExecutionDurationData = new Dictionary <Guid, long>(); timeValueThreshold = 0x23c34600L; AppDomain.CurrentDomain.ProcessExit += new EventHandler(PSSQMAPI.CurrentDomain_ProcessExit); startedAtTick = DateTime.Now.Ticks; isWinSQMEnabled = true; } }
private static void WriteWorkflowStateDataToStreamAndClear() { Dictionary <Guid, Tuple <int, int, int, int> > dictionary = new Dictionary <Guid, Tuple <int, int, int, int> >(); foreach (KeyValuePair <Guid, Tuple <int, int, int, int> > pair in workflowStateData) { if (pair.Value.Item1 != 0) { dictionary.Add(pair.Key, pair.Value); } else { int num = (pair.Value.Item2 + pair.Value.Item3) + pair.Value.Item4; if (num != 0) { WinSQMWrapper.WinSqmAddToStream(0x2698, JobState.Completed.ToString(), Convert.ToInt32((double)((((double)pair.Value.Item2) / ((double)num)) * 100.0))); WinSQMWrapper.WinSqmAddToStream(0x2698, JobState.Failed.ToString(), Convert.ToInt32((double)((((double)pair.Value.Item3) / ((double)num)) * 100.0))); WinSQMWrapper.WinSqmAddToStream(0x2698, JobState.Stopped.ToString(), Convert.ToInt32((double)((((double)pair.Value.Item4) / ((double)num)) * 100.0))); } } } workflowStateData = dictionary; }