in model/modeljson/apmevent.pb.json.go [26:264]
func MarshalAPMEvent(e *modelpb.APMEvent, w *fastjson.Writer) error {
var labels map[string]modeljson.Label
if n := len(e.Labels); n > 0 {
labels = make(map[string]modeljson.Label)
for k, label := range e.Labels {
if label != nil {
labels[sanitizeLabelKey(k)] = modeljson.Label{
Value: label.Value,
Values: label.Values,
}
}
}
}
var numericLabels map[string]modeljson.NumericLabel
if n := len(e.NumericLabels); n > 0 {
numericLabels = make(map[string]modeljson.NumericLabel)
for k, label := range e.NumericLabels {
if label != nil {
numericLabels[sanitizeLabelKey(k)] = modeljson.NumericLabel{
Value: label.Value,
Values: label.Values,
}
}
}
}
doc := modeljson.Document{
Timestamp: modeljson.Time(modelpb.ToTime(e.Timestamp)),
Labels: labels,
NumericLabels: numericLabels,
Message: e.Message,
}
var dataStream modeljson.DataStream
if e.DataStream != nil {
doc.DataStream = &dataStream
doc.DataStream.Type = e.DataStream.Type
doc.DataStream.Dataset = e.DataStream.Dataset
doc.DataStream.Namespace = e.DataStream.Namespace
}
var transaction modeljson.Transaction
if e.Transaction != nil {
TransactionModelJSON(e.Transaction, &transaction, e.Metricset != nil)
doc.Transaction = &transaction
}
var span modeljson.Span
if e.Span != nil {
SpanModelJSON(e.Span, &span)
doc.Span = &span
}
var metricset modeljson.Metricset
if e.Metricset != nil {
MetricsetModelJSON(e.Metricset, &metricset)
doc.Metricset = &metricset
doc.DocCount = e.Metricset.DocCount
}
var errorStruct modeljson.Error
if e.Error != nil {
ErrorModelJSON(e.Error, &errorStruct)
doc.Error = &errorStruct
}
var event modeljson.Event
if e.Event != nil {
EventModelJSON(e.Event, &event)
doc.Event = &event
}
// Set high resolution timestamp for transactions, spans, and errors.
//
// TODO(axw) change @timestamp to use date_nanos, and remove this field.
var timestampStruct modeljson.Timestamp
if e.Timestamp != 0 {
switch e.Type() {
case modelpb.TransactionEventType, modelpb.SpanEventType, modelpb.ErrorEventType:
timestampStruct.US = int(e.Timestamp / 1000)
doc.TimestampStruct = ×tampStruct
}
}
var cloud modeljson.Cloud
if e.Cloud != nil {
CloudModelJSON(e.Cloud, &cloud)
doc.Cloud = &cloud
}
var fass modeljson.FAAS
if e.Faas != nil {
FaasModelJSON(e.Faas, &fass)
doc.FAAS = &fass
}
var device modeljson.Device
if e.Device != nil {
DeviceModelJSON(e.Device, &device)
doc.Device = &device
}
var network modeljson.Network
if e.Network != nil {
NetworkModelJSON(e.Network, &network)
doc.Network = &network
}
var observer modeljson.Observer
if e.Observer != nil {
ObserverModelJSON(e.Observer, &observer)
doc.Observer = &observer
}
var container modeljson.Container
if e.Container != nil {
ContainerModelJSON(e.Container, &container)
doc.Container = &container
}
var kubernetes modeljson.Kubernetes
if e.Kubernetes != nil {
KubernetesModelJSON(e.Kubernetes, &kubernetes)
doc.Kubernetes = &kubernetes
}
var agent modeljson.Agent
if e.Agent != nil {
AgentModelJSON(e.Agent, &agent)
doc.Agent = &agent
}
if e.Trace != nil {
doc.Trace = &modeljson.Trace{
ID: e.Trace.Id,
}
}
var user modeljson.User
if e.User != nil {
UserModelJSON(e.User, &user)
doc.User = &user
}
var source modeljson.Source
if e.Source != nil {
SourceModelJSON(e.Source, &source)
doc.Source = &source
}
if len(e.ParentId) > 0 {
doc.Parent = &modeljson.Parent{
ID: e.ParentId,
}
}
if len(e.ChildIds) > 0 {
doc.Child = &modeljson.Child{
ID: e.ChildIds,
}
}
var client modeljson.Client
if e.Client != nil {
ClientModelJSON(e.Client, &client)
doc.Client = &client
}
if e.UserAgent != nil {
doc.UserAgent = &modeljson.UserAgent{
Original: e.UserAgent.Original,
Name: e.UserAgent.Name,
}
}
var service modeljson.Service
if e.Service != nil {
ServiceModelJSON(e.Service, &service)
doc.Service = &service
}
var httpStruct modeljson.HTTP
if e.Http != nil {
HTTPModelJSON(e.Http, &httpStruct)
doc.HTTP = &httpStruct
}
var host modeljson.Host
if e.Host != nil {
HostModelJSON(e.Host, &host)
doc.Host = &host
}
var url modeljson.URL
if e.Url != nil {
URLModelJSON(e.Url, &url)
doc.URL = &url
}
var logStruct modeljson.Log
if e.Log != nil {
LogModelJSON(e.Log, &logStruct)
doc.Log = &logStruct
}
var process modeljson.Process
if e.Process != nil {
ProcessModelJSON(e.Process, &process)
doc.Process = &process
}
var destination modeljson.Destination
if e.Destination != nil {
DestinationModelJSON(e.Destination, &destination)
doc.Destination = &destination
}
if e.Session != nil {
doc.Session = &modeljson.Session{
ID: e.Session.Id,
Sequence: e.Session.Sequence,
}
}
if e.Code != nil {
doc.Code = &modeljson.Code{
Stacktrace: e.Code.Stacktrace,
}
}
var system modeljson.System
if e.System != nil {
SystemModelJSON(e.System, &system)
doc.System = &system
}
return doc.MarshalFastJSON(w)
}