Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
serializer/src/dataserializer.c@0:f7f1f0d76dd6, 2018-08-23 (annotated)
- Committer:
- XinZhangMS
- Date:
- Thu Aug 23 06:52:14 2018 +0000
- Revision:
- 0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| XinZhangMS | 0:f7f1f0d76dd6 | 1 | // Copyright (c) Microsoft. All rights reserved. |
| XinZhangMS | 0:f7f1f0d76dd6 | 2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. |
| XinZhangMS | 0:f7f1f0d76dd6 | 3 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 4 | #include "azure_c_shared_utility/gballoc.h" |
| XinZhangMS | 0:f7f1f0d76dd6 | 5 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 6 | #include "dataserializer.h" |
| XinZhangMS | 0:f7f1f0d76dd6 | 7 | #include "azure_c_shared_utility/xlogging.h" |
| XinZhangMS | 0:f7f1f0d76dd6 | 8 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 9 | DEFINE_ENUM_STRINGS(DATA_SERIALIZER_RESULT, DATA_SERIALIZER_RESULT_VALUES); |
| XinZhangMS | 0:f7f1f0d76dd6 | 10 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 11 | BUFFER_HANDLE DataSerializer_Encode(MULTITREE_HANDLE multiTreeHandle, DATA_SERIALIZER_MULTITREE_TYPE dataType, DATA_SERIALIZER_ENCODE_FUNC encodeFunc) |
| XinZhangMS | 0:f7f1f0d76dd6 | 12 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 13 | BUFFER_HANDLE pBuffer; |
| XinZhangMS | 0:f7f1f0d76dd6 | 14 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 15 | /* Codes_SRS_DATA_SERIALIZER_07_003: [NULL shall be returned when an invalid parameter is supplied.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 16 | if (multiTreeHandle == NULL || encodeFunc == NULL) |
| XinZhangMS | 0:f7f1f0d76dd6 | 17 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 18 | pBuffer = NULL; |
| XinZhangMS | 0:f7f1f0d76dd6 | 19 | LogError("(Error code: %s)", ENUM_TO_STRING(DATA_SERIALIZER_RESULT, DATA_SERIALIZER_INVALID_ARG) ); |
| XinZhangMS | 0:f7f1f0d76dd6 | 20 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 21 | else |
| XinZhangMS | 0:f7f1f0d76dd6 | 22 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 23 | /* Codes_SRS_DATA_SERIALIZER_07_009: [DataSerializer_Encode function shall call into the given DATA_SERIALIZER_ENCODE_FUNC callback with a valid BUFFER object and valid MULTITREE_HANDLE object.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 24 | pBuffer = encodeFunc(multiTreeHandle, dataType); |
| XinZhangMS | 0:f7f1f0d76dd6 | 25 | if (pBuffer == NULL) |
| XinZhangMS | 0:f7f1f0d76dd6 | 26 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 27 | /* Codes_SRS_DATA_SERIALIZER_07_010: [Upon a DATA_SERIALIZER_ENCODE_FUNC failure the DataSerializer_Encode function shall return NULL.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 28 | LogError("(Error code: %s)", ENUM_TO_STRING(DATA_SERIALIZER_RESULT, DATA_SERIALIZER_ERROR) ); |
| XinZhangMS | 0:f7f1f0d76dd6 | 29 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 30 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 31 | /* Codes_SRS_DATA_SERIALIZER_07_002: [DataSerializer_Encode shall return a valid BUFFER_HANDLE when the function executes successfully.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 32 | return pBuffer; |
| XinZhangMS | 0:f7f1f0d76dd6 | 33 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 34 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 35 | MULTITREE_HANDLE DataSerializer_Decode(BUFFER_HANDLE data, DATA_SERIALIZER_DECODE_FUNC decodeFunc) |
| XinZhangMS | 0:f7f1f0d76dd6 | 36 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 37 | MULTITREE_HANDLE multiTreeHandle; |
| XinZhangMS | 0:f7f1f0d76dd6 | 38 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 39 | /* Codes_SRS_DATA_SERIALIZER_07_007: [NULL shall be returned when an invalid parameter is supplied.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 40 | if (data == NULL || decodeFunc == NULL) |
| XinZhangMS | 0:f7f1f0d76dd6 | 41 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 42 | multiTreeHandle = NULL; |
| XinZhangMS | 0:f7f1f0d76dd6 | 43 | LogError("(Error code: %s)", ENUM_TO_STRING(DATA_SERIALIZER_RESULT, DATA_SERIALIZER_INVALID_ARG) ); |
| XinZhangMS | 0:f7f1f0d76dd6 | 44 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 45 | else |
| XinZhangMS | 0:f7f1f0d76dd6 | 46 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 47 | /* Codes_SRS_DATA_SERIALIZER_07_012: [DataSerializer_Decode function shall call into the given DATA_SERIALIZER_DECODE_FUNC callback with a valid BUFFER object and valid MULTITREE_HANDLE object.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 48 | multiTreeHandle = decodeFunc(data); |
| XinZhangMS | 0:f7f1f0d76dd6 | 49 | if (multiTreeHandle == NULL) |
| XinZhangMS | 0:f7f1f0d76dd6 | 50 | { |
| XinZhangMS | 0:f7f1f0d76dd6 | 51 | /* Codes_SRS_DATA_SERIALIZER_07_013: [Upon a DATA_SERIALIZER_DECODE_FUNC callback failure the DataSerializer_Encode function Shall return NULL.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 52 | LogError("(Error code: %s)", ENUM_TO_STRING(DATA_SERIALIZER_RESULT, DATA_SERIALIZER_ERROR) ); |
| XinZhangMS | 0:f7f1f0d76dd6 | 53 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 54 | } |
| XinZhangMS | 0:f7f1f0d76dd6 | 55 | |
| XinZhangMS | 0:f7f1f0d76dd6 | 56 | /* Codes_SRS_DATA_SERIALIZER_07_006: [DataSerializer_Decode shall return a valid MULTITREE_HANDLE when the function executes successfully.] */ |
| XinZhangMS | 0:f7f1f0d76dd6 | 57 | return multiTreeHandle; |
| XinZhangMS | 0:f7f1f0d76dd6 | 58 | } |