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

Commit ca28a76

Browse files
authored
Merge pull request #103 from DLTcollab/develop
Pre-release v0.3.0
2 parents 0ce6158 + 0e95a45 commit ca28a76

22 files changed

+662
-242
lines changed

WORKSPACE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ git_repository(
88

99
git_repository(
1010
name = "entangled",
11-
commit = "6490d90782b70cbca8d2602095e65032fbb69832",
11+
commit = "8d847ffcecd50f8f3760bfee07d7ed33ecc067bf",
1212
remote = "https://github.com/iotaledger/entangled.git",
1313
)
1414

accelerator/BUILD

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ cc_library(
1818
visibility = ["//visibility:public"],
1919
deps = [
2020
":common_core",
21+
":ta_errors",
2122
"//serializer",
22-
"@entangled//cclient:api",
23+
"@entangled//common/trinary:trit_tryte",
24+
"@entangled//common/trinary:tryte_ascii",
25+
"@entangled//mam/api",
2326
],
2427
)
2528

@@ -30,12 +33,13 @@ cc_library(
3033
visibility = ["//visibility:public"],
3134
deps = [
3235
":ta_config",
36+
":ta_errors",
3337
"//request",
3438
"//response",
3539
"//utils:cache",
3640
"//utils:pow",
3741
"@com_github_uthash//:uthash",
38-
"@entangled//cclient:api",
42+
"@entangled//cclient/api",
3943
"@entangled//cclient/types",
4044
"@entangled//common/model:bundle",
4145
"@entangled//utils:time",

accelerator/apis.c

Lines changed: 101 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,34 @@
11
#include "apis.h"
22

3-
int api_get_tips(const iota_client_service_t* const service,
4-
char** json_result) {
5-
int ret = 0;
3+
// TODO: Generate actual pre shared keys
4+
static mam_psk_t const psk = {
5+
.id = {1, 0, -1, -1, 0, -1, -1, 0, 0, 1, -1, 0, 1, 0, 0, 1, 1,
6+
1, -1, 1, 1, 0, 1, 1, 0, 0, -1, 1, -1, -1, -1, -1, -1, -1,
7+
-1, 1, -1, -1, 0, -1, -1, 1, 0, -1, -1, -1, 1, 1, 1, 0, 0,
8+
-1, 1, -1, -1, -1, 0, -1, 1, -1, -1, -1, 1, 1, -1, 1, 0, 0,
9+
1, 1, 1, -1, -1, 0, 0, -1, -1, 1, 0, -1, 1},
10+
.key = {-1, 1, -1, -1, 1, -1, -1, 0, 0, 0, -1, -1, 1, 1, 1, -1, -1,
11+
-1, 0, 0, 0, 0, -1, -1, 1, 1, 1, 0, -1, -1, -1, 0, 0, 0,
12+
-1, -1, 1, -1, 0, 0, 1, 0, 0, -1, 1, 1, 0, -1, 0, 0, 1,
13+
-1, 1, 0, 1, 0, 0, -1, 1, 1, -1, 1, 0, -1, 0, -1, 1, -1,
14+
-1, -1, 0, -1, -1, 0, -1, -1, 0, 0, -1, -1, 1, -1, 0, 0, -1,
15+
-1, -1, -1, 0, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, 0, 1,
16+
0, 1, -1, 0, 0, 1, 0, 1, 0, 0, 1, 0, -1, 0, 1, 1, 0,
17+
0, -1, -1, 1, 1, 0, 0, 1, -1, 1, 1, 1, 0, 1, 1, 1, 0,
18+
0, -1, -1, -1, -1, 1, 1, 1, 0, 0, -1, 0, 1, -1, 1, 1, 1,
19+
0, 0, 1, -1, -1, 0, -1, 1, -1, 1, 0, 0, 1, -1, 0, 1, -1,
20+
0, 0, 1, 1, 1, 1, 1, 0, 0, 1, -1, 1, -1, 1, 0, 1, 1,
21+
1, -1, 0, 0, -1, 1, 1, 0, -1, -1, 0, 0, -1, 1, 0, 1, -1,
22+
0, 0, -1, 1, -1, 1, 1, 1, -1, 0, 1, 1, 0, 0, -1, -1, -1,
23+
0, 0, 1, 0, 1, 0, -1, 1, -1, 0, 1, 0, -1, 1, 1, -1, -1,
24+
0, 0, -1, 0, -1}};
25+
26+
status_t api_get_tips(const iota_client_service_t* const service,
27+
char** json_result) {
28+
status_t ret = SC_OK;
629
ta_get_tips_res_t* res = ta_get_tips_res_new();
730
if (res == NULL) {
31+
ret = SC_TA_OOM;
832
goto done;
933
}
1034

@@ -20,11 +44,12 @@ int api_get_tips(const iota_client_service_t* const service,
2044
return ret;
2145
}
2246

23-
int api_get_tips_pair(const iota_client_service_t* const service,
24-
char** json_result) {
25-
int ret = 0;
47+
status_t api_get_tips_pair(const iota_client_service_t* const service,
48+
char** json_result) {
49+
status_t ret = SC_OK;
2650
ta_get_tips_res_t* res = ta_get_tips_res_new();
2751
if (res == NULL) {
52+
ret = SC_TA_OOM;
2853
goto done;
2954
}
3055

@@ -40,11 +65,12 @@ int api_get_tips_pair(const iota_client_service_t* const service,
4065
return ret;
4166
}
4267

43-
int api_generate_address(const iota_client_service_t* const service,
44-
char** json_result) {
45-
int ret = 0;
68+
status_t api_generate_address(const iota_client_service_t* const service,
69+
char** json_result) {
70+
status_t ret = SC_OK;
4671
ta_generate_address_res_t* res = ta_generate_address_res_new();
4772
if (res == NULL) {
73+
ret = SC_TA_OOM;
4874
goto done;
4975
}
5076

@@ -60,11 +86,12 @@ int api_generate_address(const iota_client_service_t* const service,
6086
return ret;
6187
}
6288

63-
int api_get_transaction_object(const iota_client_service_t* const service,
64-
const char* const obj, char** json_result) {
65-
int ret = 0;
89+
status_t api_get_transaction_object(const iota_client_service_t* const service,
90+
const char* const obj, char** json_result) {
91+
status_t ret = SC_OK;
6692
ta_get_transaction_object_res_t* res = ta_get_transaction_object_res_new();
6793
if (res == NULL) {
94+
ret = SC_TA_OOM;
6895
goto done;
6996
}
7097

@@ -80,11 +107,13 @@ int api_get_transaction_object(const iota_client_service_t* const service,
80107
return ret;
81108
}
82109

83-
int api_find_transactions_by_tag(const iota_client_service_t* const service,
84-
const char* const obj, char** json_result) {
85-
int ret = 0;
110+
status_t api_find_transactions_by_tag(
111+
const iota_client_service_t* const service, const char* const obj,
112+
char** json_result) {
113+
status_t ret = SC_OK;
86114
ta_find_transactions_res_t* res = ta_find_transactions_res_new();
87115
if (res == NULL) {
116+
ret = SC_TA_OOM;
88117
goto done;
89118
}
90119

@@ -100,12 +129,13 @@ int api_find_transactions_by_tag(const iota_client_service_t* const service,
100129
return ret;
101130
}
102131

103-
int api_find_transactions_obj_by_tag(const iota_client_service_t* const service,
104-
const char* const obj,
105-
char** json_result) {
106-
int ret = 0;
132+
status_t api_find_transactions_obj_by_tag(
133+
const iota_client_service_t* const service, const char* const obj,
134+
char** json_result) {
135+
status_t ret = SC_OK;
107136
ta_find_transactions_obj_res_t* res = ta_find_transactions_obj_res_new();
108137
if (res == NULL) {
138+
ret = SC_TA_OOM;
109139
goto done;
110140
}
111141

@@ -121,16 +151,65 @@ int api_find_transactions_obj_by_tag(const iota_client_service_t* const service,
121151
return ret;
122152
}
123153

124-
int api_send_transfer(const iota_client_service_t* const service,
125-
const char* const obj, char** json_result) {
126-
int ret = 0;
154+
status_t api_receive_mam_message(const iota_client_service_t* const service,
155+
const char* const obj, char** json_result) {
156+
status_t ret = SC_OK;
157+
mam_api_t mam;
158+
159+
tryte_t* payload_trytes = NULL;
160+
size_t payload_size = 0;
161+
bundle_transactions_t* bundle = NULL;
162+
bundle_transactions_new(&bundle);
163+
bool is_last_packet;
164+
165+
// Creating MAM API
166+
if (mam_api_init(&mam, (tryte_t*)SEED)) {
167+
ret = SC_MAM_OOM;
168+
goto done;
169+
}
170+
171+
// Get bundle which is find_transactions_by_bundle
172+
ret = ta_get_bundle(service, (tryte_t*)obj, bundle);
173+
if (ret) {
174+
goto done;
175+
}
176+
177+
// Read MAM message from bundle
178+
mam_psk_t_set_add(&mam.psks, &psk);
179+
if (mam_api_bundle_read(&mam, bundle, &payload_trytes, &payload_size,
180+
&is_last_packet) == RC_OK) {
181+
if (payload_trytes == NULL || payload_size == 0) {
182+
ret = SC_MAM_NULL;
183+
} else {
184+
char* payload = calloc(payload_size * 2 + 1, sizeof(char));
185+
186+
trytes_to_ascii(payload_trytes, payload_size, payload);
187+
*json_result = payload;
188+
189+
payload = NULL;
190+
free(payload_trytes);
191+
}
192+
} else {
193+
ret = SC_MAM_FAILED_RESPONSE;
194+
}
195+
196+
done:
197+
mam_api_destroy(&mam);
198+
bundle_transactions_free(&bundle);
199+
return ret;
200+
}
201+
202+
status_t api_send_transfer(const iota_client_service_t* const service,
203+
const char* const obj, char** json_result) {
204+
status_t ret = SC_OK;
127205
char hash_trytes[NUM_TRYTES_HASH + 1];
128206
ta_send_transfer_req_t* req = ta_send_transfer_req_new();
129207
ta_send_transfer_res_t* res = ta_send_transfer_res_new();
130208
ta_get_transaction_object_res_t* txn_obj_res =
131209
ta_get_transaction_object_res_new();
132210

133211
if (req == NULL || res == NULL || txn_obj_res == NULL) {
212+
ret = SC_TA_OOM;
134213
goto done;
135214
}
136215

accelerator/apis.h

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
#define ACCELERATOR_APIS_H_
33

44
#include "accelerator/common_core.h"
5+
#include "accelerator/errors.h"
56
#include "cclient/types/types.h"
7+
#include "common/trinary/trit_tryte.h"
8+
#include "common/trinary/tryte_ascii.h"
9+
#include "mam/api/api.h"
610
#include "serializer/serializer.h"
711

812
#ifdef __cplusplus
@@ -28,11 +32,11 @@ extern "C" {
2832
* @param[out] json_result Result containing an unused address in json format
2933
*
3034
* @return
31-
* - 0 on success
35+
* - SC_OK on success
3236
* - non-zero on error
3337
*/
34-
int api_generate_address(const iota_client_service_t* const service,
35-
char** json_result);
38+
status_t api_generate_address(const iota_client_service_t* const service,
39+
char** json_result);
3640

3741
/**
3842
* @brief Get trunk and branch transactions
@@ -44,11 +48,11 @@ int api_generate_address(const iota_client_service_t* const service,
4448
* @param[out] json_result Result containing a tips pair in json format
4549
*
4650
* @return
47-
* - 0 on success
51+
* - SC_OK on success
4852
* - non-zero on error
4953
*/
50-
int api_get_tips_pair(const iota_client_service_t* const service,
51-
char** json_result);
54+
status_t api_get_tips_pair(const iota_client_service_t* const service,
55+
char** json_result);
5256

5357
/**
5458
* @brief Get list of all tips from IRI node.
@@ -60,11 +64,27 @@ int api_get_tips_pair(const iota_client_service_t* const service,
6064
* @param[out] json_result Result containing list of all tips in json format
6165
*
6266
* @return
63-
* - 0 on success
67+
* - SC_OK on success
68+
* - non-zero on error
69+
*/
70+
status_t api_get_tips(const iota_client_service_t* const service,
71+
char** json_result);
72+
73+
/**
74+
* @brief Receive a MAM message.
75+
*
76+
* Receive a MAM message from given bundle hash.
77+
*
78+
* @param[in] service IRI node end point service
79+
* @param[out] obj bundle hash in trytes
80+
* @param[out] json_result Result containing an unused address in json format
81+
*
82+
* @return
83+
* - SC_OK on success
6484
* - non-zero on error
6585
*/
66-
int api_get_tips(const iota_client_service_t* const service,
67-
char** json_result);
86+
status_t api_receive_mam_message(const iota_client_service_t* const service,
87+
const char* const obj, char** json_result);
6888

6989
/**
7090
* @brief Send transfer to tangle.
@@ -78,11 +98,11 @@ int api_get_tips(const iota_client_service_t* const service,
7898
* @param[out] json_result Result containing transaction objects in json format
7999
*
80100
* @return
81-
* - 0 on success
101+
* - SC_OK on success
82102
* - non-zero on error
83103
*/
84-
int api_send_transfer(const iota_client_service_t* const service,
85-
const char* const obj, char** json_result);
104+
status_t api_send_transfer(const iota_client_service_t* const service,
105+
const char* const obj, char** json_result);
86106

87107
/**
88108
* @brief Return transaction object with given transaction hash.
@@ -95,11 +115,11 @@ int api_send_transfer(const iota_client_service_t* const service,
95115
* @param[out] json_result Result containing transaction objects in json format
96116
*
97117
* @return
98-
* - 0 on success
118+
* - SC_OK on success
99119
* - non-zero on error
100120
*/
101-
int api_get_transaction_object(const iota_client_service_t* const service,
102-
const char* const obj, char** json_result);
121+
status_t api_get_transaction_object(const iota_client_service_t* const service,
122+
const char* const obj, char** json_result);
103123

104124
/**
105125
* @brief Return list of transaction hash with given tag hash.
@@ -113,11 +133,12 @@ int api_get_transaction_object(const iota_client_service_t* const service,
113133
* format
114134
*
115135
* @return
116-
* - 0 on success
136+
* - SC_OK on success
117137
* - non-zero on error
118138
*/
119-
int api_find_transactions_by_tag(const iota_client_service_t* const service,
120-
const char* const obj, char** json_result);
139+
status_t api_find_transactions_by_tag(
140+
const iota_client_service_t* const service, const char* const obj,
141+
char** json_result);
121142

122143
/**
123144
* @brief Return list of transaction object with given tag hash.
@@ -131,11 +152,12 @@ int api_find_transactions_by_tag(const iota_client_service_t* const service,
131152
* format
132153
*
133154
* @return
134-
* - 0 on success
155+
* - SC_OK on success
135156
* - non-zero on error
136157
*/
137-
int api_find_transactions_obj_by_tag(const iota_client_service_t* const service,
138-
const char* const obj, char** json_result);
158+
status_t api_find_transactions_obj_by_tag(
159+
const iota_client_service_t* const service, const char* const obj,
160+
char** json_result);
139161

140162
#ifdef __cplusplus
141163
}

0 commit comments

Comments
 (0)