public void WriteOutputEvent(object e) { _obj = _jsonWriter.Object(); switch (e) { case EvaluationEvent ee: WriteEvaluationEvent(ee, false); break; case IdentifyEvent ie: WriteBase("identify", ie.Timestamp, ie.User?.Key); WriteUser(ie.User); break; case CustomEvent ce: WriteBase("custom", ce.Timestamp, ce.EventKey); WriteUserOrKey(ce.User, false, true); if (!ce.Data.IsNull) { LdValueConverter.WriteJsonValue(ce.Data, _obj.Name("data")); } if (ce.MetricValue.HasValue) { _obj.Name("metricValue").Double(ce.MetricValue.Value); } break; case AliasEvent ae: WriteBase("alias", ae.Timestamp, ae.Key); _obj.Name("contextKind").String(ae.ContextKind.ToIdentifier()); _obj.Name("previousKey").String(ae.PreviousKey); _obj.Name("previousContextKind").String(ae.PreviousContextKind.ToIdentifier()); break; case EventProcessorInternal.IndexEvent ie: WriteBase("index", ie.Timestamp, null); WriteUserOrKey(ie.User, true, false); break; case EventProcessorInternal.DebugEvent de: WriteEvaluationEvent(de.FromEvent, true); break; default: break; } _obj.End(); }