Skip to content

Commit b14943b

Browse files
committed
refactor: Move Logger out of Messenger into Tox.
So it can be used across other pieces we plug together in `tox_new`.
1 parent dd31362 commit b14943b

File tree

6 files changed

+61
-30
lines changed

6 files changed

+61
-30
lines changed

.clang-tidy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ CheckOptions:
4242
- key: concurrency-mt-unsafe.FunctionSet
4343
value: posix
4444
- key: readability-function-cognitive-complexity.Threshold
45-
value: 153 # TODO(iphydf): Decrease. tox_new is the highest at the moment.
45+
value: 159 # TODO(iphydf): Decrease. tox_new_system is the highest at the moment.
4646
- key: cppcoreguidelines-avoid-do-while.IgnoreMacros
4747
value: true
4848
- key: readability-simplify-boolean-expr.SimplifyDeMorgan

testing/Messenger_test.c

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,37 @@ int main(int argc, char *argv[])
102102
exit(0);
103103
}
104104

105-
Messenger_Options options = {0};
105+
Messenger_Options options = {nullptr};
106106
options.ipv6enabled = ipv6enabled;
107+
108+
Logger *logger = logger_new(mem);
109+
110+
if (logger == nullptr) {
111+
fputs("Failed to allocate logger datastructure\n", stderr);
112+
mono_time_free(mem, mono_time);
113+
exit(1);
114+
}
115+
116+
options.log = logger;
117+
107118
Messenger_Error err;
108119
m = new_messenger(mono_time, mem, os_random(), os_network(), &options, &err);
109120

110121
if (!m) {
111122
fprintf(stderr, "Failed to allocate messenger datastructure: %u\n", err);
112-
exit(0);
123+
logger_kill(logger);
124+
mono_time_free(mem, mono_time);
125+
exit(1);
113126
}
114127

115128
if (argc == argvoffset + 4) {
116129
const long int port_conv = strtol(argv[argvoffset + 2], nullptr, 10);
117130

118131
if (port_conv <= 0 || port_conv > UINT16_MAX) {
119132
printf("Failed to convert \"%s\" into a valid port. Exiting...\n", argv[argvoffset + 2]);
133+
kill_messenger(m);
134+
logger_kill(logger);
135+
mono_time_free(mem, mono_time);
120136
exit(1);
121137
}
122138

@@ -131,6 +147,9 @@ int main(int argc, char *argv[])
131147

132148
if (!res) {
133149
printf("Failed to convert \"%s\" into an IP address. Exiting...\n", argv[argvoffset + 1]);
150+
kill_messenger(m);
151+
logger_kill(logger);
152+
mono_time_free(mem, mono_time);
134153
exit(1);
135154
}
136155
}
@@ -157,6 +176,9 @@ int main(int argc, char *argv[])
157176
printf("\nEnter the address of the friend you wish to add (38 bytes HEX format):\n");
158177

159178
if (!fgets(temp_hex_id, sizeof(temp_hex_id), stdin)) {
179+
kill_messenger(m);
180+
logger_kill(logger);
181+
mono_time_free(mem, mono_time);
160182
exit(0);
161183
}
162184

@@ -186,6 +208,8 @@ int main(int argc, char *argv[])
186208
if (file == nullptr) {
187209
printf("Failed to open file %s\n", filename);
188210
kill_messenger(m);
211+
logger_kill(logger);
212+
mono_time_free(mem, mono_time);
189213
return 1;
190214
}
191215

@@ -195,6 +219,8 @@ int main(int argc, char *argv[])
195219
fputs("Failed to allocate memory\n", stderr);
196220
fclose(file);
197221
kill_messenger(m);
222+
logger_kill(logger);
223+
mono_time_free(mem, mono_time);
198224
return 1;
199225
}
200226

@@ -205,6 +231,8 @@ int main(int argc, char *argv[])
205231
free(buffer);
206232
fclose(file);
207233
kill_messenger(m);
234+
logger_kill(logger);
235+
mono_time_free(mem, mono_time);
208236
return 1;
209237
}
210238

toxcore/Messenger.c

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3394,6 +3394,7 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
33943394
return nullptr;
33953395
}
33963396

3397+
m->log = options->log;
33973398
m->mono_time = mono_time;
33983399
m->mem = mem;
33993400
m->rng = rng;
@@ -3409,16 +3410,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
34093410
}
34103411
m->fr = fr;
34113412

3412-
Logger *log = logger_new(mem);
3413-
if (log == nullptr) {
3414-
friendreq_kill(m->fr);
3415-
mem_delete(mem, m);
3416-
return nullptr;
3417-
}
3418-
m->log = log;
3419-
3420-
logger_callback_log(m->log, options->log_callback, options->log_context, options->log_user_data);
3421-
34223413
unsigned int net_err = 0;
34233414

34243415
if (!options->udp_disabled && options->proxy_info.proxy_type != TCP_PROXY_NONE) {
@@ -3444,7 +3435,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
34443435
*error = MESSENGER_ERROR_PORT;
34453436
}
34463437

3447-
logger_kill(m->log);
34483438
mem_delete(mem, m);
34493439
return nullptr;
34503440
}
@@ -3454,7 +3444,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
34543444
if (dht == nullptr) {
34553445
kill_networking(m->net);
34563446
friendreq_kill(m->fr);
3457-
logger_kill(m->log);
34583447
mem_delete(mem, m);
34593448
return nullptr;
34603449
}
@@ -3466,7 +3455,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
34663455
kill_dht(m->dht);
34673456
kill_networking(m->net);
34683457
friendreq_kill(m->fr);
3469-
logger_kill(m->log);
34703458
mem_delete(mem, m);
34713459
return nullptr;
34723460
}
@@ -3481,7 +3469,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
34813469
kill_dht(m->dht);
34823470
kill_networking(m->net);
34833471
friendreq_kill(m->fr);
3484-
logger_kill(m->log);
34853472
mem_delete(mem, m);
34863473
return nullptr;
34873474
}
@@ -3496,7 +3483,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
34963483
kill_dht(m->dht);
34973484
kill_networking(m->net);
34983485
friendreq_kill(m->fr);
3499-
logger_kill(m->log);
35003486
mem_delete(mem, m);
35013487
return nullptr;
35023488
}
@@ -3534,7 +3520,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
35343520
kill_dht(m->dht);
35353521
kill_networking(m->net);
35363522
friendreq_kill(m->fr);
3537-
logger_kill(m->log);
35383523
mem_delete(mem, m);
35393524
return nullptr;
35403525
}
@@ -3561,7 +3546,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
35613546
kill_dht(m->dht);
35623547
kill_networking(m->net);
35633548
friendreq_kill(m->fr);
3564-
logger_kill(m->log);
35653549
mem_delete(mem, m);
35663550
return nullptr;
35673551
}
@@ -3588,7 +3572,6 @@ Messenger *new_messenger(Mono_Time *mono_time, const Memory *mem, const Random *
35883572
kill_dht(m->dht);
35893573
kill_networking(m->net);
35903574
friendreq_kill(m->fr);
3591-
logger_kill(m->log);
35923575
mem_delete(mem, m);
35933576

35943577
if (error != nullptr) {
@@ -3652,7 +3635,6 @@ void kill_messenger(Messenger *m)
36523635
friendreq_kill(m->fr);
36533636

36543637
mem_delete(m->mem, m->options.state_plugins);
3655-
logger_kill(m->log);
36563638
mem_delete(m->mem, m);
36573639
}
36583640

toxcore/Messenger.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ typedef struct Messenger_State_Plugin {
7474
} Messenger_State_Plugin;
7575

7676
typedef struct Messenger_Options {
77+
Logger *_Nonnull log;
78+
7779
bool ipv6enabled;
7880
bool udp_disabled;
7981
TCP_Proxy_Info proxy_info;
@@ -85,10 +87,6 @@ typedef struct Messenger_Options {
8587
bool dht_announcements_enabled;
8688
bool groups_persistence_enabled;
8789

88-
logger_cb *_Nullable log_callback;
89-
void *_Nullable log_context;
90-
void *_Nullable log_user_data;
91-
9290
Messenger_State_Plugin *_Nullable state_plugins;
9391
uint8_t state_plugins_length;
9492

toxcore/tox.c

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
674674
const Network *const ns = sys->ns;
675675
const Memory *const mem = sys->mem;
676676

677-
Messenger_Options m_options = {false};
677+
Messenger_Options m_options = {nullptr};
678678

679679
m_options.dns_enabled = !tox_options_get_experimental_disable_dns(opts);
680680

@@ -736,9 +736,21 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
736736
}
737737

738738
tox->log_callback = tox_options_get_log_callback(opts);
739-
m_options.log_callback = tox_log_handler;
740-
m_options.log_context = tox;
741-
m_options.log_user_data = tox_options_get_log_user_data(opts);
739+
740+
Logger *log = logger_new(mem);
741+
742+
if (log == nullptr) {
743+
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_MALLOC);
744+
mem_delete(mem, tox);
745+
tox_options_free(default_options);
746+
return nullptr;
747+
}
748+
749+
tox->log = log;
750+
751+
m_options.log = tox->log;
752+
753+
logger_callback_log(tox->log, tox_log_handler, tox, tox_options_get_log_user_data(opts));
742754

743755
switch (tox_options_get_proxy_type(opts)) {
744756
case TOX_PROXY_TYPE_HTTP: {
@@ -758,6 +770,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
758770

759771
default: {
760772
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PROXY_BAD_TYPE);
773+
logger_kill(tox->log);
761774
mem_delete(mem, tox);
762775
tox_options_free(default_options);
763776
return nullptr;
@@ -769,6 +782,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
769782
if (m_options.proxy_info.proxy_type != TCP_PROXY_NONE) {
770783
if (tox_options_get_proxy_port(opts) == 0) {
771784
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PROXY_BAD_PORT);
785+
logger_kill(tox->log);
772786
mem_delete(mem, tox);
773787
tox_options_free(default_options);
774788
return nullptr;
@@ -787,6 +801,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
787801
|| !addr_resolve_or_parse_ip(ns, mem, proxy_host, &m_options.proxy_info.ip_port.ip, nullptr, dns_enabled)) {
788802
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PROXY_BAD_HOST);
789803
// TODO(irungentoo): TOX_ERR_NEW_PROXY_NOT_FOUND if domain.
804+
logger_kill(tox->log);
790805
mem_delete(mem, tox);
791806
tox_options_free(default_options);
792807
return nullptr;
@@ -799,6 +814,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
799814

800815
if (temp_mono_time == nullptr) {
801816
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_MALLOC);
817+
logger_kill(tox->log);
802818
mem_delete(mem, tox);
803819
tox_options_free(default_options);
804820
return nullptr;
@@ -810,6 +826,8 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
810826

811827
if (mutex == nullptr) {
812828
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_MALLOC);
829+
mono_time_free(mem, tox->mono_time);
830+
logger_kill(tox->log);
813831
mem_delete(mem, tox);
814832
tox_options_free(default_options);
815833
return nullptr;
@@ -849,6 +867,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
849867
}
850868

851869
mem_delete(mem, tox->mutex);
870+
logger_kill(tox->log);
852871
mem_delete(mem, tox);
853872
tox_options_free(default_options);
854873
return nullptr;
@@ -868,6 +887,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
868887
}
869888

870889
mem_delete(mem, tox->mutex);
890+
logger_kill(tox->log);
871891
mem_delete(mem, tox);
872892

873893
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_MALLOC);
@@ -888,6 +908,7 @@ static Tox *tox_new_system(const struct Tox_Options *_Nullable options, Tox_Err_
888908
}
889909

890910
mem_delete(mem, tox->mutex);
911+
logger_kill(tox->log);
891912
mem_delete(mem, tox);
892913

893914
SET_ERROR_PARAMETER(error, TOX_ERR_NEW_LOAD_BAD_FORMAT);
@@ -990,6 +1011,7 @@ void tox_kill(Tox *tox)
9901011
LOGGER_ASSERT(tox->m->log, tox->toxav_object == nullptr, "Attempted to kill tox while toxav is still alive");
9911012
kill_groupchats(tox->m->conferences_object);
9921013
kill_messenger(tox->m);
1014+
logger_kill(tox->log);
9931015
mono_time_free(tox->sys.mem, tox->mono_time);
9941016
tox_unlock(tox);
9951017

toxcore/tox_struct.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ extern "C" {
1818
#endif
1919

2020
struct Tox {
21+
struct Logger *_Nonnull log;
2122
struct Messenger *_Nonnull m;
2223
Mono_Time *_Nonnull mono_time;
2324
Tox_System sys;

0 commit comments

Comments
 (0)