using CommonLibrary;
using HslCommunication.Core;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 软件系统服务端模版.BasicSupport
{
/******************************************************************************************
*
* 时间:2017年10月16日 21:17:00
* 功能:一个服务器端的在线客户端管理器
*
* ****************************************************************************************/
///
/// 所有在线客户端的管理器,该在线模型是基于NetAccount类扩展的
///
public class NetAccountManager
{
///
/// 新增一个在线的客户端
///
///
public void AddOnlineClient(NetAccount account)
{
hybirdLock.Enter();
OnlineClients.Add(account);
m_ClientsOnlineCache = JArray.FromObject(OnlineClients).ToString();
hybirdLock.Leave();
}
///
/// 根据在线客户端的唯一ID进行移除指定的客户端
///
///
public void RemoveOnlineClient(string uniqueId)
{
hybirdLock.Enter();
int index = -1;
for (int i = 0; i < OnlineClients.Count; i++)
{
if (OnlineClients[i].UniqueId == uniqueId)
{
index = i;
break;
}
}
if (index >= 0)
{
OnlineClients.RemoveAt(index);
}
m_ClientsOnlineCache = JArray.FromObject(OnlineClients).ToString();
hybirdLock.Leave();
}
///
/// 缓存的在线客户端信息
///
public string ClientsOnlineCache { get => m_ClientsOnlineCache; }
#region Private Member
private List OnlineClients = new List(); // 所有在线客户端的列表
private SimpleHybirdLock hybirdLock = new SimpleHybirdLock(); // 操作列表的混合锁
private string m_ClientsOnlineCache = "[]"; // 在线客户端的缓存
#endregion
}
}