]> git.deb.at Git - rhonda/impostor.git/commitdiff
Switch to BinaryPrimitives
authorAeonLucid <aeonlucid@gmail.com>
Thu, 15 Oct 2020 03:22:31 +0000 (05:22 +0200)
committerAeonLucid <aeonlucid@gmail.com>
Thu, 15 Oct 2020 03:22:31 +0000 (05:22 +0200)
src/Impostor.Server.Hazel/Messages/BufferMessageReader.cs

index 5ff0fab41a18113d2b3a54125e1186ecf14b7bff..4927df52a32e9d601bdbcf5af5a6d9ae5287821a 100644 (file)
@@ -1,4 +1,5 @@
 using System;
+using System.Buffers.Binary;
 using System.Runtime.CompilerServices;
 using System.Text;
 using Impostor.Server.Net.Messages;
@@ -47,63 +48,36 @@ namespace Impostor.Server.Hazel.Messages
 
         public ushort ReadUInt16()
         {
-            // TODO: Refactor to System.Buffers.Binary.BinaryPrimitives
-            
-            ushort output =
-                (ushort)(FastByte()
-                         | FastByte() << 8);
+            var output = BinaryPrimitives.ReadUInt16LittleEndian(Buffer.Span.Slice(Position));
+            Position += sizeof(ushort);
             return output;
         }
 
         public short ReadInt16()
         {
-            // TODO: Refactor to System.Buffers.Binary.BinaryPrimitives
-            
-            short output =
-                (short)(FastByte() | FastByte() << 8);
+            var output = BinaryPrimitives.ReadInt16LittleEndian(Buffer.Span.Slice(Position));
+            Position += sizeof(short);
             return output;
         }
 
         public uint ReadUInt32()
         {
-            // TODO: Refactor to System.Buffers.Binary.BinaryPrimitives
-            
-            uint output = FastByte()
-                          | (uint)FastByte() << 8
-                          | (uint)FastByte() << 16
-                          | (uint)FastByte() << 24;
-
+            var output = BinaryPrimitives.ReadUInt32LittleEndian(Buffer.Span.Slice(Position));
+            Position += sizeof(uint);
             return output;
         }
 
         public int ReadInt32()
         {
-            // TODO: Refactor to System.Buffers.Binary.BinaryPrimitives
-            
-            int output = FastByte()
-                         | FastByte() << 8
-                         | FastByte() << 16
-                         | FastByte() << 24;
-
+            var output = BinaryPrimitives.ReadInt32LittleEndian(Buffer.Span.Slice(Position));
+            Position += sizeof(int);
             return output;
         }
 
         public unsafe float ReadSingle()
         {
-            // TODO: Refactor to System.Buffers.Binary.BinaryPrimitives
-            
-            float output = 0;
-            fixed (byte* bufPtr = &Buffer.Span[Position])
-            {
-                byte* outPtr = (byte*)&output;
-
-                *outPtr = *bufPtr;
-                *(outPtr + 1) = *(bufPtr + 1);
-                *(outPtr + 2) = *(bufPtr + 2);
-                *(outPtr + 3) = *(bufPtr + 3);
-            }
-
-            Position += 4;
+            var output = BinaryPrimitives.ReadSingleLittleEndian(Buffer.Span.Slice(Position));
+            Position += sizeof(float);
             return output;
         }