func NewClient()

in apmproxy/client.go [74:116]


func NewClient(opts ...Option) (*Client, error) {
	c := Client{
		bufferPool: sync.Pool{New: func() interface{} {
			return &bytes.Buffer{}
		}},
		AgentDataChannel:  make(chan accumulator.APMData, defaultAgentBufferSize),
		LambdaDataChannel: make(chan []byte, defaultLambdaBufferSize),
		client: &http.Client{
			Transport: http.DefaultTransport.(*http.Transport).Clone(),
		},
		ReconnectionCount: -1,
		Status:            Started,
		receiver: &http.Server{
			Addr:           defaultReceiverAddr,
			ReadTimeout:    defaultDataReceiverTimeout,
			WriteTimeout:   defaultDataReceiverTimeout,
			MaxHeaderBytes: 1 << 20,
		},
		sendStrategy: SyncFlush,
		flushCh:      make(chan struct{}),
	}

	c.client.Timeout = defaultDataForwarderTimeout

	for _, opt := range opts {
		opt(&c)
	}

	if c.serverURL == "" {
		return nil, errors.New("APM Server URL cannot be empty")
	}

	if c.logger == nil {
		return nil, errors.New("logger cannot be empty")
	}

	// normalize server URL
	if !strings.HasSuffix(c.serverURL, "/") {
		c.serverURL += "/"
	}

	return &c, nil
}