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

Reply via email to