1
1
using System ;
2
2
using System . Buffers . Binary ;
3
3
using System . Runtime . CompilerServices ;
4
- using System . Runtime . InteropServices ;
5
4
6
5
namespace RabbitMQ . Util
7
6
{
@@ -10,158 +9,50 @@ internal static class NetworkOrderSerializer
10
9
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
11
10
internal static void WriteDouble ( Span < byte > span , double val )
12
11
{
13
- #if NETFRAMEWORK
14
- if ( span . Length < 8 )
15
- {
16
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write Double to memory." ) ;
17
- }
18
-
19
- long tempVal = BitConverter . DoubleToInt64Bits ( val ) ;
20
- span [ 0 ] = ( byte ) ( ( tempVal >> 56 ) & 0xFF ) ;
21
- span [ 1 ] = ( byte ) ( ( tempVal >> 48 ) & 0xFF ) ;
22
- span [ 2 ] = ( byte ) ( ( tempVal >> 40 ) & 0xFF ) ;
23
- span [ 3 ] = ( byte ) ( ( tempVal >> 32 ) & 0xFF ) ;
24
- span [ 4 ] = ( byte ) ( ( tempVal >> 24 ) & 0xFF ) ;
25
- span [ 5 ] = ( byte ) ( ( tempVal >> 16 ) & 0xFF ) ;
26
- span [ 6 ] = ( byte ) ( ( tempVal >> 8 ) & 0xFF ) ;
27
- span [ 7 ] = ( byte ) ( tempVal & 0xFF ) ;
28
- #elif NETSTANDARD
29
- long tempVal = BitConverter . DoubleToInt64Bits ( val ) ;
30
- BinaryPrimitives . WriteInt64BigEndian ( span , tempVal ) ;
31
- #endif
12
+ BinaryPrimitives . WriteInt64BigEndian ( span , BitConverter . DoubleToInt64Bits ( val ) ) ;
32
13
}
33
14
34
15
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
35
16
internal static void WriteInt16 ( Span < byte > span , short val )
36
17
{
37
- #if NETFRAMEWORK
38
- if ( span . Length < 2 )
39
- {
40
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write Int16 to memory." ) ;
41
- }
42
-
43
- span [ 0 ] = ( byte ) ( ( val >> 8 ) & 0xFF ) ;
44
- span [ 1 ] = ( byte ) ( val & 0xFF ) ;
45
- #elif NETSTANDARD
46
18
BinaryPrimitives . WriteInt16BigEndian ( span , val ) ;
47
- #endif
48
19
}
49
20
50
21
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
51
22
internal static void WriteInt32 ( Span < byte > span , int val )
52
23
{
53
- #if NETFRAMEWORK
54
- if ( span . Length < 4 )
55
- {
56
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write Int32 to memory." ) ;
57
- }
58
-
59
- span [ 0 ] = ( byte ) ( ( val >> 24 ) & 0xFF ) ;
60
- span [ 1 ] = ( byte ) ( ( val >> 16 ) & 0xFF ) ;
61
- span [ 2 ] = ( byte ) ( ( val >> 8 ) & 0xFF ) ;
62
- span [ 3 ] = ( byte ) ( val & 0xFF ) ;
63
- #elif NETSTANDARD
64
24
BinaryPrimitives . WriteInt32BigEndian ( span , val ) ;
65
- #endif
66
25
}
67
26
68
27
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
69
28
internal static void WriteInt64 ( Span < byte > span , long val )
70
29
{
71
- #if NETFRAMEWORK
72
- if ( span . Length < 8 )
73
- {
74
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write Int64 to memory." ) ;
75
- }
76
-
77
- span [ 0 ] = ( byte ) ( ( val >> 56 ) & 0xFF ) ;
78
- span [ 1 ] = ( byte ) ( ( val >> 48 ) & 0xFF ) ;
79
- span [ 2 ] = ( byte ) ( ( val >> 40 ) & 0xFF ) ;
80
- span [ 3 ] = ( byte ) ( ( val >> 32 ) & 0xFF ) ;
81
- span [ 4 ] = ( byte ) ( ( val >> 24 ) & 0xFF ) ;
82
- span [ 5 ] = ( byte ) ( ( val >> 16 ) & 0xFF ) ;
83
- span [ 6 ] = ( byte ) ( ( val >> 8 ) & 0xFF ) ;
84
- span [ 7 ] = ( byte ) ( val & 0xFF ) ;
85
- #elif NETSTANDARD
86
30
BinaryPrimitives . WriteInt64BigEndian ( span , val ) ;
87
- #endif
88
31
}
89
32
90
33
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
91
34
internal static void WriteSingle ( Span < byte > span , float val )
92
35
{
93
- #if NETFRAMEWORK
94
- if ( span . Length < 4 )
95
- {
96
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write Single to memory." ) ;
97
- }
98
-
99
- int tempVal = Unsafe . As < float , int > ( ref val ) ;
100
- span [ 0 ] = ( byte ) ( ( tempVal >> 24 ) & 0xFF ) ;
101
- span [ 1 ] = ( byte ) ( ( tempVal >> 16 ) & 0xFF ) ;
102
- span [ 2 ] = ( byte ) ( ( tempVal >> 8 ) & 0xFF ) ;
103
- span [ 3 ] = ( byte ) ( tempVal & 0xFF ) ;
104
- #elif NETSTANDARD
105
36
int tempVal = Unsafe . As < float , int > ( ref val ) ;
106
37
BinaryPrimitives . WriteInt32BigEndian ( span , tempVal ) ;
107
- #endif
108
38
}
109
39
110
40
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
111
41
internal static void WriteUInt16 ( Span < byte > span , ushort val )
112
42
{
113
- #if NETFRAMEWORK
114
- if ( span . Length < 2 )
115
- {
116
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write UInt16 to memory." ) ;
117
- }
118
-
119
- span [ 0 ] = ( byte ) ( ( val >> 8 ) & 0xFF ) ;
120
- span [ 1 ] = ( byte ) ( val & 0xFF ) ;
121
- #elif NETSTANDARD
122
43
BinaryPrimitives . WriteUInt16BigEndian ( span , val ) ;
123
- #endif
124
44
}
125
45
126
46
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
127
47
internal static void WriteUInt32 ( Span < byte > span , uint val )
128
48
{
129
- #if NETFRAMEWORK
130
- if ( span . Length < 4 )
131
- {
132
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write UInt32 to memory." ) ;
133
- }
134
-
135
- span [ 0 ] = ( byte ) ( ( val >> 24 ) & 0xFF ) ;
136
- span [ 1 ] = ( byte ) ( ( val >> 16 ) & 0xFF ) ;
137
- span [ 2 ] = ( byte ) ( ( val >> 8 ) & 0xFF ) ;
138
- span [ 3 ] = ( byte ) ( val & 0xFF ) ;
139
- #elif NETSTANDARD
140
49
BinaryPrimitives . WriteUInt32BigEndian ( span , val ) ;
141
- #endif
142
50
}
143
51
144
-
145
52
[ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
146
53
internal static void WriteUInt64 ( Span < byte > span , ulong val )
147
54
{
148
- #if NETFRAMEWORK
149
- if ( span . Length < 8 )
150
- {
151
- throw new ArgumentOutOfRangeException ( nameof ( span ) , "Insufficient length to write UInt64 from memory." ) ;
152
- }
153
-
154
- span [ 0 ] = ( byte ) ( ( val >> 56 ) & 0xFF ) ;
155
- span [ 1 ] = ( byte ) ( ( val >> 48 ) & 0xFF ) ;
156
- span [ 2 ] = ( byte ) ( ( val >> 40 ) & 0xFF ) ;
157
- span [ 3 ] = ( byte ) ( ( val >> 32 ) & 0xFF ) ;
158
- span [ 4 ] = ( byte ) ( ( val >> 24 ) & 0xFF ) ;
159
- span [ 5 ] = ( byte ) ( ( val >> 16 ) & 0xFF ) ;
160
- span [ 6 ] = ( byte ) ( ( val >> 8 ) & 0xFF ) ;
161
- span [ 7 ] = ( byte ) ( val & 0xFF ) ;
162
- #elif NETSTANDARD
163
55
BinaryPrimitives . WriteUInt64BigEndian ( span , val ) ;
164
- #endif
165
56
}
166
57
}
167
58
}
0 commit comments