Enlightenment CVS committal Author : rephorm Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_dbus Modified Files: Ecore_DBus.h Makefile.am ecore_dbus.c ecore_dbus_message.c ecore_dbus_private.h ecore_dbus_unmarshal.c Log Message: add simple object/method creation API =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/Ecore_DBus.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- Ecore_DBus.h 25 Sep 2006 05:30:48 -0000 1.18 +++ Ecore_DBus.h 27 Sep 2006 00:00:59 -0000 1.19 @@ -46,6 +46,33 @@ typedef struct _Ecore_DBus_Message_Field Ecore_DBus_Message_Field; typedef struct _Ecore_DBus_Address Ecore_DBus_Address; + typedef void (*Ecore_DBus_Method_Call_Cb) (Ecore_DBus_Event_Method_Call *event); + + typedef struct _Ecore_DBus_Object Ecore_DBus_Object; + typedef struct _Ecore_DBus_Object_Method Ecore_DBus_Object_Method; + typedef struct _Ecore_DBus_Object_Registry Ecore_DBus_Object_Registry; + + struct _Ecore_DBus_Object + { + Ecore_DBus_Server *server; + char *path; /* dbus path name */ + Ecore_List *methods; + }; + + struct _Ecore_DBus_Object_Method + { + Ecore_DBus_Object *object; + char *interface; + char *name; + + Ecore_DBus_Method_Call_Cb func; + }; + struct _Ecore_DBus_Object_Registry + { + Ecore_Hash *objects; + }; + + typedef enum _Ecore_DBus_Message_Type { ECORE_DBUS_MESSAGE_TYPE_INVALID, @@ -216,6 +243,14 @@ EAPI void ecore_dbus_print_address_list(Ecore_List *addresses); EAPI Ecore_DBus_Server *ecore_dbus_address_list_connect(Ecore_List *addrs, const void *data); EAPI Ecore_DBus_Server *ecore_dbus_address_connect(Ecore_DBus_Address *addr, const void *data); + + /* object */ + EAPI Ecore_DBus_Object *ecore_dbus_object_add(Ecore_DBus_Server *svr, const char *path); + EAPI void ecore_dbus_object_free(Ecore_DBus_Object *obj); + + EAPI Ecore_DBus_Object_Method *ecore_dbus_object_method_add(Ecore_DBus_Object *obj, const char *interface, const char *method_name, Ecore_DBus_Method_Call_Cb func); + EAPI void ecore_dbus_object_method_remove(Ecore_DBus_Object *obj, Ecore_DBus_Object_Method *method); + EAPI void ecore_dbus_object_method_free(Ecore_DBus_Object_Method *method); #ifdef __cplusplus } =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/Makefile.am,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- Makefile.am 24 Sep 2006 07:24:52 -0000 1.7 +++ Makefile.am 27 Sep 2006 00:00:59 -0000 1.8 @@ -27,6 +27,7 @@ ecore_dbus_methods.c \ ecore_dbus_utils.c \ ecore_dbus_address.c \ +ecore_dbus_object.c \ ecore_dbus_private.h libecore_dbus_la_LIBADD = \ =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- ecore_dbus.c 25 Sep 2006 01:53:47 -0000 1.25 +++ ecore_dbus.c 27 Sep 2006 00:00:59 -0000 1.26 @@ -105,6 +105,7 @@ handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, _ecore_dbus_event_server_data, NULL); + ecore_dbus_objects_init(); return init_count; } @@ -115,6 +116,7 @@ if (--init_count != 0) return init_count; + ecore_dbus_objects_shutdown(); /* FIXME: Delete servers */ for (i = 0; i < 3; i++) @@ -231,6 +233,9 @@ svr->auth_type_transaction = 0; svr->messages = ecore_hash_new(ecore_direct_hash, ecore_direct_compare); ecore_hash_set_free_value(svr->messages, ECORE_FREE_CB(_ecore_dbus_message_free)); + svr->objects = ecore_hash_new(ecore_str_hash, ecore_str_compare); + ecore_hash_set_free_key(svr->objects, free); + ecore_hash_set_free_value(svr->objects, ECORE_FREE_CB(ecore_dbus_object_free)); servers = _ecore_list2_append(servers, svr); return svr; @@ -243,6 +248,7 @@ servers = _ecore_list2_remove(servers, svr); if (svr->unique_name) free(svr->unique_name); ecore_hash_destroy(svr->messages); + ecore_hash_destroy(svr->objects); free(svr); } =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_message.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- ecore_dbus_message.c 24 Sep 2006 07:24:52 -0000 1.9 +++ ecore_dbus_message.c 27 Sep 2006 00:00:59 -0000 1.10 @@ -298,6 +298,12 @@ return NULL; } +EAPI int +ecore_dbus_message_serial_get(Ecore_DBus_Message *m) +{ + return m->serial; +} + /* message functions */ Ecore_DBus_Message * =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_private.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ecore_dbus_private.h 24 Sep 2006 07:24:52 -0000 1.13 +++ ecore_dbus_private.h 27 Sep 2006 00:00:59 -0000 1.14 @@ -67,6 +67,8 @@ int cnt_msg; Ecore_Hash *messages; + Ecore_Hash *objects; + char *unique_name; }; @@ -286,6 +288,9 @@ Ecore_DBus_Message_Field *_ecore_dbus_message_unmarshal_custom_header(unsigned char *buf, unsigned int *old_length); */ Ecore_DBus_Message *_ecore_dbus_message_unmarshal(Ecore_DBus_Server *svr, unsigned char *message, int size); + + +int ecore_dbus_object_method_dispatch(Ecore_DBus_Server *server, const char *path, const char *interface, const char *method); /* Errors */ #define DBUS_ERROR_FAILED "org.freedesktop.DBus.Error.Failed" =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_dbus/ecore_dbus_unmarshal.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_dbus_unmarshal.c 27 Jul 2006 13:29:44 -0000 1.6 +++ ecore_dbus_unmarshal.c 27 Sep 2006 00:00:59 -0000 1.7 @@ -384,7 +384,7 @@ _ecore_dbus_message_append_bytes(msg, message, size); msg->length = 12; size -= 12; - /* Parse custom header */ + /* Parse header fields */ if (!(arr = _ecore_dbus_message_unmarshal_array_begin(msg, ECORE_DBUS_DATA_TYPE_STRUCT, &size))) { printf("Could not parse custom header.\n"); @@ -461,10 +461,10 @@ case ECORE_DBUS_DATA_TYPE_DICT_ENTRY: case ECORE_DBUS_DATA_TYPE_DICT_ENTRY_BEGIN: case ECORE_DBUS_DATA_TYPE_DICT_ENTRY_END: -#if 0 + printf("[ecore_dbus] unhandled data type %c\n", type); + break; default: -#endif - printf("[ecore_dbus] unknown/unhandled data type %c\n", type); + printf("[ecore_dbus] unknown data type %c\n", type); break; } sig++; ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs