Skip to content

Commit 27464f1

Browse files
committed
Use BinaryPrimitives methods for serialization.
1 parent df8b00f commit 27464f1

File tree

1 file changed

+6
-26
lines changed

1 file changed

+6
-26
lines changed

src/MySqlConnector/Protocol/Serialization/ByteBufferWriter.cs

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Buffers;
3+
using System.Buffers.Binary;
34
using System.Buffers.Text;
45
using System.Diagnostics;
56
using System.Text;
@@ -55,49 +56,31 @@ public void Write(ushort value)
5556
{
5657
if (m_output.Length < 2)
5758
Reallocate(2);
58-
var span = m_output.Span;
59-
span[0] = (byte) value;
60-
span[1] = (byte) (value >> 8);
59+
BinaryPrimitives.WriteUInt16LittleEndian(m_output.Span, value);
6160
m_output = m_output.Slice(2);
6261
}
6362

6463
public void Write(int value)
6564
{
6665
if (m_output.Length < 4)
6766
Reallocate(4);
68-
var span = m_output.Span;
69-
span[0] = (byte) value;
70-
span[1] = (byte) (value >> 8);
71-
span[2] = (byte) (value >> 16);
72-
span[3] = (byte) (value >> 24);
67+
BinaryPrimitives.WriteInt32LittleEndian(m_output.Span, value);
7368
m_output = m_output.Slice(4);
7469
}
7570

7671
public void Write(uint value)
7772
{
7873
if (m_output.Length < 4)
7974
Reallocate(4);
80-
var span = m_output.Span;
81-
span[0] = (byte) value;
82-
span[1] = (byte) (value >> 8);
83-
span[2] = (byte) (value >> 16);
84-
span[3] = (byte) (value >> 24);
75+
BinaryPrimitives.WriteUInt32LittleEndian(m_output.Span, value);
8576
m_output = m_output.Slice(4);
8677
}
8778

8879
public void Write(ulong value)
8980
{
9081
if (m_output.Length < 8)
9182
Reallocate(8);
92-
var span = m_output.Span;
93-
span[0] = (byte) value;
94-
span[1] = (byte) (value >> 8);
95-
span[2] = (byte) (value >> 16);
96-
span[3] = (byte) (value >> 24);
97-
span[4] = (byte) (value >> 32);
98-
span[5] = (byte) (value >> 40);
99-
span[6] = (byte) (value >> 48);
100-
span[7] = (byte) (value >> 56);
83+
BinaryPrimitives.WriteUInt64LittleEndian(m_output.Span, value);
10184
m_output = m_output.Slice(8);
10285
}
10386

@@ -242,10 +225,7 @@ public static void WriteLengthEncodedInteger(this ByteBufferWriter writer, ulong
242225
}
243226
else if (value < 16777216)
244227
{
245-
writer.Write((byte) 0xfd);
246-
writer.Write((byte) (value & 0xFF));
247-
writer.Write((byte) ((value >> 8) & 0xFF));
248-
writer.Write((byte) ((value >> 16) & 0xFF));
228+
writer.Write((uint) ((value << 8) | 0xfd));
249229
}
250230
else
251231
{

0 commit comments

Comments
 (0)