using System; using System.Collections.Generic; using System.Linq; using System.Text; using HuizhongLibrary.Log; namespace HuizhongLibrary.Network { public class ServerConnectionPool { Queue argsPool; public ServerConnectionPool() { argsPool = new Queue(); } #region 新增 public void CheckIn(ServerConnection item) { lock (argsPool) { try { argsPool.Enqueue(item); } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); } } } #endregion #region 移除并返回开始对象 public ServerConnection CheckOut() { lock (argsPool) { try { if (argsPool.Count == 0) return null; return argsPool.Dequeue(); } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); } } return null; } #endregion #region 返回开始对象,但不移除 public ServerConnection Peek() { lock (argsPool) { try { if (argsPool.Count == 0) return null; return argsPool.Peek(); } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); } } return null; } #endregion #region 移除 public void Clear() { lock (argsPool) { try { argsPool.Clear(); } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); } } } #endregion #region 返回数量 public int Available { get { lock (argsPool) { return argsPool.Count; } } } #endregion } }