blob: a98818990513a7a502edd8710540a456a5b610cf [file] [log] [blame]
/*
* 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
}