summaryrefslogtreecommitdiff
path: root/toxcore/tox.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2016-11-05 16:52:41 +0000
committeriphydf <iphydf@users.noreply.github.com>2016-11-06 20:35:09 +0000
commit82515f92eecde2dffc0659519317d00459a09239 (patch)
treef17b9afe68fdd475be368623d58c7f51e8cc0ba2 /toxcore/tox.c
parentfcc8ad943e93308b7048c4e0071ae00b54804934 (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.c23
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)
133ACCESSORS(uint16_t, , tcp_port) 133ACCESSORS(uint16_t, , tcp_port)
134ACCESSORS(TOX_SAVEDATA_TYPE, savedata_, type) 134ACCESSORS(TOX_SAVEDATA_TYPE, savedata_, type)
135ACCESSORS(size_t, savedata_, length) 135ACCESSORS(size_t, savedata_, length)
136ACCESSORS(tox_log_cb *, log_, callback)
137ACCESSORS(void *, log_, user_data)
136 138
137const uint8_t *tox_options_get_savedata_data(const struct Tox_Options *options) 139const 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
311void 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
317size_t tox_get_savedata_size(const Tox *tox) 306size_t tox_get_savedata_size(const Tox *tox)