基线 SVN r240
SVN-Revision: r240
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
/******************************
|
||||
* 说明:管理所有空闲的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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user