internal void Runner() { peer.AddDeveIncomingMessage(new DeveIncomingMessageStreamSocket(this, new byte[2] { (byte)DeveMessageTypeStreamSocket.StatusChanged, (byte)NetworkStatusStreamSocket.Connected })); Thread tr = new Thread(Sender); tr.Start(); while (!shouldShutdown && tcpClient.Connected) { try { byte[] firstLengthIntByteArray = ReadThisAmmountOfBytes(4); int bytesToRead = BitConverter.ToInt32(firstLengthIntByteArray, 0); if (bytesToRead > peer.MaxMessageSize) { Console.WriteLine("Warning: I'm gonna receive a big message of the size: " + bytesToRead); //throw new InvalidDataException("This message is probably a bit big :), the size is: " + bytesToRead + " max message size is: " + this.maxMessageSize); } byte[] data = ReadThisAmmountOfBytes(bytesToRead); DeveIncomingMessageStreamSocket devIn = new DeveIncomingMessageStreamSocket(this, data); peer.AddDeveIncomingMessage(devIn); } catch (SocketException e) { Console.WriteLine("Socket exception: " + e.ToString()); break; } catch (EndOfStreamException e) { Console.WriteLine("Exception that happens when a client disconnects nice and safe: " + e.ToString()); break; } catch (IOException e) { Console.WriteLine("IOException: " + e.ToString()); break; } } if (peer is DeveServerStreamSocket) { ((DeveServerStreamSocket)peer).RemoveClient(this); } peer.AddDeveIncomingMessage(new DeveIncomingMessageStreamSocket(this, new byte[2] { (byte)DeveMessageTypeStreamSocket.StatusChanged, (byte)NetworkStatusStreamSocket.Disconnected })); }
internal void AddDeveIncomingMessage(DeveIncomingMessageStreamSocket devInc) { messages.Enqueue(devInc); }