|
@@ -43,6 +43,38 @@ void* udp_thread(void* data){
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+//Thread initialisation de la communication principale entre client et serveur
|
|
|
+//Connexion utilisé pour traiter les requetes emise par le client
|
|
|
+void* tcp_cli_thread(void* data){
|
|
|
+ Server s;
|
|
|
+ //Cast data en serveur
|
|
|
+ s = (Server) data;
|
|
|
+ //Detache le thread
|
|
|
+ if(pthread_detach(pthread_self()) != 0){
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ //Boucle attente
|
|
|
+ while(true){
|
|
|
+
|
|
|
+ }
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
+
|
|
|
+//Thread initialisation de la communication utilisé par le serveur pour notifier les clients
|
|
|
+void* tcp_serv_thread(void* data){
|
|
|
+ Server s;
|
|
|
+ //Cast data en serveur
|
|
|
+ s = (Server) data;
|
|
|
+ //Detache le thread
|
|
|
+ if(pthread_detach(pthread_self()) != 0){
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+ //Boucle attente
|
|
|
+ while(true){
|
|
|
+
|
|
|
+ }
|
|
|
+ return NULL;
|
|
|
+}
|
|
|
|
|
|
/* --- Fonctions publiques --- */
|
|
|
void ini_server(){
|
|
@@ -60,12 +92,15 @@ void add_handler(char* method, char* ressource, int(*handler)(Server, JsonParser
|
|
|
|
|
|
boolean launch_udp_server(int port){
|
|
|
Server s;
|
|
|
- boolean res;
|
|
|
pthread_t udp;
|
|
|
//Creation serveur
|
|
|
s = server_create_udp();
|
|
|
- res = s->server_bind(s, port);
|
|
|
- if(!res){
|
|
|
+ if(s == NULL){
|
|
|
+ addserror("Impossible de créer le serveur UDP");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(!s->server_bind(s, port)){
|
|
|
+ addserror("Impossible de bind le serveur UDP");
|
|
|
return false;
|
|
|
}
|
|
|
//Lancement thread serveur udp
|
|
@@ -77,7 +112,36 @@ boolean launch_udp_server(int port){
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-boolean launch_tcp_server(int);
|
|
|
+boolean launch_tcp_server(int port){
|
|
|
+ Server s[2];
|
|
|
+ pthread_t tcp;
|
|
|
+ //Creation serveur
|
|
|
+ s[0] = server_create_tcp();
|
|
|
+ s[1] = server_create_tcp();
|
|
|
+ if(s[0] == NULL || s[1] == NULL){
|
|
|
+ addserror("Impossible de créer les serveurs TCP");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(!( s[0]->server_bind(s[0], port) && s[1]->server_bind(s[1], port + 1) )){
|
|
|
+ addserror("Impossible de bind les serveurs TCP");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ //Lancement Thread attente connexion TCP
|
|
|
+ if(pthread_create(&tcp, NULL, tcp_cli_thread, s[0]) != 0){
|
|
|
+ adderror("Impossible de créer le thread TCP Client");
|
|
|
+ server_close(s[0]);
|
|
|
+ server_close(s[1]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if(pthread_create(&tcp, NULL, tcp_serv_thread, s[1]) != 0){
|
|
|
+ adderror("Impossible de créer le thread TCP Serveur");
|
|
|
+ server_close(s[0]);
|
|
|
+ server_close(s[1]);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
boolean receive_client(Server);
|
|
|
boolean send_client(Server, JsonEncoder*);
|
|
|
boolean notify_client(Server, char*, char*, JsonEncoder*);
|