1/* dbus-glib-1.vala 2 * 3 * Copyright (C) 2007-2010 Jürg Billeter 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 * 19 * Author: 20 * Jürg Billeter <j@bitron.ch> 21 * Michael 'Mickey' Lauer <mlauer@vanille-media.de> 22 */ 23 24[CCode (cheader_filename = "dbus/dbus-glib-lowlevel.h,dbus/dbus-glib.h", gir_namespace = "DBusGLib", gir_version = "1.0")] 25namespace DBus { 26 public const string SERVICE_DBUS; 27 public const string PATH_DBUS; 28 public const string INTERFACE_DBUS; 29 30 public const string INTERFACE_INTROSPECTABLE; 31 public const string INTERFACE_PROPERTIES; 32 public const string INTERFACE_PEER; 33 34 [CCode (cname = "dbus_g_thread_init")] 35 public static void thread_init (); 36 37 [CCode (cprefix = "DBUS_BUS_")] 38 public enum BusType { 39 SESSION, 40 SYSTEM, 41 STARTER 42 } 43 44 [CCode (lower_case_cprefix = "dbus_bus_")] 45 namespace RawBus { 46 public static RawConnection get (BusType type, ref RawError error); 47 } 48 49 [CCode (ref_function = "dbus_connection_ref", unref_function = "dbus_connection_unref", cname = "DBusConnection", cprefix = "dbus_connection_")] 50 public class RawConnection { 51 [CCode (cname = "dbus_connection_setup_with_g_main")] 52 public void setup_with_main (GLib.MainContext? context = null); 53 [CCode (cname = "dbus_connection_get_g_connection")] 54 public unowned Connection get_g_connection (); 55 [CCode (cname = "dbus_connection_register_g_object")] 56 public void register_object (string at_path, GLib.Object object); 57 58 public bool send (RawMessage message, uint32? client_serial); 59 public RawMessage send_with_reply_and_block (RawMessage message, int timeout_milliseconds, ref RawError error); 60 61 public bool add_filter (RawHandleMessageFunction function, RawFreeFunction? free_data_function = null); 62 public void remove_filter (RawHandleMessageFunction function); 63 64 [CCode (cname = "dbus_bus_add_match")] 65 public void add_match (string rule, ref RawError error); 66 [CCode (cname = "dbus_bus_remove_match")] 67 public void remove_match (string rule, ref RawError error); 68 [CCode (cname = "dbus_bus_get_unique_name")] 69 public unowned string get_unique_name(); 70 [CCode (cname = "dbus_bus_request_name")] 71 public int request_name(string name, uint flags, ref RawError error); 72 [CCode (cname="dbus_bus_release_name")] 73 public int release_name(string name, ref RawError error); 74 } 75 76 [CCode (cname = "DBusError", cprefix = "dbus_error_", destroy_function = "dbus_error_free")] 77 public struct RawError { 78 public string name; 79 public string message; 80 81 public RawError (); 82 public bool has_name (string name); 83 public bool is_set (); 84 } 85 86 [CCode (cname = "DBusFreeFunction", has_target = false)] 87 public delegate void* RawFreeFunction (void* memory); 88 [CCode (cname = "DBusHandleMessageFunction", instance_pos = -1)] 89 public delegate RawHandlerResult RawHandleMessageFunction(RawConnection connection, RawMessage message); 90 91 [CCode (cname = "DBusHandlerResult", cprefix = "DBUS_HANDLER_RESULT_")] 92 public enum RawHandlerResult { 93 HANDLED, 94 NOT_YET_HANDLED, 95 NEED_MEMORY 96 } 97 98 [CCode (cname = "DBusMessageIter", cprefix = "dbus_message_iter_")] 99 public struct RawMessageIter { 100 public bool has_next (); 101 public bool next (); 102 public string get_signature (); 103 public int get_arg_type (); 104 public int get_element_type (); 105 public void recurse (RawMessageIter sub); 106 public void get_basic (void* value); 107 public bool open_container (RawType arg_type, string? signature, RawMessageIter sub); 108 public bool close_container (RawMessageIter sub); 109 public bool append_basic (RawType arg_type, void* value); 110 111 [CCode (cname = "dbus_message_type_from_string")] 112 public static int type_from_string (string type); 113 [CCode (cname = "dbus_message_type_to_string")] 114 public static string type_to_string (int type); 115 } 116 117 [CCode (ref_function = "dbus_message_ref", unref_function = "dbus_message_unref", cname = "DBusMessage", cprefix = "dbus_message_")] 118 public class RawMessage { 119 [CCode (cname = "dbus_message_new_method_call")] 120 public RawMessage.call (string bus_name, string path, string interface, string method); 121 [CCode (sentinel = "DBUS_TYPE_INVALID")] 122 public bool append_args (RawType first_arg_type, ...); 123 [CCode (cname = "dbus_message_iter_init")] 124 public bool iter_init (RawMessageIter iter); 125 [CCode (cname = "dbus_message_iter_init_append")] 126 public bool iter_init_append (RawMessageIter iter); 127 128 public RawMessageType get_type (); 129 public bool set_path (string object_path); 130 public unowned string get_path (); 131 public bool has_path (string object_path); 132 public bool set_interface (string iface); 133 public unowned string get_interface (); 134 public bool has_interface (string iface); 135 public bool set_member (string member); 136 public unowned string get_member (); 137 public bool has_member (string member); 138 public bool set_error_name (string name); 139 public unowned string get_error_name (); 140 public bool set_destination (string destination); 141 public unowned string get_destination (); 142 public bool set_sender (string sender); 143 public unowned string get_sender (); 144 public unowned string get_signature (); 145 public void set_no_reply (bool no_reply); 146 public bool get_no_reply (); 147 public bool is_method_call (string iface, string method); 148 public bool is_signal (string iface, string signal_name); 149 public bool is_error (string error_name); 150 public bool has_destination (string bus_name); 151 public bool has_sender (string unique_bus_name); 152 public bool has_signature (string signature); 153 public uint32 get_serial (); 154 public void set_serial (uint32 serial); 155 public bool set_reply_serial (uint32 reply_serial); 156 public uint32 get_reply_serial (); 157 public void set_auto_start (bool auto_start); 158 public bool get_auto_start (); 159 public bool get_path_decomposed (out char[] path ); 160 } 161 162 [CCode (cname = "int", cprefix = "DBUS_MESSAGE_TYPE_")] 163 public enum RawMessageType { 164 INVALID, 165 METHOD_CALL, 166 METHOD_RETURN, 167 ERROR, 168 SIGNAL 169 } 170 171 [CCode (cname = "int", cprefix = "DBUS_TYPE_")] 172 public enum RawType { 173 INVALID, 174 BYTE, 175 BOOLEAN, 176 INT16, 177 UINT16, 178 INT32, 179 UINT32, 180 INT64, 181 UINT64, 182 DOUBLE, 183 STRING, 184 OBJECT_PATH, 185 SIGNATURE, 186 ARRAY, 187 VARIANT, 188 STRUCT, 189 DICT_ENTRY, 190 } 191 192 [DBus (name = "org.freedesktop.DBus.Error")] 193 [CCode (cname = "DBusGError", lower_case_csuffix = "gerror", cprefix = "DBUS_GERROR_")] 194 public errordomain Error { 195 FAILED, 196 NO_MEMORY, 197 SERVICE_UNKNOWN, 198 NAME_HAS_NO_OWNER, 199 NO_REPLY, 200 [DBus (name = "IOError")] 201 IO_ERROR, 202 BAD_ADDRESS, 203 NOT_SUPPORTED, 204 LIMITS_EXCEEDED, 205 ACCESS_DENIED, 206 AUTH_FAILED, 207 NO_SERVER, 208 TIMEOUT, 209 NO_NETWORK, 210 ADDRESS_IN_USE, 211 DISCONNECTED, 212 INVALID_ARGS, 213 FILE_NOT_FOUND, 214 FILE_EXISTS, 215 UNKNOWN_METHOD, 216 TIMED_OUT, 217 MATCH_RULE_NOT_FOUND, 218 MATCH_RULE_INVALID, 219 [DBus (name = "Spawn.ExecFailed")] 220 SPAWN_EXEC_FAILED, 221 [DBus (name = "Spawn.ForkFailed")] 222 SPAWN_FORK_FAILED, 223 [DBus (name = "Spawn.ChildExited")] 224 SPAWN_CHILD_EXITED, 225 [DBus (name = "Spawn.ChildSignaled")] 226 SPAWN_CHILD_SIGNALED, 227 [DBus (name = "Spawn.Failed")] 228 SPAWN_FAILED, 229 UNIX_PROCESS_ID_UNKNOWN, 230 INVALID_SIGNATURE, 231 INVALID_FILE_CONTENT, 232 [DBus (name = "SELinuxSecurityContextUnknown")] 233 SELINUX_SECURITY_CONTEXT_UNKNOWN, 234 REMOTE_EXCEPTION 235 } 236 237 public struct Bus { 238 [CCode (cname = "dbus_g_bus_get")] 239 public static Connection get (BusType type) throws Error; 240 } 241 242 [Compact] 243 [CCode (ref_function = "dbus_g_connection_ref", unref_function = "dbus_g_connection_unref", cname = "DBusGConnection")] 244 public class Connection { 245 [CCode (cname = "dbus_g_connection_open")] 246 public Connection (string address) throws Error; 247 [CCode (cname = "dbus_g_proxy_new_for_name")] 248 public Object get_object (string name, string path, string? interface_ = null); 249 [CCode (cname="dbus_g_proxy_new_for_name_owner")] 250 public Object get_object_for_name_owner (string name, string path, string? interface_ = null) throws Error; 251 [CCode (cname = "dbus_g_proxy_new_from_type")] 252 public GLib.Object get_object_from_type (string name, string path, string interface_, GLib.Type type); 253 [CCode (cname = "dbus_g_connection_register_g_object")] 254 public void register_object (string at_path, GLib.Object object); 255 [CCode (cname = "dbus_g_connection_unregister_g_object")] 256 public void unregister_object (GLib.Object object); 257 [CCode (cname = "dbus_g_connection_lookup_g_object")] 258 public unowned GLib.Object lookup_object (string at_path); 259 [CCode (cname = "dbus_g_connection_get_connection")] 260 public unowned RawConnection get_connection (); 261 } 262 263 [CCode (cname = "DBusGProxy", lower_case_csuffix = "g_proxy")] 264 public class Object : GLib.Object { 265 public bool call (string method, out GLib.Error error, GLib.Type first_arg_type, ...); 266 public unowned ProxyCall begin_call (string method, ProxyCallNotify notify, GLib.DestroyNotify destroy, GLib.Type first_arg_type, ...); 267 public bool end_call (ProxyCall call, out GLib.Error error, GLib.Type first_arg_type, ...); 268 public void cancel_call (ProxyCall call); 269 public unowned string get_path (); 270 public unowned string get_bus_name (); 271 public unowned string get_interface (); 272 public GLib.HashTable<string,GLib.Value?> get_all (string interface_name) throws DBus.Error; 273 274 public signal void destroy (); 275 } 276 277 [CCode (cname = "char", const_cname = "const char", copy_function = "g_strdup", free_function = "g_free", cheader_filename = "stdlib.h,string.h,glib.h", type_id = "DBUS_TYPE_G_OBJECT_PATH", marshaller_type_name = "BOXED", get_value_function = "g_value_get_boxed", set_value_function = "g_value_set_boxed", type_signature = "o")] 278 public class ObjectPath : string { 279 [CCode (cname = "g_strdup")] 280 public ObjectPath (string path); 281 } 282 283 [CCode (cname = "char", const_cname = "const char", copy_function = "g_strdup", free_function = "g_free", cheader_filename = "stdlib.h,string.h,glib.h", type_id = "G_TYPE_STRING", marshaller_type_name = "STRING", get_value_function = "g_value_get_string", set_value_function = "g_value_set_string")] 284 public class BusName : string { 285 [CCode (cname = "g_strdup")] 286 public BusName (string bus_name); 287 } 288 289 [CCode (cname = "DBusGProxyCallNotify")] 290 public delegate void ProxyCallNotify (Object obj, ProxyCall call_id); 291 292 [CCode (cname = "DBusGProxyCall")] 293 public class ProxyCall { 294 } 295 296 [CCode (cname = "DBusGMethodInvocation")] 297 public class MethodInvocation { 298 } 299 300 [Flags] 301 [CCode (cname = "uint")] 302 public enum NameFlag { 303 ALLOW_REPLACEMENT, 304 REPLACE_EXISTING, 305 DO_NOT_QUEUE 306 } 307 308 [CCode (cname = "int")] 309 public enum RequestNameReply { 310 PRIMARY_OWNER, 311 IN_QUEUE, 312 EXISTS, 313 ALREADY_OWNER 314 } 315} 316