#include "pthread.h" #include "msg_sender.h" #include "sender.h" #include "receiver.h" #include "handler.h" pthread_t msg_thread, sender_thread, receiver_thread; int msg_start = 0, sender_start = 0, receiver_start = 0; void init_msg_thread(char *from, char *to) { if (msg_start == 0) { struct nick *nicknames = (struct nick*) malloc(sizeof(struct nick)); nicknames->from = from; nicknames->to = to; if (pthread_create(&msg_thread, NULL, msg_main_loop, (void*) nicknames) == 0) printf("HANDLER: msg thread init...\n"); else { printf("HANDLER: msg thread init failure...\n"); return; } msg_start = 1; } } void init_receiver_thread(char *from) { if (receiver_start == 0) { char* receiver_from = (char*) malloc(sizeof(from)); memcpy(receiver_from, from, strlen(from)); if (pthread_create(&receiver_thread, NULL, receiver_main, (void*) from) == 0) { pthread_detach(receiver_thread); printf("HANDLER: receiver thread init...\n"); } else { printf("HANDLER: receiver thread init failure...\n"); return; } receiver_start = 1; } } void init_sender_thread(char *from) { if (sender_start == 0) { char* sender_from = (char*) malloc(sizeof(from)); memcpy(sender_from, from, strlen(from)); if (pthread_create(&sender_thread, NULL, sender_main, (void*) from) == 0) { pthread_detach(sender_thread); printf("HANDLER: sender thread init...\n"); } else { printf("HANDLER: sender thread init failure...\n"); return; } sender_start = 1; } } void close_threads() { if (receiver_start != 0) disconnect_receiver(); if (sender_start != 0) disconnect_sender(); if (msg_start != 0) disconnect_msg_sender(); // exit(0); }