github.com/newrelic/go-agent@v3.26.0+incompatible/internal/intrinsics.go (about) 1 // Copyright 2020 New Relic Corporation. All rights reserved. 2 // SPDX-License-Identifier: Apache-2.0 3 4 package internal 5 6 import ( 7 "bytes" 8 ) 9 10 func addOptionalStringField(w *jsonFieldsWriter, key, value string) { 11 if value != "" { 12 w.stringField(key, value) 13 } 14 } 15 16 func intrinsicsJSON(e *TxnEvent, buf *bytes.Buffer) { 17 w := jsonFieldsWriter{buf: buf} 18 19 buf.WriteByte('{') 20 21 w.floatField("totalTime", e.TotalTime.Seconds()) 22 23 if e.BetterCAT.Enabled { 24 w.stringField("guid", e.BetterCAT.ID) 25 w.stringField("traceId", e.BetterCAT.TraceID()) 26 w.writerField("priority", e.BetterCAT.Priority) 27 w.boolField("sampled", e.BetterCAT.Sampled) 28 } 29 30 if e.CrossProcess.Used() { 31 addOptionalStringField(&w, "client_cross_process_id", e.CrossProcess.ClientID) 32 addOptionalStringField(&w, "trip_id", e.CrossProcess.TripID) 33 addOptionalStringField(&w, "path_hash", e.CrossProcess.PathHash) 34 addOptionalStringField(&w, "referring_transaction_guid", e.CrossProcess.ReferringTxnGUID) 35 } 36 37 if e.CrossProcess.IsSynthetics() { 38 addOptionalStringField(&w, "synthetics_resource_id", e.CrossProcess.Synthetics.ResourceID) 39 addOptionalStringField(&w, "synthetics_job_id", e.CrossProcess.Synthetics.JobID) 40 addOptionalStringField(&w, "synthetics_monitor_id", e.CrossProcess.Synthetics.MonitorID) 41 } 42 43 buf.WriteByte('}') 44 }