Example #1
0
 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);
     }
 }
Example #2
0
 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);
         }
     }
 }
Example #3
0
 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);
         }
     }
 }
Example #4
0
 private static void WriteAllDataToStreamAndClear(Dictionary <string, int> data, int dataPoint)
 {
     foreach (string str in data.Keys)
     {
         WinSQMWrapper.WinSqmAddToStream(dataPoint, str, data[str]);
     }
     data.Clear();
 }
Example #5
0
 public static void NoteWorkflowOutputStreamSize(int size, string streamType)
 {
     if (isWinSQMEnabled)
     {
         try
         {
             WinSQMWrapper.WinSqmAddToStream(0x269a, streamType, size);
         }
         catch (Exception exception)
         {
             CommandProcessorBase.CheckForSevereException(exception);
         }
     }
 }
Example #6
0
 public static void NoteWorkflowEndpointConfiguration(string quotaName, int data)
 {
     if (isWinSQMEnabled)
     {
         try
         {
             WinSQMWrapper.WinSqmAddToStream(0x2699, quotaName, data);
         }
         catch (Exception exception)
         {
             CommandProcessorBase.CheckForSevereException(exception);
         }
     }
 }
Example #7
0
 public static void NoteWorkflowCommonParametersValues(string parameterName, int data)
 {
     if (isWinSQMEnabled)
     {
         try
         {
             WinSQMWrapper.WinSqmAddToStream(0x268d, parameterName, data);
         }
         catch (Exception exception)
         {
             CommandProcessorBase.CheckForSevereException(exception);
         }
     }
 }
Example #8
0
 public static void NoteSessionConfigurationOutputBufferingMode(string optBufferingMode)
 {
     if (isWinSQMEnabled)
     {
         try
         {
             WinSQMWrapper.WinSqmAddToStream(0x20b8, optBufferingMode);
         }
         catch (Exception exception)
         {
             CommandProcessorBase.CheckForSevereException(exception);
         }
     }
 }
Example #9
0
 public static void NoteSessionConfigurationIdleTimeout(int idleTimeout)
 {
     if (isWinSQMEnabled)
     {
         try
         {
             WinSQMWrapper.WinSqmAddToStream(0x209f, idleTimeout.ToString(CultureInfo.InvariantCulture));
         }
         catch (Exception exception)
         {
             CommandProcessorBase.CheckForSevereException(exception);
         }
     }
 }
Example #10
0
 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;
     }
 }
Example #11
0
        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;
        }