summaryrefslogtreecommitdiffstats
path: root/friendfinder
diff options
context:
space:
mode:
authorPatrick Hornecker2009-12-23 16:11:38 +0100
committerPatrick Hornecker2009-12-23 16:11:38 +0100
commit9965b3f3134c9440244191435ace3e6e272ae67b (patch)
treea18fa2b146df965c842ad01bc0d382d2b1111b76 /friendfinder
parentreceiver and sender added to handler, nearly clean exit, map added (diff)
downloadfriendfinder-9965b3f3134c9440244191435ace3e6e272ae67b.tar.gz
friendfinder-9965b3f3134c9440244191435ace3e6e272ae67b.tar.xz
friendfinder-9965b3f3134c9440244191435ace3e6e272ae67b.zip
more changes in threading of msg_sender, receiver and sender...not able to build BROKEN BROKEN BROKEN
Diffstat (limited to 'friendfinder')
-rw-r--r--friendfinder/Makefile.inc2
-rw-r--r--friendfinder/gui.c44
-rw-r--r--friendfinder/gui.h2
-rw-r--r--friendfinder/handler.c100
-rw-r--r--friendfinder/handler.h12
-rw-r--r--friendfinder/msg_sender.c55
-rw-r--r--friendfinder/msg_sender.h14
-rw-r--r--friendfinder/receiver.c22
-rw-r--r--friendfinder/receiver.h7
-rw-r--r--friendfinder/sender.c12
-rw-r--r--friendfinder/sender.h8
11 files changed, 87 insertions, 191 deletions
diff --git a/friendfinder/Makefile.inc b/friendfinder/Makefile.inc
index beb8f07..87fba13 100644
--- a/friendfinder/Makefile.inc
+++ b/friendfinder/Makefile.inc
@@ -4,7 +4,7 @@
CFLAGS = -g -Wall -std=c99
INCLUDES = -I../include
-LIBS = -ledje -lecore -levas -lelementary -lircclient -lcrypto -lproj
+LIBS = -ledje -lecore -levas -lelementary -lircclient -lcrypto -lproj -lpthread
###########
diff --git a/friendfinder/gui.c b/friendfinder/gui.c
index 62b35ff..b5d5bf8 100644
--- a/friendfinder/gui.c
+++ b/friendfinder/gui.c
@@ -22,18 +22,22 @@ char *from, *to, *current_msg, *last_msg;
static Evas_Object *win, *bbx;
-
-
-
static void on_cancel(void *data, Evas_Object *obj, void *event_info)
{
/* cleanly exit */
elm_exit();
elm_shutdown();
- disconnect_receiver();
- disconnect_sender();
- disconnect_msg_sender();
- shutdown_ecore_handler();
+ close_threads();
+}
+
+static void on_own_position(void *data, Evas_Object *obj, void *event_info)
+{
+ init_sender_thread(from);
+}
+
+static void on_show_users(void *data, Evas_Object *obj, void *event_info)
+{
+ init_receiver_thread(from);
}
static void on_chat(void *data, Evas_Object *obj, void *event_info)
@@ -286,7 +290,7 @@ void init_toolbar()
void init_options()
{
- Evas_Object *bg, *bx, *bx2, *bt;
+ Evas_Object *bg, *bx, *bx2, *bt, *bt2, *bt3;
/* add a standard bg */
bg = elm_bg_add(win);
@@ -311,12 +315,28 @@ void init_options()
evas_object_show(bx2);
bt = elm_button_add(win);
- elm_button_label_set(bt, "fiend friends");
+ elm_button_label_set(bt, "Find friends");
evas_object_size_hint_weight_set(bt, 1.0, 0.0);
evas_object_size_hint_align_set(bt, -1.0, -1.0);
elm_box_pack_end(bx, bt);
evas_object_smart_callback_add(bt, "clicked", NULL, NULL);
- evas_object_show(bt);
+ evas_object_show(bt);
+
+ bt2 = elm_button_add(win);
+ elm_button_label_set(bt2, "Send own position");
+ evas_object_size_hint_weight_set(bt2, 1.0, 0.0);
+ evas_object_size_hint_align_set(bt2, -1.0, -1.0);
+ elm_box_pack_end(bx, bt2);
+ evas_object_smart_callback_add(bt2, "clicked", on_own_position, NULL);
+ evas_object_show(bt2);
+
+ bt3 = elm_button_add(win);
+ elm_button_label_set(bt3, "Show other users");
+ evas_object_size_hint_weight_set(bt3, 1.0, 0.0);
+ evas_object_size_hint_align_set(bt3, -1.0, -1.0);
+ elm_box_pack_end(bx, bt3);
+ evas_object_smart_callback_add(bt3, "clicked", on_show_users, NULL);
+ evas_object_show(bt3);
}
void init_map()
@@ -430,8 +450,8 @@ void elm_main ()
/* show the window */
evas_object_show(win);
- init_ecore_handler(from, to);
- /* get going and draw/respond to the user */
+ init_msg_thread(from, to);
+ /* get going and draw/respond to the user */
elm_run();
/* standard shutdown */
diff --git a/friendfinder/gui.h b/friendfinder/gui.h
index 48b11f6..65fd3fa 100644
--- a/friendfinder/gui.h
+++ b/friendfinder/gui.h
@@ -7,6 +7,8 @@
//callback functions
static void on_cancel(void *data, Evas_Object *obj, void *event_info);
static void on_send_message(void *data, Evas_Object *obj, void *event_info);
+static void on_own_position(void *data, Evas_Object *obj, void *event_info);
+static void on_show_users(void *data, Evas_Object *obj, void *event_info);
static void on_message(void *data, Evas_Object *obj, void *event_info);
static void on_options(void *data, Evas_Object *obj, void *event_info);
static void on_chat(void *data, Evas_Object *obj, void *event_info);
diff --git a/friendfinder/handler.c b/friendfinder/handler.c
index 6967351..e3f7087 100644
--- a/friendfinder/handler.c
+++ b/friendfinder/handler.c
@@ -1,103 +1,33 @@
-#include "Ecore.h"
-#include "Evas.h"
-#include "Ecore_Evas.h"
-#include "Elementary.h"
+#include "pthread.h"
-#include "receiver.h"
-#include "sender.h"
#include "msg_sender.h"
+#include "sender.h"
+#include "receiver.h"
-int is_init = 0;
-double interval = 0.1;
-int pos_start = 0;
-
-
-void pause_msg_sender()
-{
- msg_stop_irc();
-}
+pthread_t msg_thread, sender_thread, receiver_thread;
-void continue_msg_sender()
-{
- msg_run_irc();
-}
-void pause_receiver()
+void init_msg_thread(char *from, char *to)
{
- receiver_stop_irc();
-}
+ struct nick *nicknames = (struct nick*) malloc(sizeof(struct nick));
+ nicknames->from = from;
+ nicknames->to = to;
-void continue_receiver()
-{
- receiver_run_irc();
+ pthread_create(&msg_thread, NULL, msg_main_loop, (void*) nicknames);
}
-void pause_sender()
+void init_receiver_thread(char *from)
{
- sender_stop_irc();
-}
+ pthread_create(&sender_thread, NULL, sender_main, (void*) from);
-void continue_sender()
-{
- sender_run_irc();
}
-void continue_gui(void *data)
+void init_sender_thread(char *from)
{
- elm_run();
-}
-
-void start_pos()
-{
- pos_start = 1;
-}
-
-void init_ecore_handler(char *from, char *to)
-{
- ecore_init();
-
- if (is_init == 0)
- {
- is_init = 1;
- msg_main_loop(from, to);
- sender_main(from);
- receiver_main(from);
- }
- ecore_idle_exiter_add(continue_gui, NULL);
-
- ecore_idle_exiter_add(continue_msg_sender, NULL);
-
- ecore_idle_exiter_add(pause_msg_sender, NULL);
-
- ecore_idle_exiter_add(continue_gui, NULL);
-
- if (pos_start == 1)
- {
- printf("HANDLER: sender started\n");
-
- ecore_idle_exiter_add(continue_sender, NULL);
-
- ecore_idle_exiter_add(pause_sender, NULL);
- }
-
- ecore_idle_exiter_add(continue_gui, NULL);
-
- if (pos_start == 1)
- {
- printf("HANDLER: receiver_started");
-
- ecore_idle_exiter_add(continue_receiver, NULL);
-
- ecore_idle_exiter_add(pause_receiver, NULL);
- }
-
- ecore_idle_exiter_add(continue_gui, NULL);
-
- ecore_main_loop_begin();
+ pthread_create(&receiver_thread, NULL, receiver_main, (void*) from);
}
-void shutdown_ecore_handler()
+void close_threads()
{
- ecore_main_loop_quit();
- ecore_shutdown();
+ pthread_exit(NULL);
}
diff --git a/friendfinder/handler.h b/friendfinder/handler.h
index bb3256b..6de03bd 100644
--- a/friendfinder/handler.h
+++ b/friendfinder/handler.h
@@ -4,10 +4,14 @@
/* starts postition sending */
void start_pos();
-/* inits all needed parts of ecore for the handlers */
-void init_ecore_handler(char *from, char *to);
+/* init threads */
+void init_msg_thread(char *from, char *to);
-/* shutdown all ecore handler parts */
-void shutdown_ecore_handler();
+void init_sender_thread(char *from);
+
+void init_receiver_thread(char *from);
+
+/* close all threads */
+void close_threads()
#endif
diff --git a/friendfinder/msg_sender.c b/friendfinder/msg_sender.c
index 0499f92..4994ce2 100644
--- a/friendfinder/msg_sender.c
+++ b/friendfinder/msg_sender.c
@@ -10,7 +10,7 @@
static irc_session_t *session;
irc_callbacks_t callbacks;
-char* nick;
+char* nick_from;
char* send_to;
char* received_msg;
char* msg_to_send;
@@ -196,7 +196,7 @@ void on_dcc_req(irc_session_t * session, const char * event, const char * origin
}
-void msg_main_loop(char *sender, char *receiver)
+void msg_main_loop(void *nicknames)
{
memset(&callbacks, 0, sizeof(callbacks));
@@ -205,52 +205,15 @@ void msg_main_loop(char *sender, char *receiver)
callbacks.event_dcc_chat_req = on_dcc_req;
callbacks.event_channel = on_channel;
- nick = sender;
- send_to = receiver;
+ struct nick *nicks= (struct nick*) malloc(sizeof(struct nick));
+ nicks = (struct nick*) nicknames;
+ nick_from = nicks->from;
+ send_to = nicks->to;
- if (init_connection("127.0.0.1", sender) == 0)
+ if (init_connection("127.0.0.1", nick_from) == 0)
{
printf("MSG_SENDER: connection succesfull\n");
}
-}
-
-void msg_run_irc()
-{
- if (run_session == 0)
- {
- irc_run(session);
- run_session = 1;
- }
-}
-
-void msg_stop_irc()
-{
- irc_cmd_quit(session, "paused");
-}
-
-/*
-int main (int argc, char **argv)
-{
- memset(&callbacks, 0, sizeof(callbacks));
-
- callbacks.event_connect = on_connect;
- callbacks.event_join = on_join;
- callbacks.event_dcc_chat_req = on_dcc_req;
- callbacks.event_channel = on_channel;
-
- nick = argv[1];
- send_to = argv[2];
-
- if (init_connection("127.0.0.1", argv[1]) == 0)
- {
- int ses = irc_run(session);
- return 0;
- }
-
- else
- {
- printf("aborting...\n");
- return 1;
- }
-}*/
+ irc_run(session);
+}
diff --git a/friendfinder/msg_sender.h b/friendfinder/msg_sender.h
index de90e3c..c7497c1 100644
--- a/friendfinder/msg_sender.h
+++ b/friendfinder/msg_sender.h
@@ -1,14 +1,14 @@
#ifndef __MSG_SENDER_H_
#define __MSG_SENDER_H_
-/* inits main loop of message sender. callbacks are initialized in this function */
-void msg_main_loop(char *sender, char *receiver);
-
-/* starts infinite loop */
-void msg_run_ircm();
+struct nick
+{
+ char *from;
+ char *to;
+};
-/* stops infinite loop * loop */
-void msg_stop_irc();
+/* inits main loop of message sender. callbacks are initialized in this function */
+void msg_main_loop(void *nicknames);
/* input for message which has to be sent */
void set_txt_msg(char *msg);
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index b588103..10a7d94 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -31,6 +31,7 @@ int init_connection_receiver(char* server_ip, char* user)
if (irc_is_connected(session) == 1)
{
printf("RECEIVER: connected...\n");
+
return 1;
}
}
@@ -85,14 +86,14 @@ void get_position(irc_session_t * session, const char * event, const char * orig
}
//send an aknowledge to the sender (=sendername, to differ between multiple sender)
- if (strcmp(params[1], "128") != 0)
+ // if (strcmp(params[1], "128") != 0)
{
irc_cmd_msg(session, "#test", sender_name);
counter++;
}
- else
+ // else
{
- counter++;
+ // counter++;
}
}
@@ -100,30 +101,23 @@ void get_position(irc_session_t * session, const char * event, const char * orig
void on_connect_receiver(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
+ printf("on_connect_receiver");
BF_set_key(&key, 5, "abcde");
irc_cmd_join(session, "#test", NULL);
irc_cmd_msg(session, "#test", "connected");
}
-void receiver_main(char *user)
+void receiver_main(void *user)
{
-
memset(&callbacks, 0, sizeof(callbacks));
callbacks.event_channel = get_position;
callbacks.event_connect = on_connect_receiver;
- init_connection_receiver("127.0.0.1", user);
+ char *username = (char*) user;
-}
+ init_connection_receiver("127.0.0.1", username);
-void receiver_run_irc()
-{
irc_run(session);
}
-
-void receiver_stop_irc()
-{
- irc_cmd_quit(session, "paused");
-}
diff --git a/friendfinder/receiver.h b/friendfinder/receiver.h
index c222342..2398cbc 100644
--- a/friendfinder/receiver.h
+++ b/friendfinder/receiver.h
@@ -2,12 +2,7 @@
#define __GUI_H_
/* calls main for receiver */
-void receiver_main(char *user);
+void receiver_main(void *user);
-/* start irc session */
-void receiver_run_irc();
-
-/* stop irc session */
-void receiver_stop_irc();
#endif
diff --git a/friendfinder/sender.c b/friendfinder/sender.c
index 3472430..ed4f90c 100644
--- a/friendfinder/sender.c
+++ b/friendfinder/sender.c
@@ -141,23 +141,17 @@ void get_aknowledge(irc_session_t * session, const char * event, const char * or
}
}
-void sender_main(char *nick)
+void sender_main(void *user)
{
memset(&callbacks, 0, sizeof(callbacks));
callbacks.event_connect = send_position;
callbacks.event_channel = get_aknowledge;
+ char *username = (char*)user;
- init_connection_sender("127.0.0.1", nick);
-}
+ init_connection_sender("127.0.0.1", username);
-void sender_run_irc()
-{
irc_run(session);
}
-void sender_stop_irc()
-{
- irc_cmd_quit(session, "paused");
-}
diff --git a/friendfinder/sender.h b/friendfinder/sender.h
index 78c9f67..254764c 100644
--- a/friendfinder/sender.h
+++ b/friendfinder/sender.h
@@ -2,12 +2,6 @@
#define __SENDER_H_
/* inits sender */
-void sender_main(char *nick);
-
-/* starts irc session */
-void sender_run_irc();
-
-/* stops irc session */
-void sender_stop_irc();
+void sender_main(void *nick);
#endif