| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // Unless explicitly stated otherwise all files in this repository are licensed
- // under the Apache License Version 2.0.
- // This product includes software developed at Datadog (https://www.datadoghq.com/).
- // Copyright 2016 Datadog, Inc.
- // Package globalconfig stores configuration which applies globally to both the tracer
- // and integrations.
- package globalconfig
- import (
- "math"
- "sync"
- "github.com/google/uuid"
- )
- var cfg = &config{
- analyticsRate: math.NaN(),
- runtimeID: uuid.New().String(),
- }
- type config struct {
- mu sync.RWMutex
- analyticsRate float64
- serviceName string
- runtimeID string
- }
- // AnalyticsRate returns the sampling rate at which events should be marked. It uses
- // synchronizing mechanisms, meaning that for optimal performance it's best to read it
- // once and store it.
- func AnalyticsRate() float64 {
- cfg.mu.RLock()
- defer cfg.mu.RUnlock()
- return cfg.analyticsRate
- }
- // SetAnalyticsRate sets the given event sampling rate globally.
- func SetAnalyticsRate(rate float64) {
- cfg.mu.Lock()
- cfg.analyticsRate = rate
- cfg.mu.Unlock()
- }
- // ServiceName returns the default service name used by non-client integrations such as servers and frameworks.
- func ServiceName() string {
- cfg.mu.RLock()
- defer cfg.mu.RUnlock()
- return cfg.serviceName
- }
- // SetServiceName sets the global service name set for this application.
- func SetServiceName(name string) {
- cfg.mu.Lock()
- defer cfg.mu.Unlock()
- cfg.serviceName = name
- }
- // RuntimeID returns this process's unique runtime id.
- func RuntimeID() string {
- cfg.mu.RLock()
- defer cfg.mu.RUnlock()
- return cfg.runtimeID
- }
|