00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __EDELIB_EDBUSCONNECTION_H__
00022 #define __EDELIB_EDBUSCONNECTION_H__
00023
00024 #include "EdbusMessage.h"
00025
00026 EDELIB_NS_BEGIN
00027
00037 enum EdbusConnectionType {
00038 EDBUS_SYSTEM,
00039 EDBUS_SESSION
00040 };
00041
00047 enum EdbusNameMode {
00048 EDBUS_NAME_NO_REPLACE = 0,
00049 EDBUS_NAME_ALLOW_REPLACE = 1,
00050 EDBUS_NAME_REPLACE_EXISTING = 2
00051 };
00052
00057 typedef int (*EdbusCallback)(const EdbusMessage*, void*);
00058
00064 struct EdbusCallbackItem {
00066 const char* path;
00068 const char* interface;
00070 const char* name;
00072 EdbusCallback callback;
00074 void* data;
00075 };
00076
00077 #ifndef SKIP_DOCS
00078 struct EdbusConnImpl;
00079 #endif
00080
00161 class EDELIB_API EdbusConnection {
00162 private:
00163 EdbusConnImpl* dc;
00164 void setup_filter(void);
00165
00166 E_DISABLE_CLASS_COPY(EdbusConnection)
00167 public:
00172 EdbusConnection();
00173
00177 ~EdbusConnection();
00178
00185 bool connect(EdbusConnectionType ctype);
00186
00194 bool disconnect(void);
00195
00202 bool send(const EdbusMessage& content);
00203
00213 bool send_with_reply_and_block(const EdbusMessage& content, int timeout_ms, EdbusMessage& ret);
00214
00240 bool request_name(const char* name, int mode = EDBUS_NAME_NO_REPLACE);
00241
00245 const char* unique_name(void);
00246
00254 void signal_callback(EdbusCallback cb, void* data);
00255
00263 void method_callback(EdbusCallback cb, void* data);
00264
00275 void signal_callback_table(EdbusCallbackItem* table, unsigned int sz);
00276
00280 void signal_callback_table_data(unsigned int pos, void* data);
00281
00285 void remove_signal_callback_table(void) { signal_callback_table(NULL, 0); }
00286
00290 void method_callback_table(EdbusCallbackItem* table, unsigned int sz);
00291
00295 void method_callback_table_data(unsigned int pos, void* data);
00296
00300 void remove_method_callback_table(void) { method_callback_table(NULL, 0); }
00301
00308 void add_signal_match(const char* path, const char* interface, const char* name);
00309
00319 void add_method_match(const char* path, const char* interface, const char* name);
00320
00333 void register_object(const char* path);
00334
00339 void unregister_object(const char* path);
00340
00347 void setup_listener(void);
00348
00353 void setup_listener_with_fltk(void);
00354
00370 int wait(int timeout_ms);
00371 };
00372
00373 EDELIB_NS_END
00374 #endif