| /* |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| namespace DotPulsar.Internal; |
| |
| #if NETSTANDARD2_0 |
| public sealed class DotPulsarEventSource |
| { |
| public static readonly DotPulsarEventSource Log = new(); |
| |
| public void ClientCreated() { } |
| |
| public void ClientDisposed() { } |
| |
| public void ConnectionCreated() { } |
| |
| public void ConnectionDisposed() { } |
| |
| public void ConsumerCreated() { } |
| |
| public void ConsumerDisposed() { } |
| |
| public void ProducerCreated() { } |
| |
| public void ProducerDisposed() { } |
| |
| public void ReaderCreated() { } |
| |
| public void ReaderDisposed() { } |
| } |
| |
| #else |
| using System.Diagnostics.Tracing; |
| using System.Threading; |
| |
| public sealed class DotPulsarEventSource : EventSource |
| { |
| #pragma warning disable IDE0052 // Remove unread private members |
| private PollingCounter? _totalClientsCounter; |
| private long _totalClients; |
| |
| private PollingCounter? _currentClientsCounter; |
| private long _currentClients; |
| |
| private PollingCounter? _totalConnectionsCounter; |
| private long _totalConnections; |
| |
| private PollingCounter? _currentConnectionsCounter; |
| private long _currentConnections; |
| |
| private PollingCounter? _totalConsumersCounter; |
| private long _totalConsumers; |
| |
| private PollingCounter? _currentConsumersCounter; |
| private long _currentConsumers; |
| |
| private PollingCounter? _totalProducersCounter; |
| private long _totalProducers; |
| |
| private PollingCounter? _currentProducersCounter; |
| private long _currentProducers; |
| |
| private PollingCounter? _totalReadersCounter; |
| private long _totalReaders; |
| |
| private PollingCounter? _currentReadersCounter; |
| private long _currentReaders; |
| |
| #pragma warning restore IDE0052 // Remove unread private members |
| |
| public static readonly DotPulsarEventSource Log = new(); |
| |
| public DotPulsarEventSource() : base("DotPulsar") { } |
| |
| public void ClientCreated() |
| { |
| Interlocked.Increment(ref _totalClients); |
| Interlocked.Increment(ref _currentClients); |
| } |
| |
| public void ClientDisposed() |
| { |
| Interlocked.Decrement(ref _currentClients); |
| } |
| |
| public void ConnectionCreated() |
| { |
| Interlocked.Increment(ref _totalConnections); |
| Interlocked.Increment(ref _currentConnections); |
| } |
| |
| public void ConnectionDisposed() |
| { |
| Interlocked.Decrement(ref _currentConnections); |
| } |
| |
| public void ConsumerCreated() |
| { |
| Interlocked.Increment(ref _totalConsumers); |
| Interlocked.Increment(ref _currentConsumers); |
| } |
| |
| public void ConsumerDisposed() |
| { |
| Interlocked.Decrement(ref _currentConsumers); |
| } |
| |
| public void ProducerCreated() |
| { |
| Interlocked.Increment(ref _totalProducers); |
| Interlocked.Increment(ref _currentProducers); |
| } |
| |
| public void ProducerDisposed() |
| { |
| Interlocked.Decrement(ref _currentProducers); |
| } |
| |
| public void ReaderCreated() |
| { |
| Interlocked.Increment(ref _totalReaders); |
| Interlocked.Increment(ref _currentReaders); |
| } |
| |
| public void ReaderDisposed() |
| { |
| Interlocked.Decrement(ref _currentReaders); |
| } |
| |
| protected override void OnEventCommand(EventCommandEventArgs command) |
| { |
| if (command.Command != EventCommand.Enable) |
| return; |
| |
| _totalClientsCounter ??= new PollingCounter("total-clients", this, () => Volatile.Read(ref _totalClients)) |
| { |
| DisplayName = "Total number of clients" |
| }; |
| |
| _currentClientsCounter ??= new PollingCounter("current-clients", this, () => Volatile.Read(ref _currentClients)) |
| { |
| DisplayName = "Current number of clients" |
| }; |
| |
| _totalConnectionsCounter ??= new PollingCounter("total-connections", this, () => Volatile.Read(ref _totalConnections)) |
| { |
| DisplayName = "Total number of connections" |
| }; |
| |
| _currentConnectionsCounter ??= new PollingCounter("current-connections", this, () => Volatile.Read(ref _currentConnections)) |
| { |
| DisplayName = "Current number of connections" |
| }; |
| |
| _totalConsumersCounter ??= new PollingCounter("total-consumers", this, () => Volatile.Read(ref _totalConsumers)) |
| { |
| DisplayName = "Total number of consumers" |
| }; |
| |
| _currentConsumersCounter ??= new PollingCounter("current-consumers", this, () => Volatile.Read(ref _currentConsumers)) |
| { |
| DisplayName = "Current number of consumers" |
| }; |
| |
| _totalProducersCounter ??= new PollingCounter("total-producers", this, () => Volatile.Read(ref _totalProducers)) |
| { |
| DisplayName = "Total number of producers" |
| }; |
| |
| _currentProducersCounter ??= new PollingCounter("current-producers", this, () => Volatile.Read(ref _currentProducers)) |
| { |
| DisplayName = "Current number of producers" |
| }; |
| |
| _totalReadersCounter ??= new PollingCounter("total-readers", this, () => Volatile.Read(ref _totalReaders)) |
| { |
| DisplayName = "Total number of readers" |
| }; |
| |
| _currentReadersCounter ??= new PollingCounter("current-readers", this, () => Volatile.Read(ref _currentReaders)) |
| { |
| DisplayName = "Current number of readers" |
| }; |
| } |
| } |
| #endif |