func()

in strategy/sampling/centralized_sampling_rule_manifest.go [171:213]


func (m *CentralizedManifest) createDefaultRule(svcRule *SamplingRule) *CentralizedRule {
	// Create CentralizedRule from SamplingRule
	clock := &utils.DefaultClock{}
	rand := &utils.DefaultRand{}

	p := &Properties{
		FixedTarget: *svcRule.ReservoirSize,
		Rate:        *svcRule.FixedRate,
	}

	r := &reservoir{
		capacity: *svcRule.ReservoirSize,
	}

	cr := &CentralizedReservoir{
		reservoir: r,
		interval:  defaultInterval,
	}

	csr := &CentralizedRule{
		ruleName:   *svcRule.RuleName,
		reservoir:  cr,
		Properties: p,
		clock:      clock,
		rand:       rand,
	}

	m.mu.Lock()
	defer m.mu.Unlock()

	// Return early if rule already exists
	if d := m.Default; d != nil {
		return d
	}

	// Update manifest if rule does not exist
	m.Default = csr

	// Update index
	m.Index[*svcRule.RuleName] = csr

	return csr
}