1
0
mirror of https://github.com/Tha14/toxic.git synced 2025-07-03 09:26:45 +02:00

Messenger refactor - redid work from pull request 79

Moves static state out of Messenger.c and into a Messenger struct
Purely stylistic, no functional changes were made.

This commit also changed all the callers of Messenger as they now have
to pass an instance of the Messenger struct to messenger functions.

Also removed some uses of the 'static' keyword at the beginning of
function definitions when the function was already declared static, as
these caused gcc to whine.
This commit is contained in:
Chris Hall
2013-08-11 15:24:11 +12:00
parent 652f7aec26
commit 8687a54a87
5 changed files with 95 additions and 92 deletions

47
main.c
View File

@ -25,7 +25,7 @@
extern ToxWindow new_prompt();
extern ToxWindow new_friendlist();
extern int friendlist_onFriendAdded(int num);
extern int friendlist_onFriendAdded(Messenger *m, int num);
extern void disable_chatwin(int f_num);
extern int add_req(uint8_t *public_key); // XXX
extern unsigned char *hex_string_to_bin(char hex_string[]);
@ -40,6 +40,8 @@ char WINDOW_STATUS[MAX_WINDOW_SLOTS];
static ToxWindow windows[MAX_WINDOW_SLOTS];
static ToxWindow* prompt;
static Messenger *m;
int w_num;
int active_window;
@ -63,25 +65,25 @@ void on_request(uint8_t *public_key, uint8_t *data, uint16_t length)
}
}
void on_message(int friendnumber, uint8_t *string, uint16_t length)
void on_message(Messenger *m, int friendnumber, uint8_t *string, uint16_t length)
{
int i;
for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
if (windows[i].onMessage != NULL)
windows[i].onMessage(&windows[i], friendnumber, string, length);
windows[i].onMessage(&windows[i], m, friendnumber, string, length);
}
}
void on_action(int friendnumber, uint8_t *string, uint16_t length)
void on_action(Messenger *m, int friendnumber, uint8_t *string, uint16_t length)
{
int i;
for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
if (windows[i].onAction != NULL)
windows[i].onAction(&windows[i], friendnumber, string, length);
windows[i].onAction(&windows[i], m, friendnumber, string, length);
}
}
void on_nickchange(int friendnumber, uint8_t *string, uint16_t length)
void on_nickchange(Messenger *m, int friendnumber, uint8_t *string, uint16_t length)
{
wprintw(prompt->window, "\n(nickchange) %d: %s\n", friendnumber, string);
int i;
@ -91,7 +93,7 @@ void on_nickchange(int friendnumber, uint8_t *string, uint16_t length)
}
}
void on_statuschange(int friendnumber, uint8_t *string, uint16_t length)
void on_statuschange(Messenger *m, int friendnumber, uint8_t *string, uint16_t length)
{
wprintw(prompt->window, "\n(statuschange) %d: %s\n", friendnumber, string);
int i;
@ -103,7 +105,7 @@ void on_statuschange(int friendnumber, uint8_t *string, uint16_t length)
void on_friendadded(int friendnumber)
{
friendlist_onFriendAdded(friendnumber);
friendlist_onFriendAdded(m, friendnumber);
}
/* CALLBACKS END */
@ -129,14 +131,14 @@ static void init_term()
static void init_tox()
{
/* Init core */
initMessenger();
m = initMessenger();
/* Callbacks */
m_callback_friendrequest(on_request);
m_callback_friendmessage(on_message);
m_callback_namechange(on_nickchange);
m_callback_statusmessage(on_statuschange);
m_callback_action(on_action);
m_callback_friendrequest(m, on_request);
m_callback_friendmessage(m, on_message);
m_callback_namechange(m, on_nickchange);
m_callback_statusmessage(m, on_statuschange);
m_callback_action(m, on_action);
}
#define MAXLINE 90 /* Approx max number of chars in a sever line (IP + port + key) */
@ -211,7 +213,7 @@ int add_window(ToxWindow w, int n)
return -1;
windows[n] = w;
w.onInit(&w);
w.onInit(&w, m);
w_num++;
return n;
}
@ -237,7 +239,7 @@ static void init_windows()
w_num = 0;
int n_prompt = 0;
int n_friendslist = 1;
if (add_window(new_prompt(), n_prompt) == -1
if (add_window(new_prompt(), n_prompt) == -1
|| add_window(new_friendlist(), n_friendslist) == -1) {
fprintf(stderr, "add_window() failed.\n");
endwin();
@ -257,7 +259,7 @@ static void do_tox()
dht_on = false;
wprintw(prompt->window, "\nDHT disconnected.\n");
}
doMessenger();
doMessenger(m);
}
static void load_data(char *path)
@ -285,17 +287,17 @@ static void load_data(char *path)
endwin();
exit(1);
}
Messenger_load(buf, len);
Messenger_load(m, buf, len);
}
else {
len = Messenger_size();
len = Messenger_size(m);
buf = malloc(len);
if (buf == NULL) {
fprintf(stderr, "malloc() failed.\n");
endwin();
exit(1);
}
Messenger_save(buf);
Messenger_save(m, buf);
fd = fopen(path, "w");
if (fd == NULL) {
@ -329,7 +331,7 @@ static void draw_bar()
move(LINES - 1, 0);
attron(COLOR_PAIR(4) | A_BOLD);
printw(" TOXIC " TOXICVER "|");
printw(" TOXIC " TOXICVER "|");
attroff(COLOR_PAIR(4) | A_BOLD);
int i;
@ -473,7 +475,8 @@ int main(int argc, char *argv[])
if (ch == '\t' || ch == KEY_BTAB)
set_active_window(ch);
else if (ch != ERR)
a->onKey(a, ch);
a->onKey(a, m, ch);
}
cleanupMessenger(m);
return 0;
}