func NewAPIHandler()

in pkg/api/api.go [51:83]


func NewAPIHandler(
	uuid fmt.Stringer,
	clusterUUID string,
	meterProvider metric.MeterProvider,
	expire time.Time,
	delay time.Duration,
	percentDuplicate,
	percentTooMany,
	percentNonIndex,
	percentTooLarge,
	historyCap uint,
) *APIHandler {

	h := &APIHandler{UUID: uuid, Expire: expire, ClusterUUID: clusterUUID, Delay: delay}
	if meterProvider == nil {
		meterProvider = otel.GetMeterProvider()
	}

	metrics, err := newMetrics(meterProvider)
	if err != nil {
		panic(fmt.Errorf("failed to create metrics"))
	}
	h.metrics = metrics

	h.history = make([]*RequestRecord, historyCap)

	err = h.UpdateOdds(percentDuplicate, percentTooMany, percentNonIndex, percentTooLarge)
	if err != nil {
		panic(err)
	}

	return h
}