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  }