using HubX.Library.Socket.Packet; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using SystemX.Core.Communication; namespace HubX.Library.Socket.Session { public class SessionManager { static SessionManager _session = new SessionManager(); public static SessionManager Instance { get { return _session; } } int _sessionId = 0; Dictionary _sessions = new Dictionary(); object _lock = new object(); public ClientSession Generate() { lock (_lock) { int sessionId = ++_sessionId; ClientSession session = new ClientSession(); session.SessionId = sessionId; _sessions.Add(sessionId, session); Log4net.WriteLine($"Connected : {sessionId}", LogType.SOCKET); return session; } } public ClientSession Find(int id) { lock (_lock) { ClientSession session = null; _sessions.TryGetValue(id, out session); return session; } } public void Remove(ClientSession session) { lock (_lock) { _sessions.Remove(session.SessionId); } } } }