From 551dca6d0e04693ac2164f9de40dac176d2f5c2e Mon Sep 17 00:00:00 2001 From: lidgren Date: Tue, 13 Jul 2010 14:28:34 +0000 Subject: [PATCH] NetIncomingMessage and NetOutgoingMessage now implements Stream as base class --- Lidgren.Network/Lidgren.Network.csproj | 2 ++ Lidgren.Network/NetConnection.cs | 5 ++++- Lidgren.Network/NetIncomingMessage.Read.cs | 6 +++--- Lidgren.Network/NetIncomingMessage.Write.cs | 7 ++++++- Lidgren.Network/NetOutgoingMessage.Write.cs | 2 +- Samples/ManyServer/Program.cs | 2 -- UnitTests/ReadWriteTests.cs | 19 +++++++++++++++++++ 7 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Lidgren.Network/Lidgren.Network.csproj b/Lidgren.Network/Lidgren.Network.csproj index 82f264d..829602c 100644 --- a/Lidgren.Network/Lidgren.Network.csproj +++ b/Lidgren.Network/Lidgren.Network.csproj @@ -56,11 +56,13 @@ + + diff --git a/Lidgren.Network/NetConnection.cs b/Lidgren.Network/NetConnection.cs index 17c10a7..9ca5280 100644 --- a/Lidgren.Network/NetConnection.cs +++ b/Lidgren.Network/NetConnection.cs @@ -537,7 +537,10 @@ namespace Lidgren.Network int offset = nr * info.FragmentSize; if (im.m_data.Length < offset + payloadLength) - Array.Resize(ref im.m_data, offset + payloadLength); + { + byte[] arr = im.m_data; + Array.Resize(ref arr, offset + payloadLength); + } Buffer.BlockCopy(m_owner.m_receiveBuffer, ptr, im.m_data, offset, payloadLength); diff --git a/Lidgren.Network/NetIncomingMessage.Read.cs b/Lidgren.Network/NetIncomingMessage.Read.cs index 7224b60..fb3c8a0 100644 --- a/Lidgren.Network/NetIncomingMessage.Read.cs +++ b/Lidgren.Network/NetIncomingMessage.Read.cs @@ -35,10 +35,10 @@ namespace Lidgren.Network /// /// Gets or sets the read position in the buffer, in bits (not bytes) /// - public int Position + public override long Position // override of Stream property { - get { return m_readPosition; } - set { m_readPosition = value; } + get { return (long)m_readPosition; } + set { m_readPosition = (int)value; } } static NetIncomingMessage() diff --git a/Lidgren.Network/NetIncomingMessage.Write.cs b/Lidgren.Network/NetIncomingMessage.Write.cs index bce7c3a..5a641df 100644 --- a/Lidgren.Network/NetIncomingMessage.Write.cs +++ b/Lidgren.Network/NetIncomingMessage.Write.cs @@ -88,7 +88,12 @@ namespace Lidgren.Network m_bitLength += bits; } - internal void Write(byte[] source, int offsetInBytes, int numberOfBytes) + public override void Write(byte[] source, int offsetInBytes, int numberOfBytes) + { + throw new NetException("NetIncomingMessage does not support writing!"); + } + + internal void WriteBytes(byte[] source, int offsetInBytes, int numberOfBytes) { if (source == null) throw new ArgumentNullException("source"); diff --git a/Lidgren.Network/NetOutgoingMessage.Write.cs b/Lidgren.Network/NetOutgoingMessage.Write.cs index 6de51a9..af3d201 100644 --- a/Lidgren.Network/NetOutgoingMessage.Write.cs +++ b/Lidgren.Network/NetOutgoingMessage.Write.cs @@ -160,7 +160,7 @@ namespace Lidgren.Network m_bitLength += bits; } - public void Write(byte[] source, int offsetInBytes, int numberOfBytes) + public override void Write(byte[] source, int offsetInBytes, int numberOfBytes) { if (source == null) throw new ArgumentNullException("source"); diff --git a/Samples/ManyServer/Program.cs b/Samples/ManyServer/Program.cs index be3f5e7..858c8c1 100644 --- a/Samples/ManyServer/Program.cs +++ b/Samples/ManyServer/Program.cs @@ -12,8 +12,6 @@ namespace ManyServer public static Form1 MainForm; public static NetServer Server; - private static double m_lastUpdatedTitle; - [STAThread] static void Main() { diff --git a/UnitTests/ReadWriteTests.cs b/UnitTests/ReadWriteTests.cs index 12e18df..9b3b260 100644 --- a/UnitTests/ReadWriteTests.cs +++ b/UnitTests/ReadWriteTests.cs @@ -88,6 +88,25 @@ namespace UnitTests NetException.Assert(readTest.Number == 42); NetException.Assert(readTest.Name == "Hallon"); NetException.Assert(readTest.Age == 8.2f); + + msg = peer.CreateMessage(); + + System.IO.BinaryWriter br = new System.IO.BinaryWriter(msg); + + br.Write(true); + br.Write("hallon"); + br.Write((byte)42); + + int byteLen = msg.LengthBytes; + byte[] rbts = msg.PeekDataBuffer(); + + inc = Program.CreateIncomingMessage(rbts, msg.LengthBits); + + System.IO.BinaryReader rdr = new System.IO.BinaryReader(inc); + + bool one = rdr.ReadBoolean(); + string hallon = rdr.ReadString(); + byte fourtyTwo = rdr.ReadByte(); } }