Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit 18dabe8

Browse files
authored
Merge pull request #130 from wusyong/receive_mam_serialize
feat(serializer): Add receive_mam_message serialize
2 parents e97eb27 + f18a223 commit 18dabe8

File tree

3 files changed

+42
-3
lines changed

3 files changed

+42
-3
lines changed

accelerator/apis.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ status_t api_receive_mam_message(const iota_client_service_t* const service,
160160
status_t ret = SC_OK;
161161
tryte_t* payload_trytes = NULL;
162162
tryte_t* none_chid_trytes = NULL;
163+
char* payload = NULL;
163164
size_t payload_size = 0;
164165
bundle_transactions_t* bundle = NULL;
165166
bundle_transactions_new(&bundle);
@@ -191,15 +192,20 @@ status_t api_receive_mam_message(const iota_client_service_t* const service,
191192
ret = SC_MAM_NO_PAYLOAD;
192193
goto done;
193194
} else {
194-
*(json_result) = calloc(payload_size * 2 + 1, sizeof(char));
195-
trytes_to_ascii(payload_trytes, payload_size, *(json_result));
195+
payload = calloc(payload_size * 2 + 1, sizeof(char));
196+
if (payload == NULL) {
197+
ret = SC_TA_NULL;
198+
goto done;
199+
}
200+
trytes_to_ascii(payload_trytes, payload_size, payload);
196201
}
197202
} else {
198203
ret = SC_MAM_NOT_FOUND;
199204
goto done;
200205
}
201206

202-
// Cleanup
207+
ret = receive_mam_message_serialize(json_result, &payload);
208+
203209
done:
204210
// Destroying MAM API
205211
if (ret != SC_MAM_FAILED_INIT) {
@@ -209,6 +215,7 @@ status_t api_receive_mam_message(const iota_client_service_t* const service,
209215
}
210216
free(none_chid_trytes);
211217
free(payload_trytes);
218+
free(payload);
212219
bundle_transactions_free(&bundle);
213220

214221
return ret;

serializer/serializer.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,3 +386,24 @@ status_t ta_find_transactions_obj_res_serialize(
386386
cJSON_Delete(json_root);
387387
return ret;
388388
}
389+
390+
status_t receive_mam_message_serialize(char** obj, const char** res) {
391+
status_t ret = SC_OK;
392+
cJSON* json_root = cJSON_CreateObject();
393+
if (json_root == NULL) {
394+
ret = SC_SERIALIZER_JSON_CREATE;
395+
goto done;
396+
}
397+
398+
cJSON_AddStringToObject(json_root, "message", *res);
399+
400+
*obj = cJSON_PrintUnformatted(json_root);
401+
if (*obj == NULL) {
402+
ret = SC_SERIALIZER_JSON_PARSE;
403+
goto done;
404+
}
405+
406+
done:
407+
cJSON_Delete(json_root);
408+
return ret;
409+
}

serializer/serializer.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,17 @@ status_t ta_find_transactions_res_serialize(
111111
status_t ta_find_transactions_obj_res_serialize(
112112
char** obj, const ta_find_transactions_obj_res_t* const res);
113113

114+
/**
115+
* @brief Serialize mam message
116+
*
117+
* @param[out] obj message formed in JSON
118+
* @param[in] res Response of payload message
119+
*
120+
* @return
121+
* - SC_OK on success
122+
* - non-zero on error
123+
*/
124+
status_t receive_mam_message_serialize(char** obj, const char** res);
114125
#ifdef __cplusplus
115126
}
116127
#endif

0 commit comments

Comments
 (0)