Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: remove atclient_atsign, atclient_atstr, refactor a bunch of function signatures #337

Merged
merged 194 commits into from
Jul 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
60d117b
fix: atkey compound namespacing
JeremyTubongbanua Jul 8, 2024
b0b3159
test: test_atclient_atkey_from_string
JeremyTubongbanua Jul 8, 2024
02ef073
feat: /scan in repl
JeremyTubongbanua Jul 8, 2024
1862559
chore: atclient_get_atkeys debugging logging
JeremyTubongbanua Jul 8, 2024
f899338
feat: repl /deleteall command
JeremyTubongbanua Jul 9, 2024
75ee67c
refactor: atclient_atkey_metadata_to_protocol_str
JeremyTubongbanua Jul 11, 2024
451bcde
wip: aes_ctr expected strlen/size
JeremyTubongbanua Jul 11, 2024
4d5059d
fix: metadata
JeremyTubongbanua Jul 11, 2024
438015a
chore: optimize atclient_put
JeremyTubongbanua Jul 11, 2024
5afa32f
fix: test_atkey_metadata
JeremyTubongbanua Jul 11, 2024
15ae36f
docs: atclient_put
JeremyTubongbanua Jul 11, 2024
d0bb66b
feat: atclient_put args check function
JeremyTubongbanua Jul 11, 2024
f974d8c
refactor: atclient_atkey_to_string
JeremyTubongbanua Jul 12, 2024
b4c2cc9
fix: examples that use atclient_atkey_to_string
JeremyTubongbanua Jul 12, 2024
ae7675b
fix: events errors
JeremyTubongbanua Jul 12, 2024
561f19e
fix: functional test error
JeremyTubongbanua Jul 12, 2024
af56d3e
fix: repl errors
JeremyTubongbanua Jul 12, 2024
bb65a7a
Merge branch 'trunk' into jt/refactors
JeremyTubongbanua Jul 12, 2024
b9aa92d
chore: remove logging
JeremyTubongbanua Jul 12, 2024
5d5f911
chore:
JeremyTubongbanua Jul 12, 2024
234bbd6
fix:
JeremyTubongbanua Jul 12, 2024
5106432
fix:
JeremyTubongbanua Jul 12, 2024
945b3f5
feat: optimize and clean atclient_put
JeremyTubongbanua Jul 12, 2024
9d40cba
refactor: atclient_get_sharedkey
JeremyTubongbanua Jul 12, 2024
7303537
fix: atclient_put
JeremyTubongbanua Jul 12, 2024
126efad
docs: atclient_put
JeremyTubongbanua Jul 12, 2024
23fb412
chore: delete atbytes.c and atstr.c
JeremyTubongbanua Jul 12, 2024
6e6c1fc
chore: delete atbytes.h and atstr.h
JeremyTubongbanua Jul 12, 2024
d7a5f4b
chore: remove atstr from get_sharedkey example
JeremyTubongbanua Jul 12, 2024
659f0a7
chore: remove unused function in connection.c
JeremyTubongbanua Jul 12, 2024
5287e4a
revert: "docs: atclient_put"
JeremyTubongbanua Jul 12, 2024
96bc4ef
revert: "revert: "docs: atclient_put""
JeremyTubongbanua Jul 12, 2024
ea15ebb
revert: "chore: delete atbytes.h and atstr.h"
JeremyTubongbanua Jul 12, 2024
2d5a84d
revert: "chore: delete atbytes.c and atstr.c"
JeremyTubongbanua Jul 12, 2024
5fffb47
chore: remove unused atkeysfile function
JeremyTubongbanua Jul 12, 2024
2582759
refactor: metadata.h string to char *
JeremyTubongbanua Jul 12, 2024
5600a47
refactor: use char * and remove atstr in atclient_delete.c
JeremyTubongbanua Jul 12, 2024
2890a0f
revert: "refactor: metadata.h string to char *"
JeremyTubongbanua Jul 12, 2024
69412b7
fix: atclient_delete
JeremyTubongbanua Jul 12, 2024
8c66fa4
chore: clean up atclient_delete.c
JeremyTubongbanua Jul 12, 2024
8f48b80
feat: handle malloc == null
JeremyTubongbanua Jul 15, 2024
f80412a
fix: unit test failure
JeremyTubongbanua Jul 15, 2024
27135e3
feat: cleaned up atclient_get_publickey.c
JeremyTubongbanua Jul 17, 2024
2571e6a
chore: cleaned up atclient_get_atkeys.c
JeremyTubongbanua Jul 17, 2024
63df4bd
feat: optimize and clean up atclient_pkam_authenticate
JeremyTubongbanua Jul 17, 2024
8aea585
fix: failing test
JeremyTubongbanua Jul 17, 2024
b673f55
feat: remove strlen from atclient_atsign_without/with_at_symbol
JeremyTubongbanua Jul 17, 2024
0d6d739
chore: remove `symbol` from function name
JeremyTubongbanua Jul 17, 2024
efe3ee2
wip:
JeremyTubongbanua Jul 17, 2024
eafd8e1
wip:
JeremyTubongbanua Jul 18, 2024
9c99be3
fix: failing tests in test_atkey_create.c
JeremyTubongbanua Jul 18, 2024
c1e3bd2
fix: test_atkey_from_string failing tests
JeremyTubongbanua Jul 18, 2024
75e0101
feat: update void returns to int in metadata.h/.c
JeremyTubongbanua Jul 18, 2024
b3f422a
fix: failing tests in test_atkey_to_string.c
JeremyTubongbanua Jul 18, 2024
705c64e
fix: include stdint.h
JeremyTubongbanua Jul 18, 2024
705d553
fix:
JeremyTubongbanua Jul 18, 2024
450a1a8
chore: clean up atclient_get_publickey
JeremyTubongbanua Jul 19, 2024
b06f004
chore: clean up atclient_get_selfkey.c
JeremyTubongbanua Jul 19, 2024
ef09dc3
chore: clean up atchops/rsa.c
JeremyTubongbanua Jul 19, 2024
445e3ef
chore: format base64.h
JeremyTubongbanua Jul 19, 2024
53ada23
docs: iv.h
JeremyTubongbanua Jul 19, 2024
7529c85
feat: made rsakey.c/.h more memory efficient
JeremyTubongbanua Jul 19, 2024
c6def37
fix: rsa public key unit test failure
JeremyTubongbanua Jul 19, 2024
0c3ce58
fix: atkey.c label error
JeremyTubongbanua Jul 19, 2024
ab92ad3
chore: clean up aesctr.h/.c
JeremyTubongbanua Jul 19, 2024
ba182a6
chore: make iv.h/.c more minimal
JeremyTubongbanua Jul 19, 2024
9b472a5
chore: clean up test_iv.c
JeremyTubongbanua Jul 19, 2024
a230442
fix: functional tests helpers.c
JeremyTubongbanua Jul 19, 2024
b146542
fix: at_talk compilation errors
JeremyTubongbanua Jul 19, 2024
7545fe2
fix: crud examples compilation errors
JeremyTubongbanua Jul 19, 2024
beddd37
fix:
JeremyTubongbanua Jul 19, 2024
6d70d67
fix: functional tests compilation errors
JeremyTubongbanua Jul 19, 2024
78b7661
chore: clean up test_stringutils.c
JeremyTubongbanua Jul 19, 2024
a6eb640
fix: atclient_get_selfkey_valid_arguments
JeremyTubongbanua Jul 19, 2024
a3189ee
feat: remove atclient_atstr from atclient_atkey_metadata
JeremyTubongbanua Jul 20, 2024
61b332d
feat: more atclient_atkey_metadata refactors
JeremyTubongbanua Jul 20, 2024
86a919a
chore: made atclient_atkey_metadata_from_jsonstr return `int` (origin…
JeremyTubongbanua Jul 20, 2024
cf0f38f
fix: crud example
JeremyTubongbanua Jul 20, 2024
ee1d4b7
chore: remove isHidden
JeremyTubongbanua Jul 20, 2024
a02eaf6
feat: atkeys.h/.c initializedfields
JeremyTubongbanua Jul 20, 2024
8b6cafe
feat: remove atclient_atstr from atkeysfile.h/.c
JeremyTubongbanua Jul 20, 2024
4b5c9f0
fix:
JeremyTubongbanua Jul 20, 2024
73d1a0d
docs: log messages
JeremyTubongbanua Jul 20, 2024
b22389f
chore: delete unused atstr.h/.c and atbytes.h/.c
JeremyTubongbanua Jul 20, 2024
a272abe
fix: remove atbytes.c and atstr.c from CMakeLists.txt
JeremyTubongbanua Jul 20, 2024
067bc36
fix: atkey.c incorrect bool polarity
JeremyTubongbanua Jul 20, 2024
0a56a23
fix: remove atstr.h includes
JeremyTubongbanua Jul 20, 2024
f9c1470
fix:
JeremyTubongbanua Jul 20, 2024
3ecc02c
chore: format monitor.h
JeremyTubongbanua Jul 20, 2024
4c91edb
feat: atkeys.c/.h public setters
JeremyTubongbanua Jul 20, 2024
a4760e7
feat: more refactors and public facing bool checker functions
JeremyTubongbanua Jul 20, 2024
293a8f9
chore: clean up test_atkey_from_string.c
JeremyTubongbanua Jul 22, 2024
8a3e63c
feat: remove atclient_atsign usages
JeremyTubongbanua Jul 22, 2024
afd5e66
fix:
JeremyTubongbanua Jul 22, 2024
d759711
fix:
JeremyTubongbanua Jul 22, 2024
9c3ae32
chore: clean up atclient_get_sharedkey
JeremyTubongbanua Jul 22, 2024
5d8898c
wip: cleaning up encryption_key_helpers
JeremyTubongbanua Jul 22, 2024
4a721fd
feat: cleaned up encryption_key_helpers
JeremyTubongbanua Jul 22, 2024
5de629a
fix:
JeremyTubongbanua Jul 22, 2024
619b263
fix:
JeremyTubongbanua Jul 22, 2024
a432d42
fix:
JeremyTubongbanua Jul 22, 2024
2767c35
fix:
JeremyTubongbanua Jul 22, 2024
49000a2
fix: crud example
JeremyTubongbanua Jul 22, 2024
df9466b
fix: repl example
JeremyTubongbanua Jul 22, 2024
57b63e4
feat: atclient_delete now returns commit_id
JeremyTubongbanua Jul 22, 2024
7de98c9
fix: typo
JeremyTubongbanua Jul 22, 2024
8737a2f
fix: typo
JeremyTubongbanua Jul 22, 2024
9d9fe42
refactor: metadata symbolic constants
JeremyTubongbanua Jul 22, 2024
13ebf60
refactor: header symbolic constants
JeremyTubongbanua Jul 22, 2024
20e0ea3
refactor: extract atnotification to its own files and rename monitor …
JeremyTubongbanua Jul 23, 2024
43e4f6b
feat: atnotification.h/.c and notify_params.h/.c
JeremyTubongbanua Jul 23, 2024
8300d3c
fix: examples
JeremyTubongbanua Jul 23, 2024
43fe45f
fix:
JeremyTubongbanua Jul 23, 2024
95aaf7e
chore: snake case
JeremyTubongbanua Jul 23, 2024
c414e46
fix: syntax errors
JeremyTubongbanua Jul 23, 2024
197e6c3
fix:
JeremyTubongbanua Jul 23, 2024
7c7e237
fix:
JeremyTubongbanua Jul 23, 2024
36ffa15
fix:
JeremyTubongbanua Jul 23, 2024
2a267b9
fix:
JeremyTubongbanua Jul 23, 2024
206b83f
fix:
JeremyTubongbanua Jul 23, 2024
2c0fde7
feat: more error handling in aesctr
JeremyTubongbanua Jul 23, 2024
524785d
fix:
JeremyTubongbanua Jul 23, 2024
4854f97
refactor: atclient_stringutils_long_strlen
JeremyTubongbanua Jul 23, 2024
8871e1a
refactor: set shared_encryption_key
JeremyTubongbanua Jul 23, 2024
faf2e98
chore: atchops refactors
JeremyTubongbanua Jul 24, 2024
14bbd89
fix:
JeremyTubongbanua Jul 24, 2024
102cb88
chore: delete atsign.c/.h
JeremyTubongbanua Jul 24, 2024
d94fe65
feat: request_options.c/.h
JeremyTubongbanua Jul 26, 2024
42d3fc7
chore: remove sys/time.h from notify.c
JeremyTubongbanua Jul 26, 2024
a4d9bc7
feat: start on atclient_connection_read/write
JeremyTubongbanua Jul 26, 2024
e94e973
feat: update atclient_delete
JeremyTubongbanua Jul 26, 2024
3db3a27
feat: make crud operations camel case and separate atclient_put into 3
JeremyTubongbanua Jul 26, 2024
01514fd
fix: failing tests
JeremyTubongbanua Jul 26, 2024
da9fef3
fix: updated CMakeLists.txt
JeremyTubongbanua Jul 26, 2024
e62338f
fix:
JeremyTubongbanua Jul 26, 2024
50b2e32
fix: examples
JeremyTubongbanua Jul 26, 2024
b021884
fix: self key
JeremyTubongbanua Jul 26, 2024
82a402d
fix: warnings
JeremyTubongbanua Jul 26, 2024
6a4be25
fix:
JeremyTubongbanua Jul 26, 2024
b9b287c
fix:
JeremyTubongbanua Jul 26, 2024
398dbb8
fix:
JeremyTubongbanua Jul 26, 2024
7cf6b0d
fix:
JeremyTubongbanua Jul 26, 2024
486ac02
fix:
JeremyTubongbanua Jul 26, 2024
298e05a
fix:
JeremyTubongbanua Jul 26, 2024
0d515d3
feat: free things
JeremyTubongbanua Jul 26, 2024
328c95e
feat: free more stuff
JeremyTubongbanua Jul 26, 2024
7f37827
refactor: public_key
JeremyTubongbanua Jul 26, 2024
7247775
test: debug CI
JeremyTubongbanua Jul 26, 2024
f0d13dc
ci:
JeremyTubongbanua Jul 26, 2024
2f17827
ci:
JeremyTubongbanua Jul 26, 2024
9d45b39
ci:
JeremyTubongbanua Jul 26, 2024
2c875b1
chore:
JeremyTubongbanua Jul 26, 2024
00763c2
fix:
JeremyTubongbanua Jul 26, 2024
0b23db5
fix:
JeremyTubongbanua Jul 26, 2024
31fdd16
feat: function signature atclient_get_atkeys
JeremyTubongbanua Jul 26, 2024
d412e9d
ci: remove debug temp
JeremyTubongbanua Jul 26, 2024
7ecc921
fix: repl example
JeremyTubongbanua Jul 26, 2024
c64e2a6
refactor: atclient_get_shared_key
JeremyTubongbanua Jul 26, 2024
5c952f4
refactor:
JeremyTubongbanua Jul 26, 2024
d7deb9c
feat: atclient_get_public_key new function signature
JeremyTubongbanua Jul 26, 2024
03a716c
fix:
JeremyTubongbanua Jul 26, 2024
d4cfffc
fix:
JeremyTubongbanua Jul 26, 2024
aecd3b7
fix:
JeremyTubongbanua Jul 26, 2024
e01158b
fix:
JeremyTubongbanua Jul 26, 2024
d6f9c24
feat: atclient_get_self_key new function signature
JeremyTubongbanua Jul 27, 2024
536954e
fix: repl example
JeremyTubongbanua Jul 27, 2024
e690cb8
fix: test
JeremyTubongbanua Jul 27, 2024
7fdf730
fix: crud example
JeremyTubongbanua Jul 27, 2024
261f9c8
fix:
JeremyTubongbanua Jul 27, 2024
d082fc2
feat: connection_hooks.h/.c
JeremyTubongbanua Jul 29, 2024
efe8741
fix: atclient_connection_free
JeremyTubongbanua Jul 29, 2024
c1ec3ac
fix:
JeremyTubongbanua Jul 29, 2024
07ca172
fix:
JeremyTubongbanua Jul 29, 2024
0328b73
feat: connection_hooks example
JeremyTubongbanua Jul 29, 2024
3b34ce3
fix: sample_cmake_project CI
JeremyTubongbanua Jul 29, 2024
d65c1ca
fix:
JeremyTubongbanua Jul 30, 2024
e6d2ab7
fix:
JeremyTubongbanua Jul 30, 2024
3d5643b
feat: remove readonly_src
JeremyTubongbanua Jul 30, 2024
021db4a
fix:
JeremyTubongbanua Jul 30, 2024
1c01b9d
feat: atchops/mbedtls.h, atclient/mbedtls.h, atclient/cjson.h
JeremyTubongbanua Jul 30, 2024
dabf4ee
fix:
JeremyTubongbanua Jul 30, 2024
7307b33
refactor: atclient_monitor_response_init/free, remove hooks from atcl…
JeremyTubongbanua Jul 30, 2024
56503c7
fix: examples
JeremyTubongbanua Jul 30, 2024
302870a
chore:
JeremyTubongbanua Jul 30, 2024
91d4a6e
docs: base64.h
JeremyTubongbanua Jul 30, 2024
0e7ee5a
chore: remove generic atclient_put
JeremyTubongbanua Jul 30, 2024
7096c09
feat: more request options
JeremyTubongbanua Jul 30, 2024
531de8c
chore: delete atclient_put.c
JeremyTubongbanua Jul 30, 2024
3ac6b22
chore: add atclient_monitor_read hooks back
JeremyTubongbanua Jul 30, 2024
ad9c9ee
fix: request_options stuff
JeremyTubongbanua Jul 30, 2024
e4a4731
chore: move constants
JeremyTubongbanua Jul 30, 2024
0d3ffe4
chore: remove regexlen from atclient_monitor_start
JeremyTubongbanua Jul 30, 2024
55efad4
fix: examples
JeremyTubongbanua Jul 30, 2024
5da81ff
fix:
JeremyTubongbanua Jul 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build_source_tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ jobs:
- name: Run sample_cmake_project executable
working-directory: examples/desktop/sample_cmake_project
run: |
./build/exec
./build/main

2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
- name: Run sample_cmake_project executable
working-directory: examples/desktop/sample_cmake_project
run: |
./build/exec
./build/main

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
Expand Down
44 changes: 29 additions & 15 deletions examples/desktop/at_talk/src/main.c
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#include <atchops/aes.h>
#include <atchops/aesctr.h>
#include <atchops/aes_ctr.h>
#include <atchops/base64.h>
#include <atchops/iv.h>
#include <atclient/atclient.h>
#include <atclient/atclient_utils.h>
#include <atclient/atkeysfile.h>
#include <atclient/atsign.h>
#include <atclient/constants.h>
#include <atclient/encryption_key_helpers.h>
#include <atclient/monitor.h>
Expand Down Expand Up @@ -152,14 +151,29 @@ int main(int argc, char *argv[]) {
atclient_atkey atkey;
atclient_atkey_init(&atkey);

if ((ret = atclient_atkey_create_sharedkey(&atkey, ATKEY_NAME, strlen(ATKEY_NAME), from_atsign, strlen(from_atsign),
to_atsign, strlen(to_atsign), ATKEY_NAMESPACE,
strlen(ATKEY_NAMESPACE))) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_atkey_create_sharedkey: %d\n", ret);
if ((ret = atclient_atkey_create_shared_key(&atkey, ATKEY_NAME, from_atsign, to_atsign, ATKEY_NAMESPACE)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_atkey_create_shared_key: %d\n", ret);
}

atclient_notify_params_create(&params, ATCLIENT_NOTIFY_OPERATION_UPDATE, &atkey, line, true);
params.notification_expiry = 5000;
if((ret = atclient_notify_params_set_operation(&params, ATCLIENT_NOTIFY_OPERATION_UPDATE)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_notify_params_set_operation: %d\n", ret);
}

if((ret = atclient_notify_params_set_atkey(&params, &atkey)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_notify_params_set_atkey: %d\n", ret);
}

if((ret = atclient_notify_params_set_value(&params, line)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_notify_params_set_value: %d\n", ret);
}

if((ret = atclient_notify_params_set_should_encrypt(&params, true)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_notify_params_set_should_encrypt: %d\n", ret);
}

if((ret = atclient_notify_params_set_notification_expiry(&params, 5000)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_notify_params_set_notification_expiry: %d\n", ret);
}

pthread_mutex_lock(&client_mutex);
if ((ret = atclient_notify(&atclient1, &params, NULL)) != 0) {
Expand Down Expand Up @@ -236,7 +250,7 @@ static void *monitor_handler(void *xargs) {
goto exit;
}
atclient_monitor_set_read_timeout(monitor, READ_TIMEOUT); // blocking read takes 1 second to timeout
if ((ret = atclient_monitor_start(monitor, MONITOR_REGEX, strlen(MONITOR_REGEX))) != 0) {
if ((ret = atclient_monitor_start(monitor, MONITOR_REGEX)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to start monitor: %d\n", ret);
goto exit;
}
Expand All @@ -245,8 +259,8 @@ static void *monitor_handler(void *xargs) {
int tries = 1;

while (true) {
atclient_monitor_message message;
atclient_monitor_message_init(&message);
atclient_monitor_response message;
atclient_monitor_response_init(&message);

pthread_mutex_lock(&monitor_mutex);
pthread_mutex_lock(&client_mutex);
Expand All @@ -260,9 +274,9 @@ static void *monitor_handler(void *xargs) {
// We received a stats notification. Ignore it.
break;
}
if (atclient_atnotification_decryptedvalue_is_initialized(&(message.notification))) {
if (atclient_atnotification_is_decrypted_value_initialized(&(message.notification))) {
const atclient_atnotification *notification = &(message.notification);
printf("\n%s%s%s: %s\n", HGRN, notification->from, reset, notification->decryptedvalue);
printf("\n%s%s%s: %s\n", HGRN, notification->from, reset, notification->decrypted_value);
printf("%s%s%s: ", HBLU, from_atsign, reset);
fflush(stdout);
}
Expand Down Expand Up @@ -320,7 +334,7 @@ static void *monitor_handler(void *xargs) {
}
}

atclient_monitor_message_free(&message);
atclient_monitor_response_free(&message);
usleep(100);
}
goto exit;
Expand Down Expand Up @@ -358,7 +372,7 @@ static int reconnect_clients(atclient *monitor, atclient *ctx, const char *atser
* 3. Start monitor
*/
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "Restarting monitor...\n");
if ((ret = atclient_monitor_start(monitor, MONITOR_REGEX, strlen(MONITOR_REGEX))) != 0) {
if ((ret = atclient_monitor_start(monitor, MONITOR_REGEX)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to start monitor: %d\n", ret);
return ret;
}
Expand Down
2 changes: 2 additions & 0 deletions examples/desktop/connection_hooks/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/*build*/
/*bin*/
10 changes: 10 additions & 0 deletions examples/desktop/connection_hooks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.24)

project(temp)

find_package(atsdk REQUIRED)

add_executable(main ${CMAKE_CURRENT_LIST_DIR}/main.c)
target_link_libraries(main atsdk::atclient)

install(TARGETS main DESTINATION ${CMAKE_CURRENT_LIST_DIR}/bin)
186 changes: 186 additions & 0 deletions examples/desktop/connection_hooks/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
#include <atclient/connection.h>
#include <atclient/connection_hooks.h>
#include <atlogger/atlogger.h>
#include <string.h>
#include <stdlib.h>

#define TAG "main"

#define HOST "3b419d7a-2fee-5080-9289-f0e1853abb47.swarm0002.atsign.zone"
#define PORT 5770

void *pre_read_hook(atclient_connection_hook_params *params) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "pre_read_hook was called\n");
// log params
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src (%p): \"%s\"\n", params->recv, (char *)params->src);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src_len: %d\n", params->src_len);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv (%p): %s\n", params->recv, (char *)params->recv);
if (params->recv_len != NULL) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: %d\n", *params->recv_len);
} else {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: NULL\n");
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_size: %d\n", params->recv_size);
return NULL;
}

void *post_read_hook(atclient_connection_hook_params *params) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "post_read_hook was called\n");
// log params
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src (%p): \"%s\"\n", params->recv, (char *)params->src);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src_len: %d\n", params->src_len);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv (%p): %s\n", params->recv, (char *)params->recv);
if (params->recv_len != NULL) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: %d\n", *params->recv_len);
} else {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: NULL\n");
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_size: %d\n", params->recv_size);

return NULL;
}

void *pre_write_hook(atclient_connection_hook_params *params) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "pre_write_hook was called\n");
// log params
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src (%p): \"%s\"\n", params->recv, (char *)params->src);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src_len: %d\n", params->src_len);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv (%p): %s\n", params->recv, (char *)params->recv);
if (params->recv_len != NULL) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: %d\n", *params->recv_len);
} else {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: NULL\n");
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_size: %d\n", params->recv_size);
return NULL;
}

void *post_write_hook(atclient_connection_hook_params *params) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "post_write_hook was called\n");
// log params
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src (%p): \"%s\"\n", params->recv, (char *)params->src);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "src_len: %d\n", params->src_len);
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv (%p): %s\n", params->recv, (char *)params->recv);
if (params->recv_len != NULL) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: %d\n", *params->recv_len);
} else {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_len: NULL\n");
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_DEBUG, "recv_size: %d\n", params->recv_size);
return NULL;
}

int main(int argc, char *argv[]) {
int ret = 1;

atlogger_set_logging_level(ATLOGGER_LOGGING_LEVEL_DEBUG);

atclient_connection conn;
atclient_connection_init(&conn, ATCLIENT_CONNECTION_TYPE_ATSERVER);

const unsigned char *src = (const unsigned char *) "from:12alpaca\r\n";
const size_t src_len = strlen((char *) src);
unsigned char *recv = NULL;
size_t recv_len = 0;

if ((ret = atclient_connection_hooks_enable(&conn)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to enable hooks\n");
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Enabled hooks\n");

if ((ret = atclient_connection_hooks_set(&conn, ATCLIENT_CONNECTION_HOOK_TYPE_PRE_READ, pre_read_hook)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to set pre_read hook\n");
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Set pre_read_hook successfully\n");

if ((ret = atclient_connection_hooks_set(&conn, ATCLIENT_CONNECTION_HOOK_TYPE_POST_READ, post_read_hook)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to set post_read hook\n");
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Set post_read_hook successfully\n");

if ((ret = atclient_connection_hooks_set(&conn, ATCLIENT_CONNECTION_HOOK_TYPE_PRE_WRITE, pre_write_hook)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to set pre_write hook\n");
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Set pre_write_hook successfully\n");

if ((ret = atclient_connection_hooks_set(&conn, ATCLIENT_CONNECTION_HOOK_TYPE_POST_WRITE, post_write_hook)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to set post_write hook\n");
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Set post_write_hook successfully\n");

if ((ret = atclient_connection_connect(&conn, HOST, PORT)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to connect to %s:%d\n", HOST, PORT);
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Connected to %s:%d\n", HOST, PORT);

if ((ret = atclient_connection_write(&conn, (const unsigned char *)src, src_len)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to write to %s:%d\n", HOST, PORT);
goto exit;
}

if ((ret = atclient_connection_write(&conn, (const unsigned char *)src, src_len)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to write to %s:%d\n", HOST, PORT);
goto exit;
}

if ((ret = atclient_connection_read(&conn, &recv, &recv_len, 20)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to read from %s:%d\n", HOST, PORT);
goto exit;
}
free(recv);
recv = NULL;

if ((ret = atclient_connection_read(&conn, &recv, &recv_len, 20)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to read from %s:%d\n", HOST, PORT);
goto exit;
}
free(recv);
recv = NULL;

if ((ret = atclient_connection_read(&conn, &recv, &recv_len, 20)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to read from %s:%d\n", HOST, PORT);
goto exit;
}
free(recv);
recv = NULL;

if ((ret = atclient_connection_read(&conn, &recv, &recv_len, 0)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to read from %s:%d\n", HOST, PORT);
goto exit;
}
free(recv);
recv = NULL;

size_t recv_size = 4096;
recv = malloc(sizeof(unsigned char) * recv_size);
if(recv == NULL) {
ret = 1;
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to malloc\n");
goto exit;
}

if((ret = atclient_connection_send(&conn, src, src_len, recv, recv_size, &recv_len)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "atclient_connection_send: %d\n", ret);
goto exit;
}

if ((ret = atclient_connection_disconnect(&conn)) != 0) {
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_ERROR, "Failed to disconnect from %s:%d\n", HOST, PORT);
goto exit;
}
atlogger_log(TAG, ATLOGGER_LOGGING_LEVEL_INFO, "Disconnected from %s:%d\n", HOST, PORT);

ret = 0;
goto exit;
exit: {
free(recv);
atclient_connection_free(&conn);
return ret;
}
}
25 changes: 25 additions & 0 deletions examples/desktop/connection_hooks/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash
set -eu

# Clean
rm -f build/CMakeCache.txt
rm -f bin/main

# Install dependencies
FULL_PATH_TO_SCRIPT="$(realpath "${BASH_SOURCE[0]}")"
SCRIPT_DIRECTORY="$(dirname "$FULL_PATH_TO_SCRIPT")"

# Install atsdk
"$SCRIPT_DIRECTORY/../../../tools/install.sh"

# Build
cd "$SCRIPT_DIRECTORY"

## CMake configure
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug

## CMake build
cmake --build build --target install

# Run
./bin/main $@
Loading
Loading