/******************************************************** * ADO.NET 2.0 Data Provider for SQLite Version 3.X * Written by Robert Simpson (robert@blackcastlesoft.com) * * Released to the public domain, use at your own risk! ********************************************************/ namespace System.Data.SQLite { using System; using System.Collections.Generic; internal static class SQLiteConnectionPool { private static SortedList> _connections = new SortedList>(StringComparer.OrdinalIgnoreCase); internal static SQLiteConnectionHandle Remove(string fileName) { lock (_connections) { Queue queue; if (_connections.TryGetValue(fileName, out queue) == false) return null; while (queue.Count > 0) { WeakReference cnn = queue.Dequeue(); SQLiteConnectionHandle hdl = cnn.Target as SQLiteConnectionHandle; if (hdl != null) return hdl; } return null; } } internal static void Add(string fileName, SQLiteConnectionHandle hdl) { lock (_connections) { Queue queue; if (_connections.TryGetValue(fileName, out queue) == false) { queue = new Queue(); _connections.Add(fileName, queue); } queue.Enqueue(new WeakReference(hdl, false)); GC.KeepAlive(hdl); } } } }