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