func ContextWithConfig()

in xray/config.go [133:174]


func ContextWithConfig(ctx context.Context, c Config) (context.Context, error) {
	var errors exception.MultiError

	daemonEndpoints, er := daemoncfg.GetDaemonEndpointsFromString(c.DaemonAddr)

	if daemonEndpoints != nil {
		if c.Emitter != nil {
			c.Emitter.RefreshEmitterWithAddress(daemonEndpoints.UDPAddr)
		}
		if c.SamplingStrategy != nil {
			configureStrategy(c.SamplingStrategy, daemonEndpoints)
		}
	} else if er != nil {
		errors = append(errors, er)
	}

	cms := os.Getenv("AWS_XRAY_CONTEXT_MISSING")
	if cms != "" {
		if cms == ctxmissing.RuntimeErrorStrategy {
			cm := ctxmissing.NewDefaultRuntimeErrorStrategy()
			c.ContextMissingStrategy = cm
		} else if cms == ctxmissing.LogErrorStrategy {
			cm := ctxmissing.NewDefaultLogErrorStrategy()
			c.ContextMissingStrategy = cm
		} else if cms == ctxmissing.IgnoreErrorStrategy {
			cm := ctxmissing.NewDefaultIgnoreErrorStrategy()
			c.ContextMissingStrategy = cm
		}
	}

	var err error
	switch len(errors) {
	case 0:
		err = nil
	case 1:
		err = errors[0]
	default:
		err = errors
	}

	return context.WithValue(ctx, RecorderContextKey{}, &c), err
}