easydbus.h

Go to the documentation of this file.
00001 /*
00002  EasyDbus: DBus Binding Library
00003  Copyright (C) 2007  Daniele Rondina aka ge@@ru, geaaru@gmail.com 
00004 
00005  This program is free software; you can redistribute it and/or
00006  modify it under the terms of the GNU General Public License
00007  as published by the Free Software Foundation; either version 2
00008  of the License, or (at your option) any later version.
00009 
00010  This program is distributed in the hope that it will be useful,
00011  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  GNU General Public License for more details.
00014 
00015  You should have received a copy of the GNU General Public License
00016  along with this program; if not, write to the Free Software
00017  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00018 
00019   Filename:  easydbus.h
00020  
00021   Description:  
00022  
00023   Version:  0.1
00024   Created:  06/07/07 19:43:40 CEST
00025   Revision:  none
00026  
00027   Author:   Daniele Rondina aka Ge@@ru (geaaru@gmail.com) 
00028   License:  GPL 2.0
00029 */
00030 
00031 #ifndef EASYDBUS_H
00032 #define EASYDBUS_H
00033 
00034 #   ifdef __cplusplus
00035 extern "C" {
00036 #   endif
00037 
00038 enum el_type {
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 };
00058 
00059 enum event_type {
00060   EASYDBUS_ET_INVALID,
00061   EASYDBUS_ET_METHOD,
00062   EASYDBUS_ET_SIGNAL,
00063   EASYDBUS_ET_REPLY,
00064   EASYDBUS_ET_FAILURE,
00065 };
00066 
00067 enum easydbus_bus {
00068   EASYDBUS_INVALID,
00069   EASYDBUS_SESSION,
00070   EASYDBUS_SYSTEM,
00071   EASYDBUS_SESSION_SERVER,
00072   EASYDBUS_SYSTEM_SERVER,
00073   EASYDBUS_LOCAL
00074 };
00075 
00076 enum easydbus_watcher_flags {
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 };
00083 
00084 enum easydbus_connection_flags {
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 };
00102 
00103 enum easydbus_ret_values {
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 };
00123 
00124 // EasyDbus struct are now opaque
00125 typedef struct EasyDbus_conn EasyDbus_conn;
00126 typedef struct EasyDbus_container EasyDbus_container;
00127 typedef struct EasyDbus_elem EasyDbus_elem;
00128 typedef struct EasyDbus_signal EasyDbus_signal;
00129 typedef struct EasyDbus_reply EasyDbus_reply;
00130 typedef struct EasyDbus_method EasyDbus_method;
00131 
00132 typedef void (*easydbus_method_async_reply_cb_f) (EasyDbus_conn *, 
00133                                                   EasyDbus_method *, void *);
00134 
00135 typedef void (*easydbus_reply_async_cb_f) (EasyDbus_conn *,
00136                                            EasyDbus_method *, void *);
00137 
00138 typedef void (*easydbus_error_message_cb_f) (EasyDbus_conn *, 
00139                                              const EasyDbus_reply *, 
00140                                              void *);
00141 
00142 typedef void (*easydbus_reply_message_cb_f) (EasyDbus_conn *, 
00143                                              const EasyDbus_method *, 
00144                                              void *);
00145 
00146 
00147 #   include <easydbus/elem.h>
00148 #   include <easydbus/variant.h>
00149 #   include <easydbus/dict_entry.h>
00150 #   include <easydbus/skeleton.h>
00151 #   include <easydbus/array.h>
00152 #   include <easydbus/struct.h>
00153 #   include <easydbus/monitor.h>
00154 
00155 void 
00156 easydbus_init (void);
00157 
00158 inline void 
00159 easydbus_deinit (void);
00160 
00161 /* about connections */
00162 int
00163 easydbus_conn_destroy (EasyDbus_conn *);
00164 
00165 EasyDbus_conn *
00166 easydbus_conn_create (void);
00167 
00168 int 
00169 easydbus_conn_get_address (EasyDbus_conn *,
00170                            char *, enum easydbus_bus,
00171                            int);
00172 
00173 inline int
00174 easydbus_conn_get_system_service_address (EasyDbus_conn *, 
00175                                           char *);
00176 
00177 const char *
00178 easydbus_conn_get_service_name (const EasyDbus_conn *);
00179 
00180 
00181 inline int 
00182 easydbus_conn_add_match_rule (EasyDbus_conn *,
00183                               enum event_type, char *,
00184                               char *, char *, 
00185                               char *, char *);
00186 
00187 inline int 
00188 easydbus_conn_remove_match_rule (EasyDbus_conn *,
00189                                  enum event_type, char *,
00190                                  char *, char *,
00191                                  char *, char *);
00192 
00193 int
00194 easydbus_conn_reconnect (EasyDbus_conn *, int);
00195 
00196 int
00197 easydbus_conn_set_reply_async_cb (EasyDbus_conn *,
00198                                   easydbus_reply_async_cb_f,
00199                                   void *);
00200 
00201 int
00202 easydbus_conn_set_error_message_cb (EasyDbus_conn *,
00203                                     easydbus_error_message_cb_f,
00204                                     void *);
00205 
00206 int
00207 easydbus_conn_set_reply_message_cb (EasyDbus_conn *,
00208                                     easydbus_reply_message_cb_f);
00209 
00210 int
00211 easydbus_conn_get_fd (EasyDbus_conn *);
00212 
00213 int 
00214 easydbus_conn_enable_filters (EasyDbus_conn *);
00215 
00216 int 
00217 easydbus_conn_disable_filters (EasyDbus_conn *);
00218 
00219 void 
00220 easydbus_conn_set_closure (EasyDbus_conn *, void *);
00221 
00222 void *
00223 easydbus_conn_get_closure (EasyDbus_conn *);
00224 
00225 int 
00226 easydbus_start_service (EasyDbus_conn *, char *);
00227 
00228 #   ifdef TOFILE_DEBUG
00229    int 
00230    easydbus_init_logger (char *);
00231 
00232    void 
00233    easydbus_deinit_logger (void);
00234 #   endif
00235 
00236 #   ifdef __cplusplus
00237    extern "C" {
00238 #   endif
00239 
00240 #endif
00241 // vim: ts=3 shiftwidth=3 expandtab

Generated on Thu Apr 10 10:00:18 2008 for EasyDbus-0.2 by  doxygen 1.5.4