Exemplo n.º 1
0
func NewManager(sources []source_api.Source, sinkManager sinks.ExternalSinkManager, res, bufferDuration time.Duration, c cache.Cache, useModel bool, modelRes time.Duration, align bool) (Manager, error) {
	// TimeStore constructor passed to the cluster implementation.
	tsConstructor := func() store.TimeStore {
		// TODO(afein): determine default analogy of cache duration to Timestore durations.
		return store.NewGCStore(store.NewCMAStore(), 5*bufferDuration)
	}
	var newCluster model.Cluster = nil
	if useModel {
		newCluster = model.NewCluster(tsConstructor, modelRes)
	}
	firstSync := time.Now()
	if align {
		firstSync = firstSync.Truncate(res).Add(res)
	}
	return &realManager{
		sources:      sources,
		sinkManager:  sinkManager,
		cache:        c,
		model:        newCluster,
		lastSync:     firstSync,
		resolution:   res,
		align:        align,
		decoder:      sink_api.NewDecoder(),
		sinkStopChan: sinkManager.Sync(),
	}, nil
}
Exemplo n.º 2
0
// NewExternalSinkManager returns an external sink manager that will manage pushing data to all
// the sinks in 'externalSinks', which is a map of sink name to ExternalSink object.
func NewExternalSinkManager(externalSinks []sink_api.ExternalSink) (ExternalSinkManager, error) {
	m := &externalSinkManager{
		decoder: sink_api_old.NewDecoder(),
	}
	if externalSinks != nil {
		if err := m.SetSinks(externalSinks); err != nil {
			return nil, err
		}
	}
	return m, nil
}
Exemplo n.º 3
0
// NewExternalSinkManager returns an external sink manager that will manage pushing data to all
// the sinks in 'externalSinks', which is a map of sink name to ExternalSink object.
func NewExternalSinkManager(externalSinks []sink_api.ExternalSink, cache cache.Cache, syncFrequency time.Duration) (ExternalSinkManager, error) {
	m := &externalSinkManager{
		decoder:       sink_api.NewDecoder(),
		cache:         cache,
		lastSync:      time.Time{},
		syncFrequency: syncFrequency,
	}
	if externalSinks != nil {
		if err := m.SetSinks(externalSinks); err != nil {
			return nil, err
		}
	}
	return m, nil
}
Exemplo n.º 4
0
func NewManager(sources []source_api.Source, sinkManager sinks.ExternalSinkManager, res, bufferDuration time.Duration, c cache.Cache, useModel bool, modelRes time.Duration) (Manager, error) {
	var newModel model.Model = nil
	if useModel {
		newModel = model.NewModel(modelRes)
		// Temporary semi-hack to get model storage garbage-collected.
		c.AddCacheListener(newModel.GetCacheListener())
	}
	return &realManager{
		sources:      sources,
		sinkManager:  sinkManager,
		cache:        c,
		model:        newModel,
		lastSync:     time.Now(),
		resolution:   res,
		decoder:      sink_api.NewDecoder(),
		sinkStopChan: sinkManager.Sync(),
	}, nil
}