Enlightenment CVS committal Author : raster Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/bin Modified Files: Tag: SPLIT Makefile.am ecore_test.c Log Message: ecore_ipc module added - parses ipc "chunks" and just give you entire ipc decoded chunks. currenly all ipc messages are of the format: DWORD major_opcode DWORD minor_opcode DWORD payload_data_byte_size [payload data] ... next chunk etc. this gives 64 bits of address space for ipc calls (32 + 32) and you can have up to 2Gbytes of payload "data" attached (or 0 bytes - depending what you want) and ecore_ipc does the endianess translations of the major & minor opcodes and size amount for you. the data payload is opaque and its up to the app to do any bit swizzling there. but it seems to work... all hail IPC! :) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/Attic/Makefile.am,v retrieving revision 1.1.2.12 retrieving revision 1.1.2.13 diff -u -3 -r1.1.2.12 -r1.1.2.13 --- Makefile.am 12 Mar 2003 23:53:32 -0000 1.1.2.12 +++ Makefile.am 26 Mar 2003 07:54:47 -0000 1.1.2.13 @@ -30,6 +30,12 @@ ECORE_CON_LIB = endif +if BUILD_ECORE_IPC +ECORE_IPC_LIB = $(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la +else +ECORE_IPC_LIB = +endif + INCLUDES = \ -I$(top_srcdir)/src/lib/ecore \ -I$(top_srcdir)/src/lib/ecore_evas \ @@ -37,6 +43,7 @@ -I$(top_srcdir)/src/lib/ecore_fb \ -I$(top_srcdir)/src/lib/ecore_job \ -I$(top_srcdir)/src/lib/ecore_con \ +-I$(top_srcdir)/src/lib/ecore_ipc \ @evas_cflags@ \ @x_cflags@ @@ -54,6 +61,7 @@ $(ECORE_X_LIB) \ $(ECORE_EVAS_LIB) \ $(ECORE_CON_LIB) \ +$(ECORE_IPC_LIB) \ -lm ecore_test_LDFLAGS = @@ -68,7 +76,8 @@ $(ECORE_FB_LIB) \ $(ECORE_X_LIB) \ $(ECORE_EVAS_LIB) \ -$(ECORE_CON_LIB) +$(ECORE_CON_LIB) \ +$(ECORE_IPC_LIB) ecore_evas_test_SOURCES = \ ecore_evas_test.c \ @@ -84,6 +93,7 @@ $(ECORE_X_LIB) \ $(ECORE_EVAS_LIB) \ $(ECORE_CON_LIB) \ +$(ECORE_IPC_LIB) \ -lm ecore_evas_test_LDFLAGS = @@ -98,4 +108,5 @@ $(ECORE_FB_LIB) \ $(ECORE_X_LIB) \ $(ECORE_EVAS_LIB) \ -$(ECORE_CON_LIB) +$(ECORE_CON_LIB) \ +$(ECORE_IPC_LIB) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/Attic/ecore_test.c,v retrieving revision 1.1.2.34 retrieving revision 1.1.2.35 diff -u -3 -r1.1.2.34 -r1.1.2.35 --- ecore_test.c 17 Mar 2003 13:06:07 -0000 1.1.2.34 +++ ecore_test.c 26 Mar 2003 07:54:47 -0000 1.1.2.35 @@ -15,6 +15,9 @@ #ifdef BUILD_ECORE_CON #include "Ecore_Con.h" #endif +#ifdef BUILD_ECORE_IPC +#include "Ecore_Ipc.h" +#endif #include <math.h> @@ -34,7 +37,89 @@ return 1; } -/**** ECORE TEST CODE */ + + + + + +int +handler_ipc_client_add(int type, void *event, void *data) +{ + Ecore_Ipc_Event_Client_Add *e; + + e = event; + printf("!!! client %p connected to server!\n", e->client); + return 1; +} + +int +handler_ipc_client_del(int type, void *event, void *data) +{ + Ecore_Ipc_Event_Client_Del *e; + + e = event; + printf("!!! client %p disconnected from server!\n", e->client); + return 1; +} + + +int +handler_ipc_client_data(int type, void *event, void *data) +{ + Ecore_Ipc_Event_Client_Data *e; + + e = event; + printf("!!! client sent: [%i] [%i] (%i) \"%s\"\n", e->major, e->minor, e->size, e->data); + ecore_ipc_client_send(e->client, 1, 2, "ABC", 4); + /* we can disconnect a client like this: */ + /* ecore_ipc_client_del(e->client); */ + /* or we can end a server by: */ + /* ecore_ipc_server_del(ecore_ipc_client_server_get(e->client)); */ + return 1; +} + + +int +handler_ipc_server_add(int type, void *event, void *data) +{ + Ecore_Ipc_Event_Server_Add *e; + + e = event; + printf("!!! client made successful connect to server %p!\n", e->server); + return 1; +} + +int +handler_ipc_server_del(int type, void *event, void *data) +{ + Ecore_Ipc_Event_Server_Del *e; + + e = event; + printf("!!! server went away!\n"); + /* clean up our server connection since it went away */ + ecore_ipc_server_del(e->server); + return 1; +} + +int +handler_ipc_server_data(int type, void *event, void *data) +{ + Ecore_Ipc_Event_Server_Data *e; + static int count = 0; + + e = event; + printf("!!! server sent: [%i] [%i] (%i) \"%s\"\n", e->major, e->minor, e->size, e->data); + ecore_ipc_server_send(e->server, 3, 4, "EFG", 4); + count++; + if (count > 4) + { + printf("!!! go & disconnect from server!\n"); + ecore_ipc_server_del(e->server); + } + return 1; +} + +/**** ECORE_CON TEST CODE */ int handler_client_add(int type, void *event, void *data) { @@ -154,7 +239,7 @@ { ecore_idle_enterer_add(idle_enterer, NULL); /* ecore_idler_add(idler, NULL); */ - ecore_timer_add(1.0, timer, NULL); + ecore_timer_add(2.0, timer, NULL); } #ifdef BUILD_ECORE_X @@ -546,6 +631,7 @@ #endif #ifdef BUILD_ECORE_CON +#if 0 /* init ecore_con */ ecore_con_init(); { @@ -576,6 +662,41 @@ ecore_con_server_send(server, data, 160 * 1024); } } +#endif +#endif + +#ifdef BUILD_ECORE_IPC +#if 1 + /* init ecore_ipc */ + ecore_ipc_init(); + { + Ecore_Ipc_Server *server; + + server = ecore_ipc_server_add(ECORE_IPC_LOCAL_SYSTEM, "ecore_ipc_test", 0, NULL); +/* server = ecore_ipc_server_add(ECORE_IPC_REMOTE_SYSTEM, "localhost", 4567, NULL); */ + ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD, handler_ipc_client_add, NULL); + ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL, handler_ipc_client_del, NULL); + ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA, handler_ipc_client_data, NULL); + printf("create ipc server %p\n", server); + } + { + Ecore_Ipc_Server *server; + + server = ecore_ipc_server_connect(ECORE_IPC_LOCAL_SYSTEM, "ecore_ipc_test", 0, NULL); +/* server = ecore_ipc_server_connect(ECORE_IPC_REMOTE_SYSTEM, "localhost", 4567, NULL); */ + ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_ADD, handler_ipc_server_add, NULL); + ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DEL, handler_ipc_server_del, NULL); + ecore_event_handler_add(ECORE_IPC_EVENT_SERVER_DATA, handler_ipc_server_data, NULL); + printf("connect to ipc server: %p\n", server); + if (server) + { + char data[160 * 1024]; + + strcpy(data, "BLAHPANTS!"); + ecore_ipc_server_send(server, 5, 6, data, 160 * 1024); + } + } +#endif #endif #ifdef BUILD_ECORE_EVAS @@ -604,6 +725,10 @@ /* shut down ecore_evas */ ecore_evas_shutdown(); #endif +#ifdef BUILD_ECORE_IPC + /* shut down ecore_ipc */ + ecore_ipc_shutdown(); +#endif #ifdef BUILD_ECORE_CON /* shut down ecore_con */ ecore_con_shutdown(); ------------------------------------------------------- This SF.net email is sponsored by: The Definitive IT and Networking Event. Be There! NetWorld+Interop Las Vegas 2003 -- Register today! http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs