kuuko pushed a commit to branch master.

commit db0cb8f36bb14552f9d1e448215a3ac7c5641901
Author: Kai Huuhko <[email protected]>
Date:   Fri Apr 5 16:35:21 2013 +0000

    EDBus: A new beginning.
---
 efl/edbus/edbus.pxd | 334 ++++++++++++++++++++++++++++++++++++++++++++++++----
 efl/edbus/edbus.pyx |  58 ++++-----
 efl/edbus/enums.pxd |  19 +++
 3 files changed, 357 insertions(+), 54 deletions(-)

diff --git a/efl/edbus/edbus.pxd b/efl/edbus/edbus.pxd
index 01e6fa5..2643aef 100644
--- a/efl/edbus/edbus.pxd
+++ b/efl/edbus/edbus.pxd
@@ -1,28 +1,320 @@
-from cpython cimport PyObject
 from libc.string cimport const_char
 
-from enums cimport EDBus_Connection_Type
+from enums cimport EDBus_Connection_Type, EDBus_Connection_Event_Type, \
+    EDBus_Object_Event_Type, EDBus_Proxy_Event_Type
 
-cdef extern from "dbus/dbus.h":
-    ctypedef int dbus_bool_t
-    ctypedef struct DBusConnection
-    ctypedef struct DBusServer
-
-cdef extern from "dbus/dbus-python.h":
-    ctypedef dbus_bool_t (*_dbus_py_conn_setup_func)(DBusConnection *, void *)
-    ctypedef dbus_bool_t (*_dbus_py_srv_setup_func)(DBusServer *, void *)
-    ctypedef void (*_dbus_py_free_func)(void *)
-    PyObject *DBusPyNativeMainLoop_New4(_dbus_py_conn_setup_func conn_func, 
_dbus_py_srv_setup_func srv_func, _dbus_py_free_func free_func, void *)
-    void import_dbus_bindings(const_char *this_module_name)
+cdef extern from "EDBus.h":
+    #define EDBUS_FDO_BUS "org.freedesktop.DBus"
+    #define EDBUS_FDO_PATH "/org/freedesktop/DBus"
+    #define EDBUS_FDO_INTERFACE EDBUS_FDO_BUS
+    #define EDBUS_FDO_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties"
+    #define EDBUS_FDO_INTERFACE_OBJECT_MANAGER 
"org.freedesktop.DBus.ObjectManager"
+    #define EDBUS_FDO_INTERFACE_INTROSPECTABLE 
"org.freedesktop.DBus.Introspectable"
+    #define EDBUS_FDO_INTEFACE_PEER "org.freedesktop.DBus.Peer"
+    #define EDBUS_ERROR_PENDING_CANCELED "org.enlightenment.DBus.Canceled"
 
-cdef extern from "Ecore.h":
-    int ecore_init()
-    void ecore_shutdown()
+    ctypedef struct _EDBus_Connection       EDBus_Connection
+    ctypedef struct _EDBus_Object           EDBus_Object
+    ctypedef struct _EDBus_Proxy            EDBus_Proxy
+    ctypedef struct _EDBus_Message          EDBus_Message
+    ctypedef struct _EDBus_Message_Iter     EDBus_Message_Iter
+    ctypedef struct _EDBus_Pending          EDBus_Pending
+    ctypedef struct _EDBus_Signal_Handler   EDBus_Signal_Handler
 
-cdef extern from "EDBus.h":
-    ctypedef struct EDBus_Connection
+    ctypedef void (*EDBus_Message_Cb)(void *data, const EDBus_Message *msg, 
EDBus_Pending *pending)
+    ctypedef void (*EDBus_Signal_Cb)(void *data, const EDBus_Message *msg)
 
-    EDBus_Connection 
*edbus_connection_from_dbus_connection(EDBus_Connection_Type type, void *conn)
-    void edbus_connection_unref(EDBus_Connection *conn)
     int edbus_init()
-    void edbus_shutdown()
+    int edbus_shutdown()
+
+    # edbus_connection.h
+
+    #define EDBUS_TIMEOUT_INFINITE ((int) 0x7fffffff)
+    EDBus_Connection *edbus_connection_get(EDBus_Connection_Type type)
+    EDBus_Connection *edbus_private_connection_get(EDBus_Connection_Type type)
+    EDBus_Connection *edbus_connection_ref(EDBus_Connection *conn) 
EINA_ARG_NONNULL(1)
+    void              edbus_connection_unref(EDBus_Connection *conn) 
EINA_ARG_NONNULL(1)
+    void              edbus_connection_free_cb_add(EDBus_Connection *conn, 
EDBus_Free_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    void              edbus_connection_free_cb_del(EDBus_Connection *conn, 
EDBus_Free_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    void              edbus_connection_data_set(EDBus_Connection *conn, const 
char *key, const void *data) EINA_ARG_NONNULL(1, 2, 3)
+    void             *edbus_connection_data_get(const EDBus_Connection *conn, 
const char *key) EINA_ARG_NONNULL(1, 2)
+    void             *edbus_connection_data_del(EDBus_Connection *conn, const 
char *key) EINA_ARG_NONNULL(1, 2)
+
+    ctypedef void (*EDBus_Connection_Event_Cb)(void *data, EDBus_Connection 
*conn, void *event_info)
+
+    void                  edbus_connection_event_callback_add(EDBus_Connection 
*conn, EDBus_Connection_Event_Type type, EDBus_Connection_Event_Cb cb, const 
void *cb_data) EINA_ARG_NONNULL(1, 3)
+    void                  edbus_connection_event_callback_del(EDBus_Connection 
*conn, EDBus_Connection_Event_Type type, EDBus_Connection_Event_Cb cb, const 
void *cb_data) EINA_ARG_NONNULL(1, 3)
+    EDBus_Pending *edbus_connection_send(EDBus_Connection *conn, EDBus_Message 
*msg, EDBus_Message_Cb cb, const void *cb_data, double timeout) 
EINA_ARG_NONNULL(1, 2)
+
+    # edbus_message.h
+
+    EDBus_Message        *edbus_message_ref(EDBus_Message *msg) 
EINA_ARG_NONNULL(1)
+
+    void                  edbus_message_unref(EDBus_Message *msg) 
EINA_ARG_NONNULL(1)
+    const char           *edbus_message_path_get(const EDBus_Message *msg) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_message_interface_get(const EDBus_Message 
*msg) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_message_member_get(const EDBus_Message *msg) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_message_destination_get(const EDBus_Message 
*msg) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_message_sender_get(const EDBus_Message *msg) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_message_signature_get(const EDBus_Message 
*msg) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+
+    EDBus_Message        *edbus_message_method_call_new(const char *dest, 
const char *path, const char *iface, const char *method) EINA_ARG_NONNULL(1, 2, 
3, 4) EINA_WARN_UNUSED_RESULT EINA_MALLOC
+    EDBus_Message        *edbus_message_error_new(const EDBus_Message *msg, 
const char *error_name, const char *error_msg) EINA_ARG_NONNULL(1) 
EINA_WARN_UNUSED_RESULT
+    EDBus_Message        *edbus_message_method_return_new(const EDBus_Message 
*msg) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    Eina_Bool             edbus_message_error_get(const EDBus_Message *msg, 
const char **name, const char **text) EINA_ARG_NONNULL(1)
+    Eina_Bool             edbus_message_arguments_get(const EDBus_Message 
*msg, const char *signature, ...) EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT
+    Eina_Bool             edbus_message_arguments_vget(const EDBus_Message 
*msg, const char *signature, va_list ap) EINA_ARG_NONNULL(1, 2) 
EINA_WARN_UNUSED_RESULT
+    Eina_Bool             edbus_message_arguments_append(EDBus_Message *msg, 
const char *signature, ...) EINA_ARG_NONNULL(1, 2)
+    Eina_Bool             edbus_message_arguments_vappend(EDBus_Message *msg, 
const char *signature, va_list ap) EINA_ARG_NONNULL(1, 2)
+    EDBus_Message_Iter *edbus_message_iter_container_new(EDBus_Message_Iter 
*iter, int type, const char* contained_signature) EINA_ARG_NONNULL(1, 3) 
EINA_WARN_UNUSED_RESULT
+    Eina_Bool               edbus_message_iter_basic_append(EDBus_Message_Iter 
*iter, int type, ...) EINA_ARG_NONNULL(1, 3)
+    Eina_Bool               
edbus_message_iter_arguments_append(EDBus_Message_Iter *iter, const char 
*signature, ...) EINA_ARG_NONNULL(1, 2)
+    Eina_Bool               
edbus_message_iter_arguments_vappend(EDBus_Message_Iter *iter, const char 
*signature, va_list ap) EINA_ARG_NONNULL(1, 2, 3)
+    Eina_Bool               
edbus_message_iter_container_close(EDBus_Message_Iter *iter, EDBus_Message_Iter 
*sub) EINA_ARG_NONNULL(1, 2)
+    EDBus_Message_Iter *edbus_message_iter_get(const EDBus_Message *msg) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    void                    edbus_message_iter_basic_get(EDBus_Message_Iter 
*iter, void *value) EINA_ARG_NONNULL(1, 2)
+    char                   
*edbus_message_iter_signature_get(EDBus_Message_Iter *iter) EINA_ARG_NONNULL(1) 
EINA_WARN_UNUSED_RESULT
+    Eina_Bool               edbus_message_iter_next(EDBus_Message_Iter *iter) 
EINA_ARG_NONNULL(1)
+    Eina_Bool               edbus_message_iter_get_and_next(EDBus_Message_Iter 
*iter, char type, ...) EINA_ARG_NONNULL(1, 2, 3)
+    Eina_Bool edbus_message_iter_fixed_array_get(EDBus_Message_Iter *iter, int 
signature, void *value, int *n_elements) EINA_ARG_NONNULL(1, 3, 4)
+    Eina_Bool               
edbus_message_iter_arguments_get(EDBus_Message_Iter *iter, const char 
*signature, ...) EINA_ARG_NONNULL(1, 2)
+    Eina_Bool               
edbus_message_iter_arguments_vget(EDBus_Message_Iter *iter, const char 
*signature, va_list ap) EINA_ARG_NONNULL(1, 2)
+    void                  edbus_message_iter_del(EDBus_Message_Iter *iter) 
EINA_ARG_NONNULL(1)
+
+    # edbus_message_helper.h
+
+    ctypedef void (*EDBus_Dict_Cb_Get)(void *data, const void *key, 
EDBus_Message_Iter *var)
+    void edbus_message_iter_dict_iterate(EDBus_Message_Iter *dict, const char 
*signature, EDBus_Dict_Cb_Get cb, const void *data) EINA_ARG_NONNULL(1, 2, 3)
+
+    # edbus_message_eina_value.h
+
+    Eina_Value *edbus_message_to_eina_value(const EDBus_Message *msg) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    Eina_Value *edbus_message_iter_struct_like_to_eina_value(const 
EDBus_Message_Iter *iter)
+    Eina_Bool edbus_message_from_eina_value(const char *signature, 
EDBus_Message *msg, const Eina_Value *value) EINA_ARG_NONNULL(1, 2, 3)
+
+    # edbus_signal_handler.h
+
+    EDBus_Signal_Handler *edbus_signal_handler_add(EDBus_Connection *conn, 
const char *sender, const char *path, const char *interface, const char 
*member, EDBus_Signal_Cb cb, const void *cb_data) EINA_ARG_NONNULL(1, 6)
+    EDBus_Signal_Handler *edbus_signal_handler_ref(EDBus_Signal_Handler 
*handler) EINA_ARG_NONNULL(1)
+    void                  edbus_signal_handler_unref(EDBus_Signal_Handler 
*handler) EINA_ARG_NONNULL(1)
+    void                  edbus_signal_handler_del(EDBus_Signal_Handler 
*handler) EINA_ARG_NONNULL(1)
+    Eina_Bool             
edbus_signal_handler_match_extra_set(EDBus_Signal_Handler *sh, ...) 
EINA_ARG_NONNULL(1) EINA_SENTINEL
+    Eina_Bool             
edbus_signal_handler_match_extra_vset(EDBus_Signal_Handler *sh, va_list ap) 
EINA_ARG_NONNULL(1)
+    void                  
edbus_signal_handler_free_cb_add(EDBus_Signal_Handler *handler, EDBus_Free_Cb 
cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    void                  
edbus_signal_handler_free_cb_del(EDBus_Signal_Handler *handler, EDBus_Free_Cb 
cb, const void *data) EINA_ARG_NONNULL(1, 2)
+
+    const char           *edbus_signal_handler_sender_get(const 
EDBus_Signal_Handler *handler) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_signal_handler_path_get(const 
EDBus_Signal_Handler *handler) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_signal_handler_interface_get(const 
EDBus_Signal_Handler *handler) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_signal_handler_member_get(const 
EDBus_Signal_Handler *handler) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_signal_handler_match_get(const 
EDBus_Signal_Handler *handler) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+
+    EDBus_Connection     *edbus_signal_handler_connection_get(const 
EDBus_Signal_Handler *handler) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+
+    # edbus_pending.h
+
+    void                  edbus_pending_data_set(EDBus_Pending *pending, const 
char *key, const void *data) EINA_ARG_NONNULL(1, 2, 3)
+    void                 *edbus_pending_data_get(const EDBus_Pending *pending, 
const char *key) EINA_ARG_NONNULL(1, 2)
+    void                 *edbus_pending_data_del(EDBus_Pending *pending, const 
char *key) EINA_ARG_NONNULL(1, 2)
+    void                  edbus_pending_cancel(EDBus_Pending *pending) 
EINA_ARG_NONNULL(1)
+
+    const char           *edbus_pending_destination_get(const EDBus_Pending 
*pending) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_pending_path_get(const EDBus_Pending *pending) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_pending_interface_get(const EDBus_Pending 
*pending) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_pending_method_get(const EDBus_Pending 
*pending) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+
+    void                  edbus_pending_free_cb_add(EDBus_Pending *pending, 
EDBus_Free_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    void                  edbus_pending_free_cb_del(EDBus_Pending *pending, 
EDBus_Free_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+
+    # edbus_object.h
+
+    EDBus_Object *edbus_object_get(EDBus_Connection *conn, const char *bus, 
const char *path) EINA_ARG_NONNULL(1, 2, 3) EINA_WARN_UNUSED_RESULT
+
+    EDBus_Object *edbus_object_ref(EDBus_Object *obj) EINA_ARG_NONNULL(1)
+    void          edbus_object_unref(EDBus_Object *obj) EINA_ARG_NONNULL(1)
+    void          edbus_object_free_cb_add(EDBus_Object *obj, EDBus_Free_Cb 
cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    void          edbus_object_free_cb_del(EDBus_Object *obj, EDBus_Free_Cb 
cb, const void *data) EINA_ARG_NONNULL(1, 2)
+
+    ctypedef struct EDBus_Object_Event_Interface_Added:
+        const char  *interface;
+        EDBus_Proxy *proxy;
+
+    ctypedef struct EDBus_Object_Event_Interface_Removed:
+        const char *interface;
+
+    ctypedef struct EDBus_Object_Event_Property_Changed:
+        const char       *interface
+        EDBus_Proxy      *proxy
+        const char       *name
+        const Eina_Value *value
+
+    ctypedef struct EDBus_Object_Event_Property_Removed:
+        const char  *interface
+        EDBus_Proxy *proxy
+        const char  *name
+
+    ctypedef void (*EDBus_Object_Event_Cb)(void *data, EDBus_Object *obj, void 
*event_info)
+
+    void                  edbus_object_event_callback_add(EDBus_Object *obj, 
EDBus_Object_Event_Type type, EDBus_Object_Event_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 3)
+    void                  edbus_object_event_callback_del(EDBus_Object *obj, 
EDBus_Object_Event_Type type, EDBus_Object_Event_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 3)
+
+    EDBus_Connection     *edbus_object_connection_get(const EDBus_Object *obj) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_object_bus_name_get(const EDBus_Object *obj) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_object_path_get(const EDBus_Object *obj) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    EDBus_Pending        *edbus_object_send(EDBus_Object *obj, EDBus_Message 
*msg, EDBus_Message_Cb cb, const void *cb_data, double timeout) 
EINA_ARG_NONNULL(1, 2)
+    EDBus_Signal_Handler *edbus_object_signal_handler_add(EDBus_Object *obj, 
const char *interface, const char *member, EDBus_Signal_Cb cb, const void 
*cb_data) EINA_ARG_NONNULL(1, 4)
+    EDBus_Message *edbus_object_method_call_new(EDBus_Object *obj, const char 
*interface, const char *member) EINA_ARG_NONNULL(1, 2, 3) 
EINA_WARN_UNUSED_RESULT
+
+    # edbus_proxy.h
+
+    EDBus_Proxy          *edbus_proxy_get(EDBus_Object *obj, const char 
*interface) EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT
+    EDBus_Proxy          *edbus_proxy_ref(EDBus_Proxy *proxy) 
EINA_ARG_NONNULL(1)
+    void                  edbus_proxy_unref(EDBus_Proxy *proxy) 
EINA_ARG_NONNULL(1)
+
+    EDBus_Object         *edbus_proxy_object_get(const EDBus_Proxy *proxy) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char           *edbus_proxy_interface_get(const EDBus_Proxy *proxy) 
EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+
+    void                  edbus_proxy_data_set(EDBus_Proxy *proxy, const char 
*key, const void *data) EINA_ARG_NONNULL(1, 2, 3)
+    void                 *edbus_proxy_data_get(const EDBus_Proxy *proxy, const 
char *key) EINA_ARG_NONNULL(1, 2)
+    void                 *edbus_proxy_data_del(EDBus_Proxy *proxy, const char 
*key) EINA_ARG_NONNULL(1, 2)
+    void                  edbus_proxy_free_cb_add(EDBus_Proxy *proxy, 
EDBus_Free_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    void                  edbus_proxy_free_cb_del(EDBus_Proxy *proxy, 
EDBus_Free_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    EDBus_Message        *edbus_proxy_method_call_new(EDBus_Proxy *proxy, 
const char *member) EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT
+    EDBus_Pending        *edbus_proxy_send(EDBus_Proxy *proxy, EDBus_Message 
*msg, EDBus_Message_Cb cb, const void *cb_data, double timeout) 
EINA_ARG_NONNULL(1, 2)
+    EDBus_Pending        *edbus_proxy_call(EDBus_Proxy *proxy, const char 
*member, EDBus_Message_Cb cb, const void *cb_data, double timeout, const char 
*signature, ...) EINA_ARG_NONNULL(1, 2, 6)
+    EDBus_Pending        *edbus_proxy_vcall(EDBus_Proxy *proxy, const char 
*member, EDBus_Message_Cb cb, const void *cb_data, double timeout, const char 
*signature, va_list ap) EINA_ARG_NONNULL(1, 2, 6)
+
+    EDBus_Signal_Handler *edbus_proxy_signal_handler_add(EDBus_Proxy *proxy, 
const char *member, EDBus_Signal_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 3)
+
+    ctypedef struct EDBus_Proxy_Event_Property_Changed:
+        const char       *name;
+        const EDBus_Proxy *proxy;
+        const Eina_Value *value;
+
+    ctypedef struct EDBus_Proxy_Event_Property_Removed:
+        const char  *interface
+        const EDBus_Proxy *proxy
+        const char  *name
+
+    ctypedef void (*EDBus_Proxy_Event_Cb)(void *data, EDBus_Proxy *proxy, void 
*event_info)
+
+    void edbus_proxy_event_callback_add(EDBus_Proxy *proxy, 
EDBus_Proxy_Event_Type type, EDBus_Proxy_Event_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 3)
+    void edbus_proxy_event_callback_del(EDBus_Proxy *proxy, 
EDBus_Proxy_Event_Type type, EDBus_Proxy_Event_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 3)
+
+    # edbus_freedesktop.h
+
+    #define EDBUS_NAME_REQUEST_FLAG_ALLOW_REPLACEMENT 0x1 /**< Allow another 
service to become the primary owner if requested */
+    #define EDBUS_NAME_REQUEST_FLAG_REPLACE_EXISTING  0x2 /**< Request to 
replace the current primary owner */
+    #define EDBUS_NAME_REQUEST_FLAG_DO_NOT_QUEUE      0x4 /**< If we can not 
become the primary owner do not place us in the queue */
+
+    # Replies to request for a name */
+    #define EDBUS_NAME_REQUEST_REPLY_PRIMARY_OWNER    1 /**< Service has 
become the primary owner of the requested name */
+    #define EDBUS_NAME_REQUEST_REPLY_IN_QUEUE         2 /**< Service could not 
become the primary owner and has been placed in the queue */
+    #define EDBUS_NAME_REQUEST_REPLY_EXISTS           3 /**< Service is 
already in the queue */
+    #define EDBUS_NAME_REQUEST_REPLY_ALREADY_OWNER    4 /**< Service is 
already the primary owner */
+
+    EDBus_Pending *edbus_name_request(EDBus_Connection *conn, const char *bus, 
unsigned int flags, EDBus_Message_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 2)
+
+    # Replies to releasing a name */
+    #define EDBUS_NAME_RELEASE_REPLY_RELEASED     1    /**< Service was 
released from the given name */
+    #define EDBUS_NAME_RELEASE_REPLY_NON_EXISTENT 2    /**< The given name 
does not exist on the bus */
+    #define EDBUS_NAME_RELEASE_REPLY_NOT_OWNER    3    /**< Service is not an 
owner of the given name */
+
+    EDBus_Pending *edbus_name_release(EDBus_Connection *conn, const char *bus, 
EDBus_Message_Cb cb, const void *cb_data) EINA_ARG_NONNULL(1, 2)
+    EDBus_Pending *edbus_name_owner_get(EDBus_Connection *conn, const char 
*bus, EDBus_Message_Cb cb, const void *cb_data) EINA_ARG_NONNULL(1, 2)
+    EDBus_Pending *edbus_name_owner_has(EDBus_Connection *conn, const char 
*bus, EDBus_Message_Cb cb, const void *cb_data)
+    EDBus_Pending *edbus_names_list(EDBus_Connection *conn, EDBus_Message_Cb 
cb, const void *cb_data) EINA_ARG_NONNULL(1)
+    EDBus_Pending *edbus_names_activatable_list(EDBus_Connection *conn, 
EDBus_Message_Cb cb, const void *cb_data) EINA_ARG_NONNULL(1)
+
+    # Replies to service starts */
+    #define EDBUS_NAME_START_REPLY_SUCCESS         1 /**< Service was auto 
started */
+    #define EDBUS_NAME_START_REPLY_ALREADY_RUNNING 2 /**< Service was already 
running */
+
+    EDBus_Pending        *edbus_name_start(EDBus_Connection *conn, const char 
*bus, unsigned int flags, EDBus_Message_Cb cb, const void *cb_data) 
EINA_ARG_NONNULL(1, 2)
+
+    ctypedef void (*EDBus_Name_Owner_Changed_Cb)(void *data, const char *bus, 
const char *old_id, const char *new_id)
+
+    void                  
edbus_name_owner_changed_callback_add(EDBus_Connection *conn, const char *bus, 
EDBus_Name_Owner_Changed_Cb cb, const void *cb_data, Eina_Bool 
allow_initial_call) EINA_ARG_NONNULL(1, 2, 3)
+    void                  
edbus_name_owner_changed_callback_del(EDBus_Connection *conn, const char *bus, 
EDBus_Name_Owner_Changed_Cb cb, const void *cb_data) EINA_ARG_NONNULL(1, 2, 3)
+    EDBus_Pending        *edbus_object_peer_ping(EDBus_Object *obj, 
EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    EDBus_Pending        *edbus_object_peer_machine_id_get(EDBus_Object *obj, 
EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    EDBus_Pending        *edbus_object_introspect(EDBus_Object *obj, 
EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+
+    void edbus_proxy_properties_monitor(EDBus_Proxy *proxy, Eina_Bool enable) 
EINA_ARG_NONNULL(1)
+
+    EDBus_Pending        *edbus_proxy_property_get(EDBus_Proxy *proxy, const 
char *name, EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2, 3)
+    EDBus_Pending        *edbus_proxy_property_set(EDBus_Proxy *proxy, const 
char *name, const char *sig, const void *value, EDBus_Message_Cb cb, const void 
*data) EINA_ARG_NONNULL(1, 2, 3, 4)
+    EDBus_Pending        *edbus_proxy_property_get_all(EDBus_Proxy *proxy, 
EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+    EDBus_Signal_Handler 
*edbus_proxy_properties_changed_callback_add(EDBus_Proxy *proxy, 
EDBus_Signal_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+
+    Eina_Value           *edbus_proxy_property_local_get(EDBus_Proxy *proxy, 
const char *name) EINA_ARG_NONNULL(1, 2)
+    const Eina_Hash      *edbus_proxy_property_local_get_all(EDBus_Proxy 
*proxy) EINA_ARG_NONNULL(1)
+    EDBus_Pending        *edbus_object_managed_objects_get(EDBus_Object *obj, 
EDBus_Message_Cb cb, const void *data) EINA_ARG_NONNULL(1, 2)
+
+    # edbus_service.h
+
+    #define EDBUS_METHOD_FLAG_DEPRECATED 1
+    #define EDBUS_METHOD_FLAG_NOREPLY (1 << 1)
+
+    #define EDBUS_SIGNAL_FLAG_DEPRECATED 1
+
+    #define EDBUS_PROPERTY_FLAG_DEPRECATED 1
+
+    ctypedef struct EDBus_Arg_Info:
+        const char *signature
+        const char *name
+
+    #define EDBUS_ARGS(args...) (const EDBus_Arg_Info[]){ args, { NULL, NULL } 
}
+
+    ctypedef struct _EDBus_Service_Interface EDBus_Service_Interface
+    ctypedef EDBus_Message * (*EDBus_Method_Cb)(const EDBus_Service_Interface 
*iface, const EDBus_Message *message)
+
+    ctypedef Eina_Bool (*EDBus_Property_Get_Cb)(const EDBus_Service_Interface 
*iface, const char *propname, EDBus_Message_Iter *iter, const EDBus_Message 
*request_msg, EDBus_Message **error)
+
+    ctypedef EDBus_Message *(*EDBus_Property_Set_Cb)(const 
EDBus_Service_Interface *iface, const char *propname, EDBus_Message_Iter *iter, 
const EDBus_Message *input_msg)
+
+    ctypedef struct EDBus_Method:
+        const char *member
+        const EDBus_Arg_Info *in
+        const EDBus_Arg_Info *out
+        EDBus_Method_Cb cb
+        unsigned int flags
+
+    ctypedef struct EDBus_Signal:
+        const char *name
+        const EDBus_Arg_Info *args
+        unsigned int flags
+
+    ctypedef struct EDBus_Property:
+        const char *name
+        const char *type
+        EDBus_Property_Get_Cb get_func
+        EDBus_Property_Set_Cb set_func
+        unsigned int flags
+
+    ctypedef struct EDBus_Service_Interface_Desc:
+        const char *interface #  interface name
+        const EDBus_Method *methods #  array of the methods that should be 
registered in this interface, the last item of array should be filled with NULL
+        const EDBus_Signal *signals #  array of signal that this interface 
send, the last item of array should be filled with NULL
+        const EDBus_Property *properties #  array of property that this 
interface have, the last item of array should be filled with NULL
+        const EDBus_Property_Get_Cb default_get #  default get function, if a 
property don't have a get function this will be used
+        const EDBus_Property_Set_Cb default_set #  default set function, if a 
property don't have a set function this will be used
+
+    EDBus_Service_Interface *edbus_service_interface_register(EDBus_Connection 
*conn, const char *path, const EDBus_Service_Interface_Desc *desc) 
EINA_ARG_NONNULL(1, 2, 3)
+    void edbus_service_interface_unregister(EDBus_Service_Interface *iface) 
EINA_ARG_NONNULL(1)
+    void edbus_service_object_unregister(EDBus_Service_Interface *iface) 
EINA_ARG_NONNULL(1)
+    EDBus_Connection *edbus_service_connection_get(const 
EDBus_Service_Interface *iface) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    const char *edbus_service_object_path_get(const EDBus_Service_Interface 
*iface) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+
+    Eina_Bool edbus_service_signal_emit(const EDBus_Service_Interface *iface, 
unsigned int signal_id, ...) EINA_ARG_NONNULL(1)
+    EDBus_Message *edbus_service_signal_new(const EDBus_Service_Interface 
*iface, unsigned int signal_id) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT
+    Eina_Bool edbus_service_signal_send(const EDBus_Service_Interface *iface, 
EDBus_Message *signal_msg) EINA_ARG_NONNULL(1, 2)
+    void edbus_service_object_data_set(EDBus_Service_Interface *iface, const 
char *key, const void *data) EINA_ARG_NONNULL(1, 2, 3)
+    void *edbus_service_object_data_get(const EDBus_Service_Interface *iface, 
const char *key) EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT
+    void *edbus_service_object_data_del(EDBus_Service_Interface *iface, const 
char *key) EINA_ARG_NONNULL(1, 2)
+
+    Eina_Bool edbus_service_property_changed(const EDBus_Service_Interface 
*iface, const char *name) EINA_ARG_NONNULL(1, 2)
+
+    Eina_Bool edbus_service_property_invalidate_set(const 
EDBus_Service_Interface *iface, const char *name, Eina_Bool is_invalidate) 
EINA_ARG_NONNULL(1, 2)
+    Eina_Bool edbus_service_object_manager_attach(EDBus_Service_Interface 
*iface) EINA_ARG_NONNULL(1)
+    Eina_Bool edbus_service_object_manager_detach(EDBus_Service_Interface 
*iface) EINA_ARG_NONNULL(1)
diff --git a/efl/edbus/edbus.pyx b/efl/edbus/edbus.pyx
index c9d4556..6b50376 100644
--- a/efl/edbus/edbus.pyx
+++ b/efl/edbus/edbus.pyx
@@ -1,6 +1,28 @@
-
-"""D-Bus python integration for Ecore main loop."""
-
+# Copyright (C) 2007-2013 various contributors (see AUTHORS)
+#
+# This file is part of Python-EFL.
+#
+# Python-EFL is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# Python-EFL is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this Python-EFL.  If not, see <http://www.gnu.org/licenses/>.
+
+"""
+
+EDBus is a wrapper around the
+`dbus <http://www.freedesktop.org/wiki/Software/dbus>`_
+library, which is a message bus system. It also implements a set of
+specifications using dbus as interprocess communication.
+
+"""
 cimport enums
 
 EDBUS_CONNECTION_TYPE_UNKNOWN = enums.EDBUS_CONNECTION_TYPE_UNKNOWN
@@ -9,39 +31,9 @@ EDBUS_CONNECTION_TYPE_SYSTEM = 
enums.EDBUS_CONNECTION_TYPE_SYSTEM
 EDBUS_CONNECTION_TYPE_STARTER = enums.EDBUS_CONNECTION_TYPE_STARTER
 EDBUS_CONNECTION_TYPE_LAST = enums.EDBUS_CONNECTION_TYPE_LAST
 
-import dbus
-import dbus.mainloop
-import atexit
-
-import_dbus_bindings("edbus")
-
 def module_cleanup():
     edbus_shutdown()
-    ecore_shutdown()
 
-ecore_init()
 edbus_init()
 atexit.register(module_cleanup)
 
-cdef dbus_bool_t dbus_py_ecore_setup_conn(DBusConnection *conn, void* data):
-    cdef EDBus_Connection_Type ctype = enums.EDBUS_CONNECTION_TYPE_SESSION
-    edbus_connection_from_dbus_connection(ctype, <void *>conn)
-    return True
-
-cdef object dbus_ecore_native_mainloop():
-    cdef PyObject *ml = DBusPyNativeMainLoop_New4(dbus_py_ecore_setup_conn, 
NULL, NULL, NULL)
-    return <object>ml
-
-def DBusEcoreMainLoop(set_as_default=False):
-    """Returns a NativeMainLoop to attach the Ecore main loop to D-Bus from
-    within Python."""
-
-    ml = dbus_ecore_native_mainloop()
-
-    if ml is not None:
-        if set_as_default:
-            dbus.set_default_main_loop(ml)
-    else:
-        raise RuntimeError("Could not get a main loop object.")
-
-    return ml
diff --git a/efl/edbus/enums.pxd b/efl/edbus/enums.pxd
index 23bf091..5fa17e4 100644
--- a/efl/edbus/enums.pxd
+++ b/efl/edbus/enums.pxd
@@ -5,3 +5,22 @@ cdef extern from "EDBus.h":
         EDBUS_CONNECTION_TYPE_SYSTEM
         EDBUS_CONNECTION_TYPE_STARTER
         EDBUS_CONNECTION_TYPE_LAST
+
+    ctypedef enum EDBus_Connection_Event_Type:
+        EDBUS_CONNECTION_EVENT_DEL
+        EDBUS_CONNECTION_EVENT_DISCONNECTED
+        EDBUS_CONNECTION_EVENT_LAST    # sentinel, not a real event type
+
+    ctypedef enum EDBus_Object_Event_Type:
+        EDBUS_OBJECT_EVENT_IFACE_ADDED # a parent path must have a 
ObjectManager interface
+        EDBUS_OBJECT_EVENT_IFACE_REMOVED # a parent path must have a 
ObjectManager interface
+        EDBUS_OBJECT_EVENT_PROPERTY_CHANGED
+        EDBUS_OBJECT_EVENT_PROPERTY_REMOVED
+        EDBUS_OBJECT_EVENT_DEL
+        EDBUS_OBJECT_EVENT_LAST    # sentinel, not a real event type
+
+    ctypedef enum EDBus_Proxy_Event_Type:
+        EDBUS_PROXY_EVENT_PROPERTY_CHANGED
+        EDBUS_PROXY_EVENT_PROPERTY_REMOVED
+        EDBUS_PROXY_EVENT_DEL
+        EDBUS_PROXY_EVENT_LAST    # sentinel, not a real event type

-- 

------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html

Reply via email to