/// <summary>
 /// Callback for channel subscriptions.
 /// </summary>
 /// <param name="counterSampleMessage">The counter sample message.</param>
 private void OnCounterSample(CounterSampleMessage counterSampleMessage)
 {
     if (Interlocked.Read(ref state) == 1L)
     {
         CounterSampleCollection samples;
         if (!sampleDictionary.TryGetValue(counterSampleMessage.CounterName, out samples))
         {
             samples = new CounterSampleCollection(counterSampleMessage.CounterName);
             sampleDictionary.Add(counterSampleMessage.CounterName, samples);
         }
         samples.Add(counterSampleMessage.CounterSample);
         sampleCount++;
     }
 }
Exemple #2
0
        /// <summary>
        ///  Reads all counters and publishes them into the <see
        ///  cref="F:ExitGames.Diagnostics.Monitoring.CounterSamplePublisher.Channel"/> and the <see
        ///  cref="F:ExitGames.Diagnostics.Monitoring.CounterSamplePublisher.ListChannel"/>.
        /// </summary>
        private void Update()
        {
            CounterSamplePublisher.CounterPublisherItem[] CounterPublisherItemArray;

            List <CounterSampleMessage> msg = new List <CounterSampleMessage>(this.items.Count);
            DateTime currentTimeStamp       = DateTime.UtcNow;

            lock (syncRoot)
            {
                CounterPublisherItemArray = this.items.ToArray();
            }
            foreach (CounterSamplePublisher.CounterPublisherItem CounterPublisherItem in CounterPublisherItemArray)
            {
                CounterSample sample;
                if (CounterPublisherItem.TryGetNextValue(currentTimeStamp, out sample))
                {
                    CounterSampleMessage message = new CounterSampleMessage(CounterPublisherItem.Name, sample);
                    this.Channel.Publish(message);
                    msg.Add(message);
                }
            }
            this.ListChannel.Publish(msg);
        }