public AsyncTransportChannel(SocketAsyncEventArgs receiveEventArgs, SocketAsyncEventArgs sendEventArgs, NetworkSettings settings) { _receiveSAEA = receiveEventArgs; _sendSAEA = sendEventArgs; _networkSettings = settings; _packetReceiverLogic = new PacketReceiverLogic(settings.BufferSize, settings.ReceivePrefixLength); _packetSenderLogic = new PacketSenderLogic(settings.BufferSize, settings.SendPrefixLength); Initialize(); }
static void ListenAndEchoToConsole(object arg) { lock (lockObject) { Stream tcpStream = (Stream)arg; byte[] buffer = new byte[50]; PacketReceiverLogic receiverLogic = new PacketReceiverLogic(50, 4); IMessageSerializer serializer = new MsgPackSerializer(new TypeResolver()); while (true) { try { int readBytes = tcpStream.Read(buffer, 0, 50); lock (lockObject) { Buffer.BlockCopy(buffer, 0, receiverLogic.IncomingDataBuffer, 0, readBytes); receiverLogic.TransferredBytesCount = readBytes; receiverLogic.Process(); } foreach (var output in receiverLogic.Output) { if (output.Length > 0) { //TestResponse message = (TestResponse)serializer.Deserialize(output); //Console.WriteLine("Response: " + message.MessageType + " " + message.Number); } } } catch (ObjectDisposedException ex){} catch (IOException ex){} catch (InvalidOperationException ex){} catch (Exception ex) { Console.WriteLine("OOPS! An error happened!"); Console.WriteLine(ex.ToString()); } } } }