diff options
author | iphydf <iphydf@users.noreply.github.com> | 2016-11-05 16:52:41 +0000 |
---|---|---|
committer | iphydf <iphydf@users.noreply.github.com> | 2016-11-06 20:35:09 +0000 |
commit | 82515f92eecde2dffc0659519317d00459a09239 (patch) | |
tree | f17b9afe68fdd475be368623d58c7f51e8cc0ba2 /toxcore/tox.c | |
parent | fcc8ad943e93308b7048c4e0071ae00b54804934 (diff) |
Move log callback to options.
Previously, all log messages generated by tox_new (which is quite a lot)
were dropped, because client code had no chance to register a logging
callback, yet. This change allows setting the log callback from the
beginning and removes the ability to unset it.
Since the log callback is forever special, since it can't be stateless,
we don't necessarily need to treat it uniformly (with `event`).
Diffstat (limited to 'toxcore/tox.c')
-rw-r--r-- | toxcore/tox.c | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/toxcore/tox.c b/toxcore/tox.c index 29bbfba0..7898868b 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c | |||
@@ -133,6 +133,8 @@ ACCESSORS(uint16_t, , end_port) | |||
133 | ACCESSORS(uint16_t, , tcp_port) | 133 | ACCESSORS(uint16_t, , tcp_port) |
134 | ACCESSORS(TOX_SAVEDATA_TYPE, savedata_, type) | 134 | ACCESSORS(TOX_SAVEDATA_TYPE, savedata_, type) |
135 | ACCESSORS(size_t, savedata_, length) | 135 | ACCESSORS(size_t, savedata_, length) |
136 | ACCESSORS(tox_log_cb *, log_, callback) | ||
137 | ACCESSORS(void *, log_, user_data) | ||
136 | 138 | ||
137 | const uint8_t *tox_options_get_savedata_data(const struct Tox_Options *options) | 139 | const uint8_t *tox_options_get_savedata_data(const struct Tox_Options *options) |
138 | { | 140 | { |
@@ -218,6 +220,9 @@ Tox *tox_new(const struct Tox_Options *options, TOX_ERR_NEW *error) | |||
218 | m_options.port_range[1] = options->end_port; | 220 | m_options.port_range[1] = options->end_port; |
219 | m_options.tcp_server_port = options->tcp_port; | 221 | m_options.tcp_server_port = options->tcp_port; |
220 | 222 | ||
223 | m_options.log_callback = (logger_cb *)options->log_callback; | ||
224 | m_options.log_user_data = options->log_user_data; | ||
225 | |||
221 | switch (options->proxy_type) { | 226 | switch (options->proxy_type) { |
222 | case TOX_PROXY_TYPE_HTTP: | 227 | case TOX_PROXY_TYPE_HTTP: |
223 | m_options.proxy_info.proxy_type = TCP_PROXY_HTTP; | 228 | m_options.proxy_info.proxy_type = TCP_PROXY_HTTP; |
@@ -258,19 +263,11 @@ Tox *tox_new(const struct Tox_Options *options, TOX_ERR_NEW *error) | |||
258 | } | 263 | } |
259 | } | 264 | } |
260 | 265 | ||
261 | Logger *log = logger_new(); | ||
262 | |||
263 | if (log == NULL) { | ||
264 | SET_ERROR_PARAMETER(error, TOX_ERR_NEW_MALLOC); | ||
265 | return NULL; | ||
266 | } | ||
267 | |||
268 | unsigned int m_error; | 266 | unsigned int m_error; |
269 | Messenger *m = new_messenger(log, &m_options, &m_error); | 267 | Messenger *m = new_messenger(&m_options, &m_error); |
270 | 268 | ||
271 | if (!new_groupchats(m)) { | 269 | if (!new_groupchats(m)) { |
272 | kill_messenger(m); | 270 | kill_messenger(m); |
273 | logger_kill(log); | ||
274 | 271 | ||
275 | if (m_error == MESSENGER_ERROR_PORT) { | 272 | if (m_error == MESSENGER_ERROR_PORT) { |
276 | SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PORT_ALLOC); | 273 | SET_ERROR_PARAMETER(error, TOX_ERR_NEW_PORT_ALLOC); |
@@ -302,16 +299,8 @@ void tox_kill(Tox *tox) | |||
302 | } | 299 | } |
303 | 300 | ||
304 | Messenger *m = tox; | 301 | Messenger *m = tox; |
305 | Logger *log = m->log; | ||
306 | kill_groupchats((Group_Chats *)m->conferences_object); | 302 | kill_groupchats((Group_Chats *)m->conferences_object); |
307 | kill_messenger(m); | 303 | kill_messenger(m); |
308 | logger_kill(log); | ||
309 | } | ||
310 | |||
311 | void tox_callback_log(Tox *tox, tox_log_cb *callback, void *user_data) | ||
312 | { | ||
313 | Messenger *m = tox; | ||
314 | m_callback_log(m, (logger_cb *)callback, tox, user_data); | ||
315 | } | 304 | } |
316 | 305 | ||
317 | size_t tox_get_savedata_size(const Tox *tox) | 306 | size_t tox_get_savedata_size(const Tox *tox) |