From bbeb7dfb2a3589b9614a939c0d741f0e7fb38de8 Mon Sep 17 00:00:00 2001 From: lidgren Date: Mon, 26 Jul 2010 07:39:02 +0000 Subject: [PATCH] NetServer.Disconnect added; Buffer.BlockCopy used in NetBitWriter --- Lidgren.Network/NetBitWriter.cs | 7 ++----- Lidgren.Network/NetServer.cs | 5 +++++ UnitTests/ReadWriteTests.cs | 12 ++++++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Lidgren.Network/NetBitWriter.cs b/Lidgren.Network/NetBitWriter.cs index e8bbac9..e51aaf5 100644 --- a/Lidgren.Network/NetBitWriter.cs +++ b/Lidgren.Network/NetBitWriter.cs @@ -72,8 +72,7 @@ namespace Lidgren.Network if (startReadAtIndex == 0) { - for (int i = 0; i < numberOfBytes; i++) - destination[destinationByteOffset++] = fromBuffer[readPtr++]; + Buffer.BlockCopy(fromBuffer, readPtr, destination, destinationByteOffset, numberOfBytes); return; } @@ -146,9 +145,7 @@ namespace Lidgren.Network if (firstPartLen == 0) { - // optimized; TODO: write 32 bit chunks if possible - for (int i = 0; i < numberOfBytes; i++) - destination[dstBytePtr++] = source[sourceByteOffset + i]; + Buffer.BlockCopy(source, sourceByteOffset, destination, dstBytePtr, numberOfBytes); return; } diff --git a/Lidgren.Network/NetServer.cs b/Lidgren.Network/NetServer.cs index d164909..64f6f4f 100644 --- a/Lidgren.Network/NetServer.cs +++ b/Lidgren.Network/NetServer.cs @@ -29,5 +29,10 @@ namespace Lidgren.Network // force this to true config.AcceptIncomingConnections = true; } + + public void Disconnect(NetConnection connection, string byeMessage) + { + connection.Disconnect(byeMessage); + } } } diff --git a/UnitTests/ReadWriteTests.cs b/UnitTests/ReadWriteTests.cs index 7917387..34731e7 100644 --- a/UnitTests/ReadWriteTests.cs +++ b/UnitTests/ReadWriteTests.cs @@ -107,6 +107,18 @@ namespace UnitTests bool one = rdr.ReadBoolean(); string hallon = rdr.ReadString(); byte fourtyTwo = rdr.ReadByte(); + + // test aligned WriteBytes/ReadBytes + msg = peer.CreateMessage(); + byte[] tmparr = new byte[] { 5, 6, 7, 8, 9 }; + msg.Write(tmparr); + + inc = Program.CreateIncomingMessage(msg.PeekDataBuffer(), msg.LengthBits); + byte[] result = inc.ReadBytes(tmparr.Length); + + for (int i = 0; i < tmparr.Length; i++) + if (tmparr[i] != result[i]) + throw new Exception("readbytes fail"); } }