From d7bc357b2d1ec596e1b7fc982d0e299db3b4135c Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 3 Jan 2016 00:06:41 +1000 Subject: Beat the server connection manegement into shape. --- src/libraries/SledjHamr.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src/libraries/SledjHamr.h') diff --git a/src/libraries/SledjHamr.h b/src/libraries/SledjHamr.h index 467fcc6..326e423 100644 --- a/src/libraries/SledjHamr.h +++ b/src/libraries/SledjHamr.h @@ -23,12 +23,22 @@ struct _ConnServer Ecore_Con_Server *server; char *serverCommand; int count, hackyCount; + // A list of connected remote clients. + // A NULL list means this is a remote server stored in a local clients Connection. + // An empty list means this is a local server, with no clients. + // An actual list means this is a local server, with connected remote clients. + Eina_Clist *clients; // HEAD element. + Ecore_Exe *serverHandle; // For running the server. + pid_t pid; }; struct _ConnClient { Ecore_Con_Client *client; + // If this is a local client, then myServer is a server Connection representing the remote server, and the server list entry element can be NULL. + // If this is a remote client, then myServer is NULL, and this Connection is stored in a list in the local server's Connection. Connection *myServer; + Eina_Clist *server; // Entry element. }; struct _Connection @@ -48,16 +58,19 @@ struct _Connection // Callbacks. void *pointer; Ecore_Event_Handler_Cb _add, _data, _del; - Ecore_Event_Handler *add, *data, *del; + Ecore_Event_Handler *add, *data, *del, *died; streamParser unknownCommand; + + int stage; // Stage of creation for the Connection. }; -Ecore_Con_Server *reachOut(char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del); void *addMessage(Eina_Clist *list, size_t size, const char *message, ...); -void sendBack(Ecore_Con_Client *client, const char *SID, const char *message, ...); -void sendForth(Ecore_Con_Server *server, const char *SID, const char *message, ...); +void sendBack(Connection *conn, const char *SID, const char *message, ...); +void sendForth(Connection *conn, const char *SID, const char *message, ...); +void send2(Connection *conn, const char *SID, const char *message, ...); Connection *openArms(char *name, const char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del, streamParser _parser); +Connection *reachOut(char *name, char *command, char *address, int port, void *data, Ecore_Event_Handler_Cb _add, Ecore_Event_Handler_Cb _data, Ecore_Event_Handler_Cb _del, streamParser _parser); #endif -- cgit v1.1