#include <easydbus/elem.h>
#include <easydbus/variant.h>
#include <easydbus/dict_entry.h>
#include <easydbus/skeleton.h>
#include <easydbus/array.h>
#include <easydbus/struct.h>
#include <easydbus/monitor.h>
Go to the source code of this file.
typedef struct EasyDbus_conn EasyDbus_conn |
Definition at line 125 of file easydbus.h.
typedef struct EasyDbus_container EasyDbus_container |
Definition at line 126 of file easydbus.h.
typedef struct EasyDbus_elem EasyDbus_elem |
Definition at line 127 of file easydbus.h.
typedef void(* easydbus_error_message_cb_f)(EasyDbus_conn *, const EasyDbus_reply *, void *) |
Definition at line 138 of file easydbus.h.
typedef struct EasyDbus_method EasyDbus_method |
Definition at line 130 of file easydbus.h.
typedef void(* easydbus_method_async_reply_cb_f)(EasyDbus_conn *, EasyDbus_method *, void *) |
Definition at line 132 of file easydbus.h.
typedef struct EasyDbus_reply EasyDbus_reply |
Definition at line 129 of file easydbus.h.
typedef void(* easydbus_reply_async_cb_f)(EasyDbus_conn *, EasyDbus_method *, void *) |
Definition at line 135 of file easydbus.h.
typedef void(* easydbus_reply_message_cb_f)(EasyDbus_conn *, const EasyDbus_method *, void *) |
Definition at line 142 of file easydbus.h.
typedef struct EasyDbus_signal EasyDbus_signal |
Definition at line 128 of file easydbus.h.
enum easydbus_bus |
EASYDBUS_INVALID | |
EASYDBUS_SESSION | |
EASYDBUS_SYSTEM | |
EASYDBUS_SESSION_SERVER | |
EASYDBUS_SYSTEM_SERVER | |
EASYDBUS_LOCAL |
Definition at line 67 of file easydbus.h.
00067 { 00068 EASYDBUS_INVALID, 00069 EASYDBUS_SESSION, 00070 EASYDBUS_SYSTEM, 00071 EASYDBUS_SESSION_SERVER, 00072 EASYDBUS_SYSTEM_SERVER, 00073 EASYDBUS_LOCAL 00074 };
Definition at line 84 of file easydbus.h.
00084 { 00085 EASYDBUS_CONN_DEFAULT = 0, 00086 EASYDBUS_CONN_PRIVATE = 1, 00087 // dbus flags binding 00088 EASYDBUS_CONN_ALLOW_REPLACEMENT = 2, 00089 EASYDBUS_CONN_REPLACE_EXISTING = 4, 00090 EASYDBUS_CONN_DO_NOT_QUEUE = 8, 00091 // this flag permit to renamed service 00092 // to "name_service"+n--> "name_service1", "name_service2", etc. 00093 // if also EASYDBUS_CONN_DO_NOT_QUEUE is used. 00094 EASYDBUS_CONN_NAME_SERVICE_RENAMED = 16, 00095 // connection status 00096 EASYDBUS_CONN_NAME_SERVICE_EXISTS = 32, 00097 EASYDBUS_CONN_NAME_SERVICE_IN_QUEUE = 64, 00098 EASYDBUS_CONN_NAME_SERVICE_PRIMARY = 128, 00099 // enable setting dbus unique name (under testing, seems create a memory leak) 00100 EASYDBUS_CONN_NAME_UNIQUE = 256 00101 };
enum easydbus_ret_values |
Definition at line 103 of file easydbus.h.
00103 { 00104 EASYDBUS_SIGNAL_HANDLED, 00105 EASYDBUS_SIGNAL_NOT_HANDLED, 00106 EASYDBUS_SIGNAL_MSG_NULL, 00107 EASYDBUS_SIGNAL_SENT, 00108 EASYDBUS_SIGNAL_NOT_SENT, 00109 EASYDBUS_SIGNAL_NOT_FOUND, // for manage signal that 00110 // aren't present 00111 EASYDBUS_METHOD_NOT_SENT, 00112 EASYDBUS_METHOD_SENT, 00113 EASYDBUS_METHOD_HANDLED, 00114 EASYDBUS_METHOD_NOT_HANDLED, 00115 EASYDBUS_METHOD_MSG_NULL, 00116 EASYDBUS_METHOD_NOT_FOUND, // for manage call on method 00117 // that aren't present 00118 EASYDBUS_FAILURE_HANDLED, 00119 EASYDBUS_METHOD_RETURN_HANDLED, 00120 EASYDBUS_NEED_MEMORY, 00121 EASYDBUS_ERROR 00122 };
EASYDBUS_WATCHER_INVALID | |
EASYDBUS_WATCHER_WRITABLE | |
EASYDBUS_WATCHER_READABLE | |
EASYDBUS_WATCHER_ERROR | |
EASYDBUS_WATCHER_HANGUP |
Definition at line 76 of file easydbus.h.
00076 { 00077 EASYDBUS_WATCHER_INVALID = 0, 00078 EASYDBUS_WATCHER_WRITABLE = 1, 00079 EASYDBUS_WATCHER_READABLE = 2, 00080 EASYDBUS_WATCHER_ERROR = 4, 00081 EASYDBUS_WATCHER_HANGUP = 8 00082 };
enum el_type |
Definition at line 38 of file easydbus.h.
00038 { 00039 EASYDBUS_ELTYPE_INVALID, 00040 EASYDBUS_ELTYPE_STRING, 00041 EASYDBUS_ELTYPE_ARRAY, 00042 EASYDBUS_ELTYPE_BYTE, 00043 EASYDBUS_ELTYPE_BOOLEAN, 00044 EASYDBUS_ELTYPE_DOUBLE, 00045 EASYDBUS_ELTYPE_INT16, 00046 EASYDBUS_ELTYPE_UINT16, 00047 EASYDBUS_ELTYPE_INT32, 00048 EASYDBUS_ELTYPE_UINT32, 00049 EASYDBUS_ELTYPE_INT64, 00050 EASYDBUS_ELTYPE_UINT64, 00051 EASYDBUS_ELTYPE_OBJECT_PATH, 00052 EASYDBUS_ELTYPE_SIGNATURE, 00053 EASYDBUS_ELTYPE_STRUCT, 00054 EASYDBUS_ELTYPE_VARIANT, 00055 EASYDBUS_ELTYPE_DICT_ENTRY /* dict entry are only 00056 valids on arrays. */ 00057 };
enum event_type |
EASYDBUS_ET_INVALID | |
EASYDBUS_ET_METHOD | |
EASYDBUS_ET_SIGNAL | |
EASYDBUS_ET_REPLY | |
EASYDBUS_ET_FAILURE |
Definition at line 59 of file easydbus.h.
00059 { 00060 EASYDBUS_ET_INVALID, 00061 EASYDBUS_ET_METHOD, 00062 EASYDBUS_ET_SIGNAL, 00063 EASYDBUS_ET_REPLY, 00064 EASYDBUS_ET_FAILURE, 00065 };
void* easydbus_conn_get_closure | ( | EasyDbus_conn * | c | ) |
Get closure of EasyDbus_conn object.
c | EasyDbus_conn object pointer |
Definition at line 380 of file acquire.c.
References EasyDbus_conn::closure.
00381 { 00382 return (c ? c->closure : NULL); 00383 }
int easydbus_conn_reconnect | ( | EasyDbus_conn * | conn, | |
int | sleep_time | |||
) |
Try to reconnect to DBus through previous data.
conn | EasyDbus_conn object pointer | |
sleep_time | time before reconnect (in seconds) |
EASYDBUS_CONN_NAME_SERVICE_EXISTS name service exists.
EASYDBUS_CONN_NAME_SERVICE_IN_QUEUE name service in queue.
EASYDBUS_CONN_NAME_SERVICE_PRIMARY name service is primary name.
EASYDBUS_CONN_NAME_SERVICE_RENAMED name service is been renamed.
Definition at line 112 of file acquire.c.
References EasyDbus_conn::bus, EasyDbus_core::conn, EasyDbus_object_box::core, easydbus_acquire_name(), EASYDBUS_CONN_DO_NOT_QUEUE, easydbus_conn_enable_filters(), EASYDBUS_CONN_NAME_SERVICE_EXISTS, EASYDBUS_CONN_NAME_SERVICE_RENAMED, easydbus_connect_to_bus(), easydbus_found_new_name(), EASYDBUS_SESSION, EASYDBUS_SESSION_SERVER, EASYDBUS_SYSTEM, EASYDBUS_SYSTEM_SERVER, easydbus_watcher_enable(), EasyDbusDebug, EasyDbus_conn::flags, EasyDbus_object_box::next, EasyDbus_core::objects, EasyDbus_object::path, EasyDbus_conn::registered_ondbus, EasyDbus_core::service_name, EasyDbus_object_box::vtable, EasyDbus_conn::watcher_add_cb, EasyDbus_conn::watcher_closure, and EasyDbus_conn::watcher_remove_cb.
00113 { 00114 DBusError err; 00115 int result = -1; 00116 struct EasyDbus_object_box *object; 00117 struct EasyDbus_core *core = 00118 (struct EasyDbus_core *)conn; 00119 char *new_service_name = NULL; 00120 00121 if (!conn || !core->service_name) 00122 return -1; 00123 00124 if (core->conn) 00125 dbus_connection_unref(core->conn); 00126 core->conn = NULL; 00127 conn->registered_ondbus = 0; 00128 00129 dbus_error_init (&err); 00130 00131 sleep (sleep_time); 00132 00133 // Acquire bus address 00134 switch (conn->bus) { 00135 case EASYDBUS_SESSION: 00136 case EASYDBUS_SESSION_SERVER: 00137 if (easydbus_connect_to_bus (core, &err, DBUS_BUS_SESSION)) 00138 goto error; 00139 break; 00140 case EASYDBUS_SYSTEM: 00141 case EASYDBUS_SYSTEM_SERVER: 00142 if (easydbus_connect_to_bus (core, &err, DBUS_BUS_SYSTEM)) 00143 goto error; 00144 break; 00145 default: 00146 goto error; 00147 break; 00148 } 00149 00150 result = easydbus_acquire_name (core, core->service_name, 00151 conn->flags, &err); 00152 00153 if (result == EASYDBUS_CONN_NAME_SERVICE_EXISTS && 00154 // probably this isn't needed because without this flags 00155 // return value is EASYDBUS_CONN_NAME_SERVICE_IN_QUEUE 00156 (conn->flags & EASYDBUS_CONN_DO_NOT_QUEUE)) { 00157 if (conn->flags & EASYDBUS_CONN_NAME_SERVICE_RENAMED) { 00158 new_service_name = easydbus_found_new_name 00159 (core, core->service_name, conn->flags, &err); 00160 if (new_service_name == NULL) 00161 goto error; 00162 result = EASYDBUS_CONN_NAME_SERVICE_RENAMED; 00163 } 00164 else 00165 goto error; 00166 } 00167 00168 conn->registered_ondbus = 1; 00169 if (new_service_name) { 00170 if (core->service_name) 00171 free (core->service_name); 00172 core->service_name = new_service_name; 00173 } 00174 00175 if (core->objects) { 00176 for (object = core->objects; object; 00177 object = object->next) { 00178 if (!dbus_connection_register_object_path (core->conn, 00179 (const char *) object->core.path, 00180 &object->vtable, 00181 core)) { 00182 EasyDbusDebug ("Error on register object %s", object->core.path); 00183 goto error; 00184 } 00185 } 00186 easydbus_conn_enable_filters (conn); 00187 } 00188 00189 // check if there is watcher 00190 if (conn->watcher_add_cb && conn->watcher_remove_cb) { 00191 if (easydbus_watcher_enable (conn, conn->watcher_add_cb, 00192 conn->watcher_remove_cb, 00193 conn->watcher_closure)) 00194 goto error; 00195 } 00196 00197 dbus_error_free (&err); 00198 00199 return result; 00200 error: 00201 if (conn->registered_ondbus) 00202 dbus_bus_release_name (core->conn, core->service_name, &err); 00203 00204 if (core->conn != NULL) 00205 dbus_connection_unref (core->conn); 00206 00207 dbus_error_free (&err); 00208 return -1; 00209 }
void easydbus_conn_set_closure | ( | EasyDbus_conn * | c, | |
void * | closure | |||
) |
Set closure of EasyDbus_conn object.
c | EasyDbus_conn object pointer | |
closure | pointer to user data. |
Definition at line 369 of file acquire.c.
References EasyDbus_conn::closure.
00371 { 00372 c->closure = closure; 00373 }
void easydbus_deinit | ( | void | ) | [inline] |
Frees all memory allocated internally by libdbus.
Definition at line 62 of file easydbus.c.
References EasyDbusDebug.
00063 { 00064 EasyDbusDebug ("Deinit %s %s library...", PACKAGE_NAME, VERSION); 00065 dbus_shutdown (); 00066 }