1
- using System . Collections ;
1
+ // Licensed to the .NET Foundation under one or more agreements.
2
+ // The .NET Foundation licenses this file to you under the MIT license.
3
+
2
4
using System ;
3
- using nanoFramework . MessagePack . Converters ;
5
+ using System . Collections ;
6
+ using System . Diagnostics ;
4
7
using System . Runtime . CompilerServices ;
5
- using nanoFramework . MessagePack . Utility ;
8
+ using nanoFramework . MessagePack . Converters ;
6
9
using nanoFramework . MessagePack . Dto ;
7
- using System . Diagnostics ;
8
- using nanoFramework . MessagePack . Stream ;
9
- using nanoFramework . MessagePack . Extensions ;
10
10
using nanoFramework . MessagePack . Exceptions ;
11
- using System . Diagnostics . CodeAnalysis ;
11
+ using nanoFramework . MessagePack . Extensions ;
12
+ using nanoFramework . MessagePack . Stream ;
13
+ using nanoFramework . MessagePack . Utility ;
12
14
#if ! NANOFRAMEWORK_1_0
13
15
using System . Collections . Concurrent ;
14
16
#endif
@@ -84,7 +86,10 @@ public static class ConverterContext
84
86
public static void Add ( Type type , IConverter converter )
85
87
{
86
88
if ( type == typeof ( object ) )
89
+ {
87
90
throw new NotSupportedException ( $ "Converter by type { type . Name } not support in convertors table.") ;
91
+ }
92
+
88
93
ConversionTable . Add ( type . FullName ! , converter ) ;
89
94
}
90
95
@@ -117,7 +122,9 @@ public static void Replace(Type type, IConverter converter)
117
122
public static IConverter GetConverter ( Type type )
118
123
{
119
124
if ( type == typeof ( object ) )
125
+ {
120
126
throw ExceptionUtility . ConverterNotFound ( type ) ;
127
+ }
121
128
122
129
if ( ConversionTable . Contains ( type . FullName ! ) )
123
130
{
@@ -133,11 +140,12 @@ internal static Hashtable GetMappingsValues(Type targetType, object value)
133
140
134
141
Hashtable result = new ( ) ;
135
142
136
- foreach ( var memberMapping in memberMappings )
143
+ foreach ( var memberMapping in memberMappings )
137
144
{
138
145
if ( memberMapping . TryGetValue ( value , out var memberValue ) && memberValue != null )
146
+ {
139
147
result . Add ( memberMapping . Name ! , memberValue ) ;
140
-
148
+ }
141
149
}
142
150
return result ;
143
151
}
@@ -148,19 +156,25 @@ internal static void SetMappingsValues(Type targetType, object targetObject, Has
148
156
149
157
foreach ( var memberMapping in memberMappings )
150
158
{
151
- if ( objectValuesMap . Contains ( memberMapping . Name ! ) )
159
+ if ( objectValuesMap . Contains ( memberMapping . Name ! ) )
152
160
{
153
161
var memberMpToken = ( ArraySegment ) objectValuesMap [ memberMapping . Name ! ] ! ;
154
162
var memberValueMapType = memberMapping . GetMemberType ( ) ;
155
163
var converter = GetConverter ( memberValueMapType ! ) ;
156
164
if ( converter != null )
165
+ {
157
166
memberMapping . SetValue ( targetObject , converter . Read ( new ByteArrayReader ( ( byte [ ] ) memberMpToken ) ) ! ) ;
167
+ }
158
168
else
159
169
{
160
170
if ( memberValueMapType ! . IsArray )
171
+ {
161
172
memberMapping . SetValue ( targetObject , ArrayConverter . Read ( new ByteArrayReader ( ( byte [ ] ) memberMpToken ) , memberValueMapType ) ! ) ;
173
+ }
162
174
else
175
+ {
163
176
memberMapping . SetValue ( targetObject , DeserializeObject ( memberValueMapType ! , new ByteArrayReader ( ( byte [ ] ) memberMpToken ) ) ! ) ;
177
+ }
164
178
}
165
179
}
166
180
}
@@ -228,8 +242,9 @@ internal static void SerializeObject(Type type, object value, IMessagePackWriter
228
242
return targetObject ;
229
243
}
230
244
else
245
+ {
231
246
throw new SerializationException ( $ "Type { type . Name } can not by deserialize.") ;
232
-
247
+ }
233
248
}
234
249
235
250
internal static object ? GetObjectByDataType ( IMessagePackReader reader )
@@ -288,15 +303,29 @@ private static void ThreadSafeAddItemCache(Hashtable hashtable, object key, obje
288
303
private static object ReadObject ( DataTypes type , IMessagePackReader reader )
289
304
{
290
305
if ( type . GetHighBits ( 3 ) == DataTypes . FixStr . GetHighBits ( 3 ) )
306
+ {
291
307
return StringConverter . ReadString ( reader , type - DataTypes . FixStr ) ;
308
+ }
309
+
292
310
if ( NumberConverterHelper . TryGetFixPositiveNumber ( type , out var positive ) )
311
+ {
293
312
return positive ;
313
+ }
314
+
294
315
if ( NumberConverterHelper . TryGetNegativeNumber ( type , out var negative ) )
316
+ {
295
317
return negative ;
318
+ }
319
+
296
320
if ( type . GetHighBits ( 4 ) == DataTypes . FixArray . GetHighBits ( 4 ) )
321
+ {
297
322
return ArrayListConverter . ReadArrayList ( reader , type - DataTypes . FixArray ) ;
323
+ }
324
+
298
325
if ( type . GetHighBits ( 4 ) == DataTypes . FixMap . GetHighBits ( 4 ) )
326
+ {
299
327
return MapConverter . ReadMap ( reader , type - DataTypes . FixMap ) ;
328
+ }
300
329
301
330
throw ExceptionUtility . BadTypeException ( type ) ;
302
331
}
@@ -309,7 +338,9 @@ private static DateTime ReadDateTimeExt(DataTypes type, IMessagePackReader reade
309
338
if ( extType == - 1 )
310
339
{
311
340
if ( type == DataTypes . Timestamp32 )
341
+ {
312
342
seconds = NumberConverterHelper . ReadUInt32 ( reader ) ;
343
+ }
313
344
else
314
345
{
315
346
nanoSeconds = NumberConverterHelper . ReadUInt32 ( reader ) ;
@@ -325,10 +356,14 @@ private static DateTime ReadDateTimeExt(DataTypes type, IMessagePackReader reade
325
356
seconds = NumberConverterHelper . ReadInt64 ( reader ) ;
326
357
}
327
358
else
359
+ {
328
360
throw ExceptionUtility . BadTypeException ( type , DataTypes . Timestamp32 , DataTypes . Timestamp64 , DataTypes . Timestamp96 ) ;
361
+ }
329
362
}
330
363
else
364
+ {
331
365
throw ExceptionUtility . BadTypeException ( type , DataTypes . Timestamp32 , DataTypes . Timestamp64 , DataTypes . Timestamp96 ) ;
366
+ }
332
367
333
368
return DateTime . UnixEpoch . AddSeconds ( seconds ) . AddMilliseconds ( nanoSeconds / 1000.0 ) ;
334
369
}
0 commit comments