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

Commit 9ddb155

Browse files
committed
feat(mam): Implement send_mam_req
send_mam_req obj can simplify the arg of api_mam_send_message().
1 parent f576f6a commit 9ddb155

File tree

4 files changed

+69
-0
lines changed

4 files changed

+69
-0
lines changed

request/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ cc_library(
1010
visibility = ["//visibility:public"],
1111
deps = [
1212
"@entangled//cclient/types",
13+
"//accelerator:ta_errors",
1314
],
1415
)

request/request.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef REQUEST_REQUEST_H_
22
#define REQUEST_REQUEST_H_
33

4+
#include "request/ta_send_mam_req.h"
45
#include "request/ta_send_transfer.h"
56

67
/**

request/ta_send_mam_req.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include "ta_send_mam_req.h"
2+
3+
send_mam_req_t* send_mam_req_new() {
4+
send_mam_req_t* req = (send_mam_req_t*)malloc(sizeof(send_mam_req_t));
5+
if (req) {
6+
req->payload_trytes = NULL;
7+
}
8+
9+
return req;
10+
}
11+
12+
status_t send_mam_req_set_payload(send_mam_req_t* req, const tryte_t* payload) {
13+
status_t ret = SC_OK;
14+
size_t payload_size = sizeof(payload) / sizeof(tryte_t);
15+
16+
if ((!payload) || (payload_size == 0) || ((payload_size * 3) > SIZE_MAX)) {
17+
return SC_MAM_OOM;
18+
}
19+
20+
req->payload_trytes = (tryte_t*)malloc(payload_size * sizeof(tryte_t));
21+
if (!req->payload_trytes) {
22+
return SC_MAM_OOM;
23+
}
24+
memcpy(req->payload_trytes, payload, payload_size);
25+
req->payload_trytes_size = payload_size;
26+
27+
return ret;
28+
}
29+
30+
void send_mam_req_free(send_mam_req_t** req) {
31+
if (!req || !(*req)) {
32+
return;
33+
}
34+
if ((*req)->payload_trytes) {
35+
free((*req)->payload_trytes);
36+
(*req)->payload_trytes = NULL;
37+
}
38+
free(*req);
39+
*req = NULL;
40+
}

request/ta_send_mam_req.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#ifndef REQUEST_TA_SEND_MAM_REQ_H_
2+
#define REQUEST_TA_SEND_MAM_REQ_H_
3+
4+
#include <stdint.h>
5+
#include <stdlib.h>
6+
#include <string.h>
7+
#include "accelerator/errors.h"
8+
#include "cclient/types/types.h"
9+
10+
#ifdef __cplusplus
11+
extern "C" {
12+
#endif
13+
14+
typedef struct send_mam_req_s {
15+
tryte_t* payload_trytes;
16+
size_t payload_trytes_size;
17+
} send_mam_req_t;
18+
19+
send_mam_req_t* send_mam_req_new();
20+
status_t send_mam_req_set_payload(send_mam_req_t* req, const tryte_t* payload);
21+
void send_mam_req_free(send_mam_req_t** req);
22+
23+
#ifdef __cplusplus
24+
}
25+
#endif
26+
27+
#endif // REQUEST_TA_SEND_MAM_REQ_H_

0 commit comments

Comments
 (0)