private void OnDataReceived(ITcpConnection conn, IEnumerable<ArraySegment<byte>> data) { IMessageFramer framer; Tuple<ITcpConnection, IMessageFramer> pair; if (!_clientFramers.TryGetValue(conn.ConnectionId, out pair)) { framer = new CrappyTemporaryFramer(); framer.RegisterMessageArrivedCallback(CompleteMessageArrived); _clientFramers.TryAdd(conn.ConnectionId, new Tuple<ITcpConnection, IMessageFramer>(conn, framer)); //Note: we stick the connection ID in the first part of the message just so we // can find it later. This isn't especially nice and is fixed in real code var connectionId = conn.ConnectionId.ToByteArray(); framer.UnFrameData(new ArraySegment<byte>(connectionId, 0, connectionId.Length)); } else { framer = pair.Item2; } framer.UnFrameData(data); conn.ReceiveAsync(OnDataReceived); }
private void OnDataReceived(ITcpConnection conn, IEnumerable <ArraySegment <byte> > data) { IMessageFramer framer; Tuple <ITcpConnection, IMessageFramer> pair; if (!_clientFramers.TryGetValue(conn.ConnectionId, out pair)) { framer = new CrappyTemporaryFramer(); framer.RegisterMessageArrivedCallback(CompleteMessageArrived); _clientFramers.TryAdd(conn.ConnectionId, new Tuple <ITcpConnection, IMessageFramer>(conn, framer)); //Note: we stick the connection ID in the first part of the message just so we // can find it later. This isn't especially nice and is fixed in real code var connectionId = conn.ConnectionId.ToByteArray(); framer.UnFrameData(new ArraySegment <byte>(connectionId, 0, connectionId.Length)); } else { framer = pair.Item2; } framer.UnFrameData(data); conn.ReceiveAsync(OnDataReceived); }