private void AcceptCallback(IAsyncResult result) { try { // accept the client and create the object var clientSocket = serverSocket.EndAccept(result); var newClient = new Client(this, clientSocket); newClient.StartRecieve(); // trigger the event OnNewClient(this, new NewClientEventArgs(newClient)); // restart accept serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null); } catch (SocketException exc) { serverSocket.Close(); Console.WriteLine("Socket exception: " + exc.SocketErrorCode); } catch (Exception exc) { serverSocket.Close(); Console.WriteLine("Exception: " + exc); } }
protected GenericSession(Client client, IEventAggregator aggregator) { this.client = client; this.aggregator = aggregator; State = new InvalidState(); }
private void Reset() { client = null; buffer = new byte[]{}; dataLen = 0; newClient = false; lostClient = false; newData = false; }
private void OnNewClient(Object sender, NewClientEventArgs e) { newClient = true; client = e.Client; client.OnNewData += OnNewData; client.OnLostClient += OnLostClient; }
// TODO: add whatever properties are needed in the login server per session here // but be careful not to introduce too much state! public GameSession(Client client, IEventAggregator aggregator) : base(client, aggregator) { State = new HandshakeState(); }
public NewDataEventArgs(Client client, byte[] buffer, int dataLen) { this.Client = client; this.Buffer = buffer; this.DataLen = dataLen; }
public NewClientEventArgs(Client client) { this.Client = client; }
public LostClientEventArgs(Client client) { this.Client = client; }