Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PollingCounter.cs
Go to the documentation of this file.
3
5
6[UnsupportedOSPlatform("browser")]
8{
9 private readonly Func<double> _metricProvider;
10
11 private double _lastVal;
12
13 public PollingCounter(string name, EventSource eventSource, Func<double> metricProvider)
14 : base(name, eventSource)
15 {
16 if (metricProvider == null)
17 {
18 throw new ArgumentNullException("metricProvider");
19 }
20 _metricProvider = metricProvider;
21 Publish();
22 }
23
24 public override string ToString()
25 {
26 return $"PollingCounter '{base.Name}' Count 1 Mean {_lastVal:n3}";
27 }
28
29 [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "The DynamicDependency will preserve the properties of CounterPayload")]
30 [DynamicDependency(DynamicallyAccessedMemberTypes.PublicProperties, typeof(CounterPayload))]
31 internal override void WritePayload(float intervalSec, int pollingIntervalMillisec)
32 {
33 lock (this)
34 {
35 double num = 0.0;
36 try
37 {
38 num = _metricProvider();
39 }
40 catch (Exception ex)
41 {
42 ReportOutOfBandMessage("ERROR: Exception during EventCounter " + base.Name + " metricProvider callback: " + ex.Message);
43 }
44 CounterPayload counterPayload = new CounterPayload();
45 counterPayload.Name = base.Name;
46 counterPayload.DisplayName = base.DisplayName ?? "";
47 counterPayload.Count = 1;
48 counterPayload.IntervalSec = intervalSec;
49 counterPayload.Series = $"Interval={pollingIntervalMillisec}";
50 counterPayload.CounterType = "Mean";
51 counterPayload.Mean = num;
52 counterPayload.Max = num;
53 counterPayload.Min = num;
54 counterPayload.Metadata = GetMetadataString();
55 counterPayload.StandardDeviation = 0.0;
56 counterPayload.DisplayUnits = base.DisplayUnits ?? "";
57 _lastVal = num;
58 base.EventSource.Write("EventCounters", new EventSourceOptions
59 {
60 Level = EventLevel.LogAlways
61 }, new PollingPayloadType(counterPayload));
62 }
63 }
64}
PollingCounter(string name, EventSource eventSource, Func< double > metricProvider)
override void WritePayload(float intervalSec, int pollingIntervalMillisec)
virtual string Message
Definition Exception.cs:100