Skip to content

Commit

Permalink
Remove unused sync methods
Browse files Browse the repository at this point in the history
  • Loading branch information
mycroes committed Jun 6, 2021
1 parent 2302819 commit 8d08185
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 95 deletions.
21 changes: 7 additions & 14 deletions S7.Net.UnitTest/ProtocolTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,17 @@ public class ProtocolUnitTest
public async Task TPKT_Read()
{
var m = new MemoryStream(StringToByteArray("0300002902f0803203000000010002001400000401ff0400807710000100000103000000033f8ccccd"));
var t = TPKT.Read(m);
Assert.AreEqual(0x03, t.Version);
Assert.AreEqual(0x29, t.Length);
m.Position = 0;
t = await TPKT.ReadAsync(m, TestContext.CancellationTokenSource.Token);
var t = await TPKT.ReadAsync(m, TestContext.CancellationTokenSource.Token);
Assert.AreEqual(0x03, t.Version);
Assert.AreEqual(0x29, t.Length);
}

[TestMethod]
[ExpectedException(typeof(TPKTInvalidException))]
public void TPKT_ReadShort()
public async Task TPKT_ReadShort()
{
var m = new MemoryStream(StringToByteArray("0300002902f0803203000000010002001400000401ff040080"));
var t = TPKT.Read(m);
var t = await TPKT.ReadAsync(m, CancellationToken.None);
}


Expand All @@ -48,14 +44,11 @@ public async Task TPKT_ReadShortAsync()
}

[TestMethod]
public void COTP_ReadTSDU()
public async Task COTP_ReadTSDU()
{
var expected = StringToByteArray("320700000400000800080001120411440100ff09000400000000");
var m = new MemoryStream(StringToByteArray("0300000702f0000300000702f0000300002102f080320700000400000800080001120411440100ff09000400000000"));
var t = COTP.TSDU.Read(m);
Assert.IsTrue(expected.SequenceEqual(t));
m.Position = 0;
t = COTP.TSDU.ReadAsync(m, TestContext.CancellationTokenSource.Token).Result;
var t = await COTP.TSDU.ReadAsync(m, TestContext.CancellationTokenSource.Token);
Assert.IsTrue(expected.SequenceEqual(t));
}

Expand All @@ -69,11 +62,11 @@ public static byte[] StringToByteArray(string hex)


[TestMethod]
public void TestResponseCode()
public async Task TestResponseCode()
{
var expected = StringToByteArray("320700000400000800080001120411440100ff09000400000000");
var m = new MemoryStream(StringToByteArray("0300000702f0000300000702f0000300002102f080320700000400000800080001120411440100ff09000400000000"));
var t = COTP.TSDU.Read(m);
var t = await COTP.TSDU.ReadAsync(m, CancellationToken.None);
Assert.IsTrue(expected.SequenceEqual(t));


Expand Down
26 changes: 19 additions & 7 deletions S7.Net.UnitTest/StreamTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace S7.Net.UnitTest
Expand All @@ -15,6 +16,7 @@ public TestStream1BytePerRead(byte[] data)
{
Data = data;
}

public override bool CanRead => _position < Data.Length;

public override bool CanSeek => throw new NotImplementedException();
Expand All @@ -26,21 +28,31 @@ public TestStream1BytePerRead(byte[] data)
public override long Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
public byte[] Data { get; }

int _position = 0;

public override void Flush()
{
throw new NotImplementedException();
}

int _position = 0;
public override int Read(byte[] buffer, int offset, int count)
{
throw new NotImplementedException();
}

public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();

if (_position >= Data.Length)
{
return 0;
return Task.FromResult(0);
}

buffer[offset] = Data[_position];
++_position;
return 1;

return Task.FromResult(1);
}

public override long Seek(long offset, SeekOrigin origin)
Expand Down Expand Up @@ -78,21 +90,21 @@ public async Task TPKT_ReadRestrictedStreamAsync()
}

[TestMethod]
public void TPKT_ReadRestrictedStream()
public async Task TPKT_ReadRestrictedStream()
{
var fullMessage = ProtocolUnitTest.StringToByteArray("0300002902f0803203000000010002001400000401ff0400807710000100000103000000033f8ccccd");
var m = new TestStream1BytePerRead(fullMessage);
var t = TPKT.Read(m);
var t = await TPKT.ReadAsync(m, CancellationToken.None);
Assert.AreEqual(fullMessage.Length, t.Length);
Assert.AreEqual(fullMessage.Last(), t.Data.Last());
}

[TestMethod]
public void TPKT_ReadStreamTooShort()
public async Task TPKT_ReadStreamTooShort()
{
var fullMessage = ProtocolUnitTest.StringToByteArray("0300002902f0803203000000010002001400");
var m = new TestStream1BytePerRead(fullMessage);
Assert.ThrowsException<TPKTInvalidException>(() => TPKT.Read(m));
await Assert.ThrowsExceptionAsync<TPKTInvalidException>(() => TPKT.ReadAsync(m, CancellationToken.None));
}
}
}
46 changes: 0 additions & 46 deletions S7.Net/COTP.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,22 +50,6 @@ public TPDU(TPKT tPKT)
Data = new byte[0];
}

/// <summary>
/// Reads COTP TPDU (Transport protocol data unit) from the network stream
/// See: https://tools.ietf.org/html/rfc905
/// </summary>
/// <param name="stream">The socket to read from</param>
/// <returns>COTP DPDU instance</returns>
public static TPDU Read(Stream stream)
{
var tpkt = TPKT.Read(stream);
if (tpkt.Length == 0)
{
throw new TPDUInvalidException("No protocol data received");
}
return new TPDU(tpkt);
}

/// <summary>
/// Reads COTP TPDU (Transport protocol data unit) from the network stream
/// See: https://tools.ietf.org/html/rfc905
Expand Down Expand Up @@ -100,36 +84,6 @@ public override string ToString()
/// </summary>
public class TSDU
{
/// <summary>
/// Reads the full COTP TSDU (Transport service data unit)
/// See: https://tools.ietf.org/html/rfc905
/// </summary>
/// <param name="stream">The stream to read from</param>
/// <returns>Data in TSDU</returns>
public static byte[] Read(Stream stream)
{
var segment = TPDU.Read(stream);

if (segment.LastDataUnit)
{
return segment.Data;
}

// More segments are expected, prepare a buffer to store all data
var buffer = new byte[segment.Data.Length];
Array.Copy(segment.Data, buffer, segment.Data.Length);

while (!segment.LastDataUnit)
{
segment = TPDU.Read(stream);
var previousLength = buffer.Length;
Array.Resize(ref buffer, buffer.Length + segment.Data.Length);
Array.Copy(segment.Data, 0, buffer, previousLength, segment.Data.Length);
}

return buffer;
}

/// <summary>
/// Reads the full COTP TSDU (Transport service data unit)
/// See: https://tools.ietf.org/html/rfc905
Expand Down
28 changes: 0 additions & 28 deletions S7.Net/TPKT.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,34 +25,6 @@ private TPKT(byte version, byte reserved1, int length, byte[] data)
Data = data;
}

/// <summary>
/// Reads a TPKT from the socket
/// </summary>
/// <param name="stream">The stream to read from</param>
/// <returns>TPKT Instance</returns>
public static TPKT Read(Stream stream)
{
var buf = new byte[4];
int len = stream.ReadExact(buf, 0, 4);
if (len < 4) throw new TPKTInvalidException($"TPKT header is incomplete / invalid. Received Bytes: {len} expected: {buf.Length}");
var version = buf[0];
var reserved1 = buf[1];
var length = buf[2] * 256 + buf[3]; //BigEndian

var data = new byte[length - 4];
len = stream.ReadExact(data, 0, data.Length);
if (len < data.Length)
throw new TPKTInvalidException($"TPKT payload is incomplete / invalid. Received Bytes: {len} expected: {data.Length}");

return new TPKT
(
version: version,
reserved1: reserved1,
length: length,
data: data
);
}

/// <summary>
/// Reads a TPKT from the socket Async
/// </summary>
Expand Down

0 comments on commit 8d08185

Please sign in to comment.