Пример #1
0
 internal MetricsSinkAdapter(string name, string description, MetricsSink sink, string
                             context, MetricsFilter sourceFilter, MetricsFilter recordFilter, MetricsFilter
                             metricFilter, int period, int queueCapacity, int retryDelay, float retryBackoff,
                             int retryCount)
 {
     this.name         = Preconditions.CheckNotNull(name, "name");
     this.description  = description;
     this.sink         = Preconditions.CheckNotNull(sink, "sink object");
     this.context      = context;
     this.sourceFilter = sourceFilter;
     this.recordFilter = recordFilter;
     this.metricFilter = metricFilter;
     this.period       = Contracts.CheckArg(period, period > 0, "period");
     firstRetryDelay   = Contracts.CheckArg(retryDelay, retryDelay > 0, "retry delay");
     this.retryBackoff = Contracts.CheckArg(retryBackoff, retryBackoff > 1, "retry backoff"
                                            );
     oobPutTimeout = (long)(firstRetryDelay * Math.Pow(retryBackoff, retryCount) * 1000
                            );
     this.retryCount = retryCount;
     this.queue      = new SinkQueue <MetricsBuffer>(Contracts.CheckArg(queueCapacity, queueCapacity
                                                                        > 0, "queue capacity"));
     latency = registry.NewRate("Sink_" + name, "Sink end to end latency", false);
     dropped = registry.NewCounter("Sink_" + name + "Dropped", "Dropped updates per sink"
                                   , 0);
     qsize      = registry.NewGauge("Sink_" + name + "Qsize", "Queue size", 0);
     sinkThread = new _Thread_86(this);
     sinkThread.SetName(name);
     sinkThread.SetDaemon(true);
 }