Пример #1
0
        private void SnapshotMetrics(MetricsSourceAdapter sa, MetricsBufferBuilder bufferBuilder
                                     )
        {
            long startTime = Time.Now();

            bufferBuilder.Add(sa.Name(), sa.GetMetrics(collector, true));
            collector.Clear();
            snapshotStat.Add(Time.Now() - startTime);
            Log.Debug("Snapshotted source " + sa.Name());
        }
Пример #2
0
 /// <summary>Publish a metrics snapshot to all the sinks</summary>
 /// <param name="buffer">the metrics snapshot to publish</param>
 /// <param name="immediate">
 /// indicates that we should publish metrics immediately
 /// instead of using a separate thread.
 /// </param>
 internal virtual void PublishMetrics(MetricsBuffer buffer, bool immediate)
 {
     lock (this)
     {
         int dropped = 0;
         foreach (MetricsSinkAdapter sa in sinks.Values)
         {
             long startTime = Time.Now();
             bool result;
             if (immediate)
             {
                 result = sa.PutMetricsImmediate(buffer);
             }
             else
             {
                 result = sa.PutMetrics(buffer, logicalTime);
             }
             dropped += result ? 0 : 1;
             publishStat.Add(Time.Now() - startTime);
         }
         droppedPubAll.Incr(dropped);
     }
 }