public void Send(string sessionId, string message) { var session = appServer.GetSessionByID(sessionId); if (session == null) { throw new Exception($"The session {sessionId} is closed."); } session.Send(message); }
public void hdServer_NewSessionConnected(AppSession session) { if (client_session.ToArray().Count() > 0) { foreach (string v in client_session.ToArray()) { if (hdServer.GetSessionByID(v) != null && hdServer.GetSessionByID(v).Connected) { } else { client_session.Remove(v); } } } client_session.Add(session.SessionID); printlog(log, string.Format("{0} connect", session.RemoteEndPoint)); }
void ProcessPackageWithoutSessionID(Socket listenSocket, IPEndPoint remoteEndPoint, byte[] receivedData) { var sessionID = remoteEndPoint.ToString(); var appSession = AppServer.GetSessionByID(sessionID); if (appSession == null) //New session { if (!DetectConnectionNumber(remoteEndPoint)) { return; } var socketSession = new UdpSocketSession(listenSocket, remoteEndPoint, sessionID); appSession = AppServer.CreateAppSession(socketSession); if (appSession == null) { return; } if (!DetectConnectionNumber(remoteEndPoint)) { return; } if (!AppServer.RegisterSession(appSession)) { return; } Interlocked.Increment(ref m_ConnectionCount); socketSession.Closed += OnSocketSessionClosed; socketSession.Start(); appSession.ProcessRequest(receivedData, 0, receivedData.Length, false); } else //Existing session { appSession.ProcessRequest(receivedData, 0, receivedData.Length, false); } }
void ProcessPackageWithoutSessionID(Socket listenSocket, IPEndPoint remoteEndPoint, byte[] receivedData) { var sessionID = remoteEndPoint.ToString(); var appSession = AppServer.GetSessionByID(sessionID); if (appSession == null) //New session { appSession = CreateNewSession(listenSocket, remoteEndPoint, sessionID); //Failed to create a new session if (appSession == null) { return; } appSession.ProcessRequest(receivedData, 0, receivedData.Length, false); } else //Existing session { appSession.ProcessRequest(receivedData, 0, receivedData.Length, false); } }
void ProcessPackageWithoutSessionID(Socket listenSocket, IPEndPoint remoteEndPoint, ArraySegment <byte> receivedData) { var sessionID = remoteEndPoint.ToString(); var appSession = AppServer.GetSessionByID(sessionID); if (appSession == null) //New session { if (!DetectConnectionNumber(remoteEndPoint)) { return; } var socketSession = new UdpSocketSession(listenSocket, remoteEndPoint, sessionID); appSession = AppServer.CreateAppSession(socketSession); if (appSession == null) { return; } if (!DetectConnectionNumber(remoteEndPoint)) { return; } if (!AppServer.RegisterSession(appSession)) { return; } Interlocked.Increment(ref m_ConnectionCount); socketSession.Closed += OnSocketSessionClosed; socketSession.Start(); } ((UdpSocketSession)appSession.SocketSession).ProcessReceivedData(receivedData, null); }
void ProcessPackageWithSessionID(Socket listenSocket, IPEndPoint remoteEndPoint, ArraySegment <byte> receivedData) { TPackageInfo requestInfo; string sessionID; int rest; try { var receiveData = new BufferList(); receiveData.Add(receivedData); requestInfo = this.m_UdpRequestFilter.Filter(receiveData, out rest); } catch (Exception exc) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("Failed to parse UDP package!", exc); } return; } var udpRequestInfo = requestInfo as IUdpPackageInfo; if (rest > 0) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("The output parameter rest must be zero in this case!"); } return; } if (udpRequestInfo == null) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("Invalid UDP package format!"); } return; } if (string.IsNullOrEmpty(udpRequestInfo.SessionID)) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("Failed to get session key from UDP package!"); } return; } sessionID = udpRequestInfo.SessionID; var appSession = AppServer.GetSessionByID(sessionID); if (appSession == null) { if (!DetectConnectionNumber(remoteEndPoint)) { return; } var socketSession = new UdpSocketSession(listenSocket, remoteEndPoint, sessionID); appSession = AppServer.CreateAppSession(socketSession); if (appSession == null) { return; } if (!DetectConnectionNumber(remoteEndPoint)) { return; } if (!AppServer.RegisterSession(appSession)) { return; } Interlocked.Increment(ref m_ConnectionCount); socketSession.Closed += OnSocketSessionClosed; socketSession.Start(); } else { var socketSession = appSession.SocketSession as UdpSocketSession; //Client remote endpoint may change, so update session to ensure the server can find client correctly socketSession.UpdateRemoteEndPoint(remoteEndPoint); } m_RequestHandler.ExecuteCommand(appSession, requestInfo); }
void ProcessPackageWithSessionID(Socket listenSocket, IPEndPoint remoteEndPoint, byte[] receivedData) { TRequestInfo requestInfo; string sessionID; int rest; try { requestInfo = this.m_UdpRequestFilter.Filter(receivedData, 0, receivedData.Length, false, out rest); } catch (Exception exc) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("Failed to parse UDP package!", exc); } return; } var udpRequestInfo = requestInfo as UdpRequestInfo; if (rest > 0) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("The output parameter rest must be zero in this case!"); } return; } if (udpRequestInfo == null) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("Invalid UDP package format!"); } return; } if (string.IsNullOrEmpty(udpRequestInfo.SessionID)) { if (AppServer.Logger.IsErrorEnabled) { AppServer.Logger.Error("Failed to get session key from UDP package!"); } return; } sessionID = udpRequestInfo.SessionID; var appSession = AppServer.GetSessionByID(sessionID); if (appSession == null) { appSession = CreateNewSession(listenSocket, remoteEndPoint, sessionID); //Failed to create a new session if (appSession == null) { return; } } else { var socketSession = appSession.SocketSession as UdpSocketSession; //Client remote endpoint may change, so update session to ensure the server can find client correctly socketSession.UpdateRemoteEndPoint(remoteEndPoint); } m_RequestHandler.ExecuteCommand(appSession, requestInfo); }