ab56a9bcf7
SVN-Revision: r240
143 lines
4.5 KiB
C#
143 lines
4.5 KiB
C#
/******************************
|
|
* 说明:管理所有空闲的AsyncSocketUserToken,采用栈的管理方式,后进先出
|
|
* 创建人:龚宇超
|
|
* 创建日期:2018-01-23
|
|
* 修改人:
|
|
* 修改日期:
|
|
* 修改备注:
|
|
* 版本:1.0.0.0
|
|
******************************/
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace Lskj.SocketService
|
|
{
|
|
/// <summary>
|
|
/// 管理所有空闲的AsyncSocketUserToken,采用栈的管理方式,后进先出
|
|
/// </summary>
|
|
public class AsyncSocketUserTokenPool
|
|
{
|
|
private Stack<AsyncSocketUserToken> _pool;
|
|
|
|
public AsyncSocketUserTokenPool(int capacity)
|
|
{
|
|
_pool = new Stack<AsyncSocketUserToken>(capacity);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 包含总数
|
|
/// </summary>
|
|
/// <value>The count.</value>
|
|
public int Count
|
|
{
|
|
get { return _pool.Count; }
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:添加AsyncSocketUserToken</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-24 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="item">The item.</param>
|
|
/// <exception cref="System.ArgumentException">Items added to a AsyncSocketUserToken cannot be null</exception>
|
|
public void Push(AsyncSocketUserToken item)
|
|
{
|
|
if (item == null)
|
|
{
|
|
throw new ArgumentException("Items added to a AsyncSocketUserToken cannot be null");
|
|
}
|
|
lock (_pool)
|
|
{
|
|
_pool.Push(item);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:移除AsyncSocketUserToken并返回栈顶对象</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-24 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <returns>AsyncSocketUserToken.</returns>
|
|
public AsyncSocketUserToken Pop()
|
|
{
|
|
lock (_pool)
|
|
{
|
|
return _pool.Pop();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 管理所有空闲的AsyncSocketUserToken,采用List的管理方式
|
|
/// </summary>
|
|
public class AsyncSocketUserTokenList : Object
|
|
{
|
|
private List<AsyncSocketUserToken> _list;
|
|
|
|
public AsyncSocketUserTokenList()
|
|
{
|
|
_list = new List<AsyncSocketUserToken>();
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:添加AsyncSocketUserToken</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-24 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="userToken">The user token.</param>
|
|
public void Add(AsyncSocketUserToken userToken)
|
|
{
|
|
lock(_list)
|
|
{
|
|
_list.Add(userToken);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:移除AsyncSocketUserToken</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-24 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="userToken">The user token.</param>
|
|
public void Remove(AsyncSocketUserToken userToken)
|
|
{
|
|
lock (_list)
|
|
{
|
|
_list.Remove(userToken);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// <para>说明:List To Array集合</para>
|
|
/// <para>创建人:龚宇超</para>
|
|
/// <para>创建日期:2018-01-24 </para>
|
|
/// <para>修改人:</para>
|
|
/// <para>修改日期:</para>
|
|
/// <para>修改备注:</para>
|
|
/// <para>版本:1.0</para>
|
|
/// </summary>
|
|
/// <param name="array">The array.</param>
|
|
public void CopyList(ref AsyncSocketUserToken[] array)
|
|
{
|
|
lock (_list)
|
|
{
|
|
array = new AsyncSocketUserToken[_list.Count];
|
|
_list.CopyTo(array);
|
|
}
|
|
}
|
|
}
|
|
}
|