github.com/jeffalder/nr.yml/v3@v3.0.1-0.20200721182236-9572b92f5925/nr_yml/infinite_tracing.go (about)

     1  //   Copyright 2020, Jeff Alder
     2  //
     3  //   Licensed under the Apache License, Version 2.0 (the "License");
     4  //   you may not use this file except in compliance with the License.
     5  //   You may obtain a copy of the License at
     6  //
     7  //       http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  //   Unless required by applicable law or agreed to in writing, software
    10  //   distributed under the License is distributed on an "AS IS" BASIS,
    11  //   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  //   See the License for the specific language governing permissions and
    13  //   limitations under the License.
    14  
    15  package nr_yml
    16  
    17  import "github.com/newrelic/go-agent/v3/newrelic"
    18  
    19  // Don't use this; it's only exported for the yaml parser
    20  type TraceObserverYaml struct {
    21  	Host *string `yaml:"host"`
    22  	// why is this signed and 32-bit? TCP ports are limited to uint16.
    23  	Port *uint16 `yaml:"port"`
    24  }
    25  
    26  func (traceObserverYaml TraceObserverYaml) update(cfg *newrelic.Config) {
    27  	if traceObserverYaml.Host != nil {
    28  		cfg.InfiniteTracing.TraceObserver.Host = *traceObserverYaml.Host
    29  	}
    30  	if traceObserverYaml.Port != nil {
    31  		cfg.InfiniteTracing.TraceObserver.Port = int(*traceObserverYaml.Port)
    32  	}
    33  }
    34  
    35  // Don't use this; it's only exported for the yaml parser
    36  type EventsYaml struct {
    37  	QueueSize *uint32 `yaml:"queue_size"`
    38  }
    39  
    40  func (spanEventsYaml EventsYaml) updateSpanEvents(cfg *newrelic.Config) {
    41  	if spanEventsYaml.QueueSize != nil {
    42  		cfg.InfiniteTracing.SpanEvents.QueueSize = int(*spanEventsYaml.QueueSize)
    43  	}
    44  }
    45  
    46  // Don't use this; it's only exported for the yaml parser
    47  type InfiniteTracingYaml struct {
    48  	TraceObserver *TraceObserverYaml `yaml:"trace_observer"`
    49  	SpanEvents    *EventsYaml        `yaml:"span_events"`
    50  }
    51  
    52  func (tracingYaml InfiniteTracingYaml) update(cfg *newrelic.Config) {
    53  	if tracingYaml.TraceObserver != nil {
    54  		tracingYaml.TraceObserver.update(cfg)
    55  	}
    56  	if tracingYaml.SpanEvents != nil {
    57  		tracingYaml.SpanEvents.updateSpanEvents(cfg)
    58  	}
    59  }