public void RemoveSession(ref SocketSession session) { lock (lockRemoveSession) { clientSessions.Remove(session); if (session != null) { session.Close(); session = null; } } }
private void TryGetSession() { for (int i = 0; i < 3; i++) { session = coreServer.GetSession(clientSocket); if (session != null) { return; } else { Thread.Sleep(100); } } }
public void AcceptCallback(IAsyncResult AR) { lock (lockAccept) { try { Socket socket = serverSocket.EndAccept(AR); var session = new SocketSession(socket, configuration.BufferSize); clientSessions.Add(session); socket.BeginReceive(session.SessionStorage, 0, configuration.BufferSize, SocketFlags.None, ReceiveCallback, socket); serverSocket.BeginAccept(AcceptCallback, null); } catch (Exception ex) // I cannot seem to avoid this (on exit when properly closing sockets) { loggingService.WriteLog("*** ERROR ***: \n" + ex.Message, ServerLogType.ERROR); } } }