intrinsics.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package internal
  2. import (
  3. "bytes"
  4. )
  5. func addOptionalStringField(w *jsonFieldsWriter, key, value string) {
  6. if value != "" {
  7. w.stringField(key, value)
  8. }
  9. }
  10. func intrinsicsJSON(e *TxnEvent, buf *bytes.Buffer) {
  11. w := jsonFieldsWriter{buf: buf}
  12. buf.WriteByte('{')
  13. if e.BetterCAT.Enabled {
  14. w.stringField("guid", e.BetterCAT.ID)
  15. w.stringField("traceId", e.BetterCAT.TraceID())
  16. w.writerField("priority", e.BetterCAT.Priority)
  17. w.boolField("sampled", e.BetterCAT.Sampled)
  18. }
  19. if e.CrossProcess.Used() {
  20. addOptionalStringField(&w, "client_cross_process_id", e.CrossProcess.ClientID)
  21. addOptionalStringField(&w, "trip_id", e.CrossProcess.TripID)
  22. addOptionalStringField(&w, "path_hash", e.CrossProcess.PathHash)
  23. addOptionalStringField(&w, "referring_transaction_guid", e.CrossProcess.ReferringTxnGUID)
  24. }
  25. if e.CrossProcess.IsSynthetics() {
  26. addOptionalStringField(&w, "synthetics_resource_id", e.CrossProcess.Synthetics.ResourceID)
  27. addOptionalStringField(&w, "synthetics_job_id", e.CrossProcess.Synthetics.JobID)
  28. addOptionalStringField(&w, "synthetics_monitor_id", e.CrossProcess.Synthetics.MonitorID)
  29. }
  30. buf.WriteByte('}')
  31. }