public void SsmPacketReadOverlongFromStream() { IList <int> addresses = new int[] { 1, 2, 3 }; SsmPacket request = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> values = new byte[] { 1, 2, 3 }; SsmPacket response = SsmPacket.CreateMultipleReadResponse(values); List <byte> buffer = new List <byte>(request.Data); buffer.AddRange(response.Data); buffer.AddRange(new byte[] { 0, 0, 0, 0 }); MemoryStream stream = new MemoryStream(buffer.ToArray()); SsmPacket actual = SsmPacketParser.ReadFromStream(stream); Utility.CompareArrays("ReadFromStream", response.Data, actual.Data); }
private void ReadFromStream(bool fragmented) { IList <int> addresses = new int[] { 1, 2, 3 }; SsmPacket request = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> values = new byte[] { 1, 2, 3 }; SsmPacket response = SsmPacket.CreateMultipleReadResponse(values); List <byte> buffer = new List <byte>(request.Data); buffer.AddRange(response.Data); MemoryStream stream = new MemoryStream(buffer.ToArray()); if (fragmented) { stream = FragmentedStream.GetInstance(stream); } SsmPacket actual = SsmPacketParser.ReadFromStream(stream); Utility.CompareArrays("ReadFromStream", response.Data, actual.Data); }
private void ReadFromStreamAsync(bool fragmented) { IList <int> addresses = new int[] { 1, 2, 3 }; SsmPacket request = SsmPacket.CreateMultipleReadRequest(addresses); IList <byte> values = new byte[] { 1, 2, 3 }; SsmPacket response = SsmPacket.CreateMultipleReadResponse(values); List <byte> buffer = new List <byte>(request.Data); buffer.AddRange(response.Data); MemoryStream stream = new MemoryStream(buffer.ToArray()); if (fragmented) { stream = FragmentedStream.GetInstance(stream); } SsmPacketParser parser = SsmPacketParser.CreateInstance(); IAsyncResult asyncResult = parser.BeginReadFromStream(stream, ReadCompleted, parser); asyncResult.AsyncWaitHandle.WaitOne(); Utility.CompareArrays("ReadFromStreamAsync", response.Data, this.packet.Data); }
private void ReadCompleted(IAsyncResult asyncResult) { SsmPacketParser parser = (SsmPacketParser)asyncResult.AsyncState; this.packet = parser.EndReadFromStream(asyncResult); }