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 }
// 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 }
// 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 }
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 }