diff options
| author | cvium <clausvium@gmail.com> | 2023-08-21 12:13:32 +0200 |
|---|---|---|
| committer | cvium <clausvium@gmail.com> | 2023-08-21 12:13:32 +0200 |
| commit | 613f4296e395b0442984e472a996eaadc07915fe (patch) | |
| tree | 67e33cdafb85874887bca28a7efb8b7428059bd4 /Emby.Server.Implementations/Data/ConnectionPool.cs | |
| parent | d3f8874a3e5ae9d6879a225e04a4ade922fc6c2d (diff) | |
loading works
Diffstat (limited to 'Emby.Server.Implementations/Data/ConnectionPool.cs')
| -rw-r--r-- | Emby.Server.Implementations/Data/ConnectionPool.cs | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/Emby.Server.Implementations/Data/ConnectionPool.cs b/Emby.Server.Implementations/Data/ConnectionPool.cs deleted file mode 100644 index 5ea7e934f..000000000 --- a/Emby.Server.Implementations/Data/ConnectionPool.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Collections.Concurrent; -using SQLitePCL.pretty; - -namespace Emby.Server.Implementations.Data; - -/// <summary> -/// A pool of SQLite Database connections. -/// </summary> -public sealed class ConnectionPool : IDisposable -{ - private readonly BlockingCollection<SQLiteDatabaseConnection> _connections = new(); - private bool _disposed; - - /// <summary> - /// Initializes a new instance of the <see cref="ConnectionPool" /> class. - /// </summary> - /// <param name="count">The number of database connection to create.</param> - /// <param name="factory">Factory function to create the database connections.</param> - public ConnectionPool(int count, Func<SQLiteDatabaseConnection> factory) - { - for (int i = 0; i < count; i++) - { - _connections.Add(factory.Invoke()); - } - } - - /// <summary> - /// Gets a database connection from the pool if one is available, otherwise blocks. - /// </summary> - /// <returns>A database connection.</returns> - public ManagedConnection GetConnection() - { - if (_disposed) - { - ThrowObjectDisposedException(); - } - - return new ManagedConnection(_connections.Take(), this); - - static void ThrowObjectDisposedException() - { - throw new ObjectDisposedException(nameof(ConnectionPool)); - } - } - - /// <summary> - /// Return a database connection to the pool. - /// </summary> - /// <param name="connection">The database connection to return.</param> - public void Return(SQLiteDatabaseConnection connection) - { - if (_disposed) - { - connection.Dispose(); - return; - } - - _connections.Add(connection); - } - - /// <inheritdoc /> - public void Dispose() - { - if (_disposed) - { - return; - } - - foreach (var connection in _connections) - { - connection.Dispose(); - } - - _connections.Dispose(); - - _disposed = true; - } -} |
