public static void Log(SQMDataId sqmDataId, int nData) { SQMDataPoint dataPoint = FindDataPoint(sqmDataId); if (dataPoint.id == SQMDataId.Invalid) { return; } switch (dataPoint.action) { case SQMAction.Add: SQMAddWrapper(dataPoint.GetName(), nData); break; case SQMAction.Inc: SQMAddWrapper(dataPoint.GetName(), 1); break; case SQMAction.SetFlag: SQMSetFlagWrapper(dataPoint.GetName(), nData != 0); break; case SQMAction.SetBits: SQMSetBitsWrapper(dataPoint.GetName(), (uint)nData); break; default: throw new ArgumentException("Datapoint " + dataPoint.GetName() + " is not a simple DWORD-type datapoint. Use LogToStream for stream-type datapoints."); } Telemetry.Instance.ReportEvent(dataPoint, nData); }
public void ReportEvent(SQMDataPoint datapoint, int nData) { SQMDataId id = datapoint.id; bool flag = datapoint.action == SQMAction.Add || datapoint.action == SQMAction.Inc; if (id == SQMDataId.Invalid || !flag || !this.m_sqmToEventMap.ContainsKey(id)) { return; } Hashtable hashtable = new Hashtable(); DatapointInfo sqmToEvent = (DatapointInfo)this.m_sqmToEventMap[id]; if (sqmToEvent.IsSession) { hashtable.Add("@Data", nData); hashtable.Add("@EventType", sqmToEvent.TypeName); } this.QueueTelemetry(new TelemetryInfo(sqmToEvent.Event, "", hashtable, sqmToEvent.IsSession)); }
public static void LogToStream(SQMDataId sqmDataId, params string[] args) { SQMDataPoint dataPoint = FindDataPoint(sqmDataId); if (dataPoint.id == SQMDataId.Invalid) { return; } if (dataPoint.action != SQMAction.MixedStream) { throw new ArgumentException("Datapoint " + dataPoint.GetName() + " is not a MixedStream-type datapoint. Error in parameters/paramtypes, or in datapoint declaration."); } if (args.Length > 9) { throw new ArgumentException("Too many (or too few) number params. SQM only allows up to 9 params. Datapoint: " + dataPoint.GetName(), "args.Length"); } if (args.Length != dataPoint.argCount) { throw new ArgumentException("Passed-in arg count doesn't match datapoint declaration: " + dataPoint.GetName(), "args.Length"); } if (args.Length == 1) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0]); } else if (args.Length == 2) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1]); } else if (args.Length == 3) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2]); } else if (args.Length == 4) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2], args[3]); } else if (args.Length == 5) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2], args[3], args[4]); } else if (args.Length == 6) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2], args[3], args[4], args[5]); } else if (args.Length == 7) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } else if (args.Length == 8) { SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]); } else { if (args.Length != 9) { return; } SQMAddToStream(dataPoint.GetName(), c_rgSPTArrayAllStrings, (uint)args.Length, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]); } }