Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
IncrementingPollingCounter.cs
Go to the documentation of this file.
3
5
6[UnsupportedOSPlatform("browser")]
8{
9 private double _increment;
10
11 private double _prevIncrement;
12
13 private readonly Func<double> _totalValueProvider;
14
15 public TimeSpan DisplayRateTimeScale { get; set; }
16
17 public IncrementingPollingCounter(string name, EventSource eventSource, Func<double> totalValueProvider)
18 : base(name, eventSource)
19 {
20 if (totalValueProvider == null)
21 {
22 throw new ArgumentNullException("totalValueProvider");
23 }
24 _totalValueProvider = totalValueProvider;
25 Publish();
26 }
27
28 public override string ToString()
29 {
30 return $"IncrementingPollingCounter '{base.Name}' Increment {_increment}";
31 }
32
33 internal void UpdateMetric()
34 {
35 try
36 {
37 lock (this)
38 {
41 }
42 }
43 catch (Exception ex)
44 {
45 ReportOutOfBandMessage("ERROR: Exception during EventCounter " + base.Name + " getMetricFunction callback: " + ex.Message);
46 }
47 }
48
49 [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "The DynamicDependency will preserve the properties of IncrementingCounterPayload")]
50 [DynamicDependency(DynamicallyAccessedMemberTypes.PublicProperties, typeof(IncrementingCounterPayload))]
51 internal override void WritePayload(float intervalSec, int pollingIntervalMillisec)
52 {
54 lock (this)
55 {
56 IncrementingCounterPayload incrementingCounterPayload = new IncrementingCounterPayload();
57 incrementingCounterPayload.Name = base.Name;
58 incrementingCounterPayload.DisplayName = base.DisplayName ?? "";
59 incrementingCounterPayload.DisplayRateTimeScale = ((DisplayRateTimeScale == TimeSpan.Zero) ? "" : DisplayRateTimeScale.ToString("c"));
60 incrementingCounterPayload.IntervalSec = intervalSec;
61 incrementingCounterPayload.Series = $"Interval={pollingIntervalMillisec}";
62 incrementingCounterPayload.CounterType = "Sum";
63 incrementingCounterPayload.Metadata = GetMetadataString();
64 incrementingCounterPayload.Increment = _increment - _prevIncrement;
65 incrementingCounterPayload.DisplayUnits = base.DisplayUnits ?? "";
66 base.EventSource.Write("EventCounters", new EventSourceOptions
67 {
68 Level = EventLevel.LogAlways
69 }, new IncrementingPollingCounterPayloadType(incrementingCounterPayload));
70 }
71 }
72}
override void WritePayload(float intervalSec, int pollingIntervalMillisec)
IncrementingPollingCounter(string name, EventSource eventSource, Func< double > totalValueProvider)
virtual string Message
Definition Exception.cs:100
static readonly TimeSpan Zero
Definition TimeSpan.cs:21
override string ToString()
Definition TimeSpan.cs:476