func NewManager(sources []source_api.Source, sinkManager sinks.ExternalSinkManager, res, bufferDuration time.Duration, 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: cache.NewCache(bufferDuration), model: newCluster, lastSync: firstSync, resolution: res, align: align, decoder: sink_api.NewDecoder(), }, nil }
// newTimeStore creates a new GCStore and returns it as a TimeStore. // Meant to be passed to newRealCluster calls in all unit tests. func newTimeStore() store.TimeStore { return store.NewGCStore(store.NewCMAStore(), 24*time.Hour) }