/// <summary> /// Serializes the crash threads. /// </summary> /// <param name="threads">The threads.</param> /// <param name="writer">The writer.</param> private static void SerializeCrashThreads(IList<CrashTelemetryThread> threads, JsonWriter writer) { bool first = true; foreach (CrashTelemetryThread thread in threads) { if (first == false) { writer.WriteComma(); } first = false; writer.WriteStartObject(); writer.WriteProperty("id", thread.Id); writer.WritePropertyName("frames"); { writer.WriteStartArray(); JsonSerializer.SerializeCrashThreadFrames(thread.Frames, writer); writer.WriteEndArray(); } writer.WriteEndObject(); } }
private static void SerializeMetricTelemetry(MetricTelemetry metricTelemetry, JsonWriter writer) { writer.WriteStartObject(); metricTelemetry.WriteTelemetryName(writer, MetricTelemetry.TelemetryName); metricTelemetry.WriteEnvelopeProperties(writer); writer.WritePropertyName("data"); { writer.WriteStartObject(); // TODO: MetricTelemetry should write type as this.data.baseType once Common Schema 2.0 compliant. writer.WriteProperty("baseType", metricTelemetry.BaseType); writer.WritePropertyName("baseData"); { writer.WriteStartObject(); writer.WriteProperty("ver", metricTelemetry.Data.ver); writer.WritePropertyName("metrics"); { writer.WriteStartArray(); writer.WriteStartObject(); writer.WriteProperty("name", metricTelemetry.Metric.name); writer.WriteProperty("kind", metricTelemetry.Metric.kind.ToString()); writer.WriteProperty("value", metricTelemetry.Metric.value); writer.WriteProperty("count", metricTelemetry.Metric.count); writer.WriteProperty("min", metricTelemetry.Metric.min); writer.WriteProperty("max", metricTelemetry.Metric.max); writer.WriteProperty("stdDev", metricTelemetry.Metric.stdDev); writer.WriteEndObject(); writer.WriteEndArray(); } writer.WriteProperty("properties", metricTelemetry.Data.properties); writer.WriteEndObject(); } writer.WriteEndObject(); } writer.WriteEndObject(); }
/// <summary> /// Serializes the crash. /// </summary> /// <param name="telemetry">The telemetry.</param> /// <param name="writer">The writer.</param> private static void SerializeCrash(CrashTelemetry telemetry, JsonWriter writer) { writer.WriteStartObject(); telemetry.WriteTelemetryName(writer, CrashTelemetry.TelemetryName); telemetry.WriteEnvelopeProperties(writer); writer.WritePropertyName("data"); { writer.WriteStartObject(); writer.WriteProperty("baseType", telemetry.BaseType); writer.WritePropertyName("baseData"); { writer.WriteStartObject(); writer.WriteProperty("ver", telemetry.Data.ver); writer.WriteProperty("handledAt", Utils.PopulateRequiredStringValue(telemetry.Data.handledAt, "handledAt", typeof(ExceptionTelemetry).FullName)); writer.WriteProperty("stackTrace", telemetry.StackTrace); // write headers writer.WritePropertyName("headers"); { writer.WriteStartObject(); writer.WriteProperty("id", telemetry.Headers.Id); writer.WriteProperty("process", telemetry.Headers.Process); writer.WriteProperty("processId", telemetry.Headers.ProcessId); writer.WriteProperty("parentProcess", telemetry.Headers.ParentProcess); writer.WriteProperty("parentProcessId", telemetry.Headers.ParentProcessId); writer.WriteProperty("crashThread", telemetry.Headers.CrashThreadId); writer.WriteProperty("applicationPath", telemetry.Headers.ApplicationPath); writer.WriteProperty("applicationIdentifier", telemetry.Headers.ApplicationId); writer.WriteProperty("exceptionType", telemetry.Headers.ExceptionType); writer.WriteProperty("exceptionCode", telemetry.Headers.ExceptionCode); writer.WriteProperty("exceptionAddress", telemetry.Headers.ExceptionAddress); writer.WriteProperty("exceptionReason", telemetry.Headers.ExceptionReason); writer.WriteEndObject(); } // write threads writer.WritePropertyName("threads"); { writer.WriteStartArray(); JsonSerializer.SerializeCrashThreads(telemetry.Threads, writer); writer.WriteEndArray(); } // write threads writer.WritePropertyName("binaries"); { writer.WriteStartArray(); JsonSerializer.SerializeCrashBinaries(telemetry.Binaries, writer); writer.WriteEndArray(); } // write threads writer.WritePropertyName("attachments"); { writer.WriteStartObject(); writer.WriteProperty("description", telemetry.Attachments.Description); writer.WriteProperty("userName", HockeyClient.Current.AsInternal().UserID); writer.WriteProperty("userEmail", HockeyClient.Current.AsInternal().ContactInformation); writer.WriteEndObject(); } writer.WriteEndObject(); } writer.WriteEndObject(); } writer.WriteEndObject(); }
private static void SerializeExceptionTelemetry(ExceptionTelemetry exceptionTelemetry, JsonWriter writer) { writer.WriteStartObject(); exceptionTelemetry.WriteTelemetryName(writer, ExceptionTelemetry.TelemetryName); exceptionTelemetry.WriteEnvelopeProperties(writer); writer.WritePropertyName("data"); { writer.WriteStartObject(); writer.WriteProperty("baseType", exceptionTelemetry.BaseType); writer.WritePropertyName("baseData"); { writer.WriteStartObject(); writer.WriteProperty("ver", exceptionTelemetry.Data.ver); writer.WriteProperty( "handledAt", Utils.PopulateRequiredStringValue(exceptionTelemetry.Data.handledAt, "handledAt", typeof(ExceptionTelemetry).FullName)); writer.WriteProperty("properties", exceptionTelemetry.Data.properties); writer.WriteProperty("measurements", exceptionTelemetry.Data.measurements); writer.WritePropertyName("exceptions"); { writer.WriteStartArray(); SerializeExceptions(exceptionTelemetry.Exceptions, writer); writer.WriteEndArray(); } if (exceptionTelemetry.Data.severityLevel.HasValue) { writer.WriteProperty("severityLevel", exceptionTelemetry.Data.severityLevel.Value.ToString()); } writer.WriteEndObject(); } writer.WriteEndObject(); } writer.WriteEndObject(); }