/// <summary> /// Constructor /// </summary> public GpcmClient(GamespyTcpStream ConnectionStream, int ConnectionId) { // Set default variable values PlayerNick = "Connecting..."; PlayerId = 0; RemoteEndPoint = (IPEndPoint)ConnectionStream.RemoteEndPoint; Disposed = false; Status = LoginStatus.None; // Set the connection ID this.ConnectionId = ConnectionId; // Create our Client Stream Stream = ConnectionStream; Stream.OnDisconnect += Stream_OnDisconnect; Stream.DataReceived += Stream_DataReceived; Stream.BeginReceive(); }
/// <summary> /// When a new connection is established, we the parent class are responsible /// for handling the processing /// </summary> /// <param name="Stream">A GamespyTcpStream object that wraps the I/O AsyncEventArgs and socket</param> protected override void ProcessAccept(GamespyTcpStream Stream) { try { // Convert the TcpClient to a MasterClient GpspClient client = new GpspClient(Stream); Clients.TryAdd(client.ConnectionId, client); // Begin accepting data now that we are fully connected Stream.BeginReceive(); } catch (Exception e) { Program.ErrorLog.Write("WARNING: An Error occured at [Gpsp.ProcessAccept] : Generating Exception Log"); ExceptionHandler.GenerateExceptionLog(e); base.Release(Stream); } }
/// <summary> /// Accepts a TcpClient, and begin the serverlist fetching process for the client. /// This method is executed when the user updates his server browser ingame /// </summary> protected override void ProcessAccept(GamespyTcpStream Stream) { // End the operation and display the received data on // the console. try { // Convert the TcpClient to a MasterClient MasterClient client = new MasterClient(Stream); Clients.TryAdd(client.ConnectionId, client); // Begin accepting data now that we are fully connected Stream.BeginReceive(); } catch (Exception e) { Program.ErrorLog.Write("WARNING: An Error occured at [MstrServer.AcceptClient] : Generating Exception Log"); ExceptionHandler.GenerateExceptionLog(e); base.Release(Stream); } }