func (this *SinkFactory) BuildAll(uris flags.Uris) (*metricsink.MetricSink, []core.DataSink) { result := make([]core.DataSink, 0, len(uris)) var metric *metricsink.MetricSink for _, uri := range uris { sink, err := this.Build(uri) if err != nil { glog.Errorf("Failed to create sink: %v", err) continue } if uri.Key == "metric" { metric = sink.(*metricsink.MetricSink) } result = append(result, sink) } if metric == nil { uri := flags.Uri{} uri.Set("metric") sink, err := this.Build(uri) if err == nil { result = append(result, sink) metric = sink.(*metricsink.MetricSink) } else { glog.Errorf("Error while creating metric sink: %v", err) } } return metric, result }
func (this *SinkFactory) BuildAll(uris flags.Uris, historicalUri string) (*metricsink.MetricSink, []core.DataSink, core.HistoricalSource) { result := make([]core.DataSink, 0, len(uris)) var metric *metricsink.MetricSink var historical core.HistoricalSource for _, uri := range uris { sink, err := this.Build(uri) if err != nil { glog.Errorf("Failed to create sink: %v", err) continue } if uri.Key == "metric" { metric = sink.(*metricsink.MetricSink) } if uri.String() == historicalUri { if asHistSource, ok := sink.(core.AsHistoricalSource); ok { historical = asHistSource.Historical() } else { glog.Errorf("Sink type %q does not support being used for historical access", uri.Key) } } result = append(result, sink) } if len([]flags.Uri(uris)) != 0 && len(result) == 0 { glog.Fatal("No available sink to use") } if metric == nil { uri := flags.Uri{} uri.Set("metric") sink, err := this.Build(uri) if err == nil { result = append(result, sink) metric = sink.(*metricsink.MetricSink) } else { glog.Errorf("Error while creating metric sink: %v", err) } } if len(historicalUri) > 0 && historical == nil { glog.Errorf("Error while initializing historical access: unable to use sink %q as a historical source", historicalUri) } return metric, result, historical }