dbus-message.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
  2. /* dbus-message.h DBusMessage object
  3. *
  4. * Copyright (C) 2002, 2003, 2005 Red Hat Inc.
  5. *
  6. * Licensed under the Academic Free License version 2.1
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21. *
  22. */
  23. #if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION)
  24. #error "Only <dbus/dbus.h> can be included directly, this file may disappear or change contents."
  25. #endif
  26. #ifndef DBUS_MESSAGE_H
  27. #define DBUS_MESSAGE_H
  28. #include <dbus/dbus-macros.h>
  29. #include <dbus/dbus-types.h>
  30. #include <dbus/dbus-arch-deps.h>
  31. #include <dbus/dbus-memory.h>
  32. #include <dbus/dbus-errors.h>
  33. #include <stdarg.h>
  34. DBUS_BEGIN_DECLS
  35. /**
  36. * @addtogroup DBusMessage
  37. * @{
  38. */
  39. typedef struct DBusMessage DBusMessage;
  40. /** Opaque type representing a message iterator. Can be copied by value, and contains no allocated memory so never needs to be freed and can be allocated on the stack. */
  41. typedef struct DBusMessageIter DBusMessageIter;
  42. /**
  43. * DBusMessageIter struct; contains no public fields.
  44. */
  45. struct DBusMessageIter
  46. {
  47. void *dummy1; /**< Don't use this */
  48. void *dummy2; /**< Don't use this */
  49. dbus_uint32_t dummy3; /**< Don't use this */
  50. int dummy4; /**< Don't use this */
  51. int dummy5; /**< Don't use this */
  52. int dummy6; /**< Don't use this */
  53. int dummy7; /**< Don't use this */
  54. int dummy8; /**< Don't use this */
  55. int dummy9; /**< Don't use this */
  56. int dummy10; /**< Don't use this */
  57. int dummy11; /**< Don't use this */
  58. int pad1; /**< Don't use this */
  59. void *pad2; /**< Don't use this */
  60. void *pad3; /**< Don't use this */
  61. };
  62. DBUS_EXPORT
  63. DBusMessage* dbus_message_new (int message_type);
  64. DBUS_EXPORT
  65. DBusMessage* dbus_message_new_method_call (const char *bus_name,
  66. const char *path,
  67. const char *iface,
  68. const char *method);
  69. DBUS_EXPORT
  70. DBusMessage* dbus_message_new_method_return (DBusMessage *method_call);
  71. DBUS_EXPORT
  72. DBusMessage* dbus_message_new_signal (const char *path,
  73. const char *iface,
  74. const char *name);
  75. DBUS_EXPORT
  76. DBusMessage* dbus_message_new_error (DBusMessage *reply_to,
  77. const char *error_name,
  78. const char *error_message);
  79. DBUS_EXPORT
  80. DBusMessage* dbus_message_new_error_printf (DBusMessage *reply_to,
  81. const char *error_name,
  82. const char *error_format,
  83. ...);
  84. DBUS_EXPORT
  85. DBusMessage* dbus_message_copy (const DBusMessage *message);
  86. DBUS_EXPORT
  87. DBusMessage* dbus_message_ref (DBusMessage *message);
  88. DBUS_EXPORT
  89. void dbus_message_unref (DBusMessage *message);
  90. DBUS_EXPORT
  91. int dbus_message_get_type (DBusMessage *message);
  92. DBUS_EXPORT
  93. dbus_bool_t dbus_message_set_path (DBusMessage *message,
  94. const char *object_path);
  95. DBUS_EXPORT
  96. const char* dbus_message_get_path (DBusMessage *message);
  97. DBUS_EXPORT
  98. dbus_bool_t dbus_message_has_path (DBusMessage *message,
  99. const char *object_path);
  100. DBUS_EXPORT
  101. dbus_bool_t dbus_message_set_interface (DBusMessage *message,
  102. const char *iface);
  103. DBUS_EXPORT
  104. const char* dbus_message_get_interface (DBusMessage *message);
  105. DBUS_EXPORT
  106. dbus_bool_t dbus_message_has_interface (DBusMessage *message,
  107. const char *iface);
  108. DBUS_EXPORT
  109. dbus_bool_t dbus_message_set_member (DBusMessage *message,
  110. const char *member);
  111. DBUS_EXPORT
  112. const char* dbus_message_get_member (DBusMessage *message);
  113. DBUS_EXPORT
  114. dbus_bool_t dbus_message_has_member (DBusMessage *message,
  115. const char *member);
  116. DBUS_EXPORT
  117. dbus_bool_t dbus_message_set_error_name (DBusMessage *message,
  118. const char *name);
  119. DBUS_EXPORT
  120. const char* dbus_message_get_error_name (DBusMessage *message);
  121. DBUS_EXPORT
  122. dbus_bool_t dbus_message_set_destination (DBusMessage *message,
  123. const char *destination);
  124. DBUS_EXPORT
  125. const char* dbus_message_get_destination (DBusMessage *message);
  126. DBUS_EXPORT
  127. dbus_bool_t dbus_message_set_sender (DBusMessage *message,
  128. const char *sender);
  129. DBUS_EXPORT
  130. const char* dbus_message_get_sender (DBusMessage *message);
  131. DBUS_EXPORT
  132. const char* dbus_message_get_signature (DBusMessage *message);
  133. DBUS_EXPORT
  134. void dbus_message_set_no_reply (DBusMessage *message,
  135. dbus_bool_t no_reply);
  136. DBUS_EXPORT
  137. dbus_bool_t dbus_message_get_no_reply (DBusMessage *message);
  138. DBUS_EXPORT
  139. dbus_bool_t dbus_message_is_method_call (DBusMessage *message,
  140. const char *iface,
  141. const char *method);
  142. DBUS_EXPORT
  143. dbus_bool_t dbus_message_is_signal (DBusMessage *message,
  144. const char *iface,
  145. const char *signal_name);
  146. DBUS_EXPORT
  147. dbus_bool_t dbus_message_is_error (DBusMessage *message,
  148. const char *error_name);
  149. DBUS_EXPORT
  150. dbus_bool_t dbus_message_has_destination (DBusMessage *message,
  151. const char *bus_name);
  152. DBUS_EXPORT
  153. dbus_bool_t dbus_message_has_sender (DBusMessage *message,
  154. const char *unique_bus_name);
  155. DBUS_EXPORT
  156. dbus_bool_t dbus_message_has_signature (DBusMessage *message,
  157. const char *signature);
  158. DBUS_EXPORT
  159. dbus_uint32_t dbus_message_get_serial (DBusMessage *message);
  160. DBUS_EXPORT
  161. void dbus_message_set_serial (DBusMessage *message,
  162. dbus_uint32_t serial);
  163. DBUS_EXPORT
  164. dbus_bool_t dbus_message_set_reply_serial (DBusMessage *message,
  165. dbus_uint32_t reply_serial);
  166. DBUS_EXPORT
  167. dbus_uint32_t dbus_message_get_reply_serial (DBusMessage *message);
  168. DBUS_EXPORT
  169. void dbus_message_set_auto_start (DBusMessage *message,
  170. dbus_bool_t auto_start);
  171. DBUS_EXPORT
  172. dbus_bool_t dbus_message_get_auto_start (DBusMessage *message);
  173. DBUS_EXPORT
  174. dbus_bool_t dbus_message_get_path_decomposed (DBusMessage *message,
  175. char ***path);
  176. DBUS_EXPORT
  177. dbus_bool_t dbus_message_append_args (DBusMessage *message,
  178. int first_arg_type,
  179. ...);
  180. DBUS_EXPORT
  181. dbus_bool_t dbus_message_append_args_valist (DBusMessage *message,
  182. int first_arg_type,
  183. va_list var_args);
  184. DBUS_EXPORT
  185. dbus_bool_t dbus_message_get_args (DBusMessage *message,
  186. DBusError *error,
  187. int first_arg_type,
  188. ...);
  189. DBUS_EXPORT
  190. dbus_bool_t dbus_message_get_args_valist (DBusMessage *message,
  191. DBusError *error,
  192. int first_arg_type,
  193. va_list var_args);
  194. DBUS_EXPORT
  195. dbus_bool_t dbus_message_contains_unix_fds (DBusMessage *message);
  196. DBUS_EXPORT
  197. dbus_bool_t dbus_message_iter_init (DBusMessage *message,
  198. DBusMessageIter *iter);
  199. DBUS_EXPORT
  200. dbus_bool_t dbus_message_iter_has_next (DBusMessageIter *iter);
  201. DBUS_EXPORT
  202. dbus_bool_t dbus_message_iter_next (DBusMessageIter *iter);
  203. DBUS_EXPORT
  204. char* dbus_message_iter_get_signature (DBusMessageIter *iter);
  205. DBUS_EXPORT
  206. int dbus_message_iter_get_arg_type (DBusMessageIter *iter);
  207. DBUS_EXPORT
  208. int dbus_message_iter_get_element_type (DBusMessageIter *iter);
  209. DBUS_EXPORT
  210. void dbus_message_iter_recurse (DBusMessageIter *iter,
  211. DBusMessageIter *sub);
  212. DBUS_EXPORT
  213. void dbus_message_iter_get_basic (DBusMessageIter *iter,
  214. void *value);
  215. DBUS_EXPORT
  216. int dbus_message_iter_get_element_count(DBusMessageIter *iter);
  217. #ifndef DBUS_DISABLE_DEPRECATED
  218. /* This function returns the wire protocol size of the array in bytes,
  219. * you do not want to know that probably
  220. */
  221. DBUS_EXPORT
  222. DBUS_DEPRECATED int dbus_message_iter_get_array_len (DBusMessageIter *iter);
  223. #endif
  224. DBUS_EXPORT
  225. void dbus_message_iter_get_fixed_array (DBusMessageIter *iter,
  226. void *value,
  227. int *n_elements);
  228. DBUS_EXPORT
  229. void dbus_message_iter_init_append (DBusMessage *message,
  230. DBusMessageIter *iter);
  231. DBUS_EXPORT
  232. dbus_bool_t dbus_message_iter_append_basic (DBusMessageIter *iter,
  233. int type,
  234. const void *value);
  235. DBUS_EXPORT
  236. dbus_bool_t dbus_message_iter_append_fixed_array (DBusMessageIter *iter,
  237. int element_type,
  238. const void *value,
  239. int n_elements);
  240. DBUS_EXPORT
  241. dbus_bool_t dbus_message_iter_open_container (DBusMessageIter *iter,
  242. int type,
  243. const char *contained_signature,
  244. DBusMessageIter *sub);
  245. DBUS_EXPORT
  246. dbus_bool_t dbus_message_iter_close_container (DBusMessageIter *iter,
  247. DBusMessageIter *sub);
  248. DBUS_EXPORT
  249. void dbus_message_iter_abandon_container (DBusMessageIter *iter,
  250. DBusMessageIter *sub);
  251. DBUS_EXPORT
  252. void dbus_message_lock (DBusMessage *message);
  253. DBUS_EXPORT
  254. dbus_bool_t dbus_set_error_from_message (DBusError *error,
  255. DBusMessage *message);
  256. DBUS_EXPORT
  257. dbus_bool_t dbus_message_allocate_data_slot (dbus_int32_t *slot_p);
  258. DBUS_EXPORT
  259. void dbus_message_free_data_slot (dbus_int32_t *slot_p);
  260. DBUS_EXPORT
  261. dbus_bool_t dbus_message_set_data (DBusMessage *message,
  262. dbus_int32_t slot,
  263. void *data,
  264. DBusFreeFunction free_data_func);
  265. DBUS_EXPORT
  266. void* dbus_message_get_data (DBusMessage *message,
  267. dbus_int32_t slot);
  268. DBUS_EXPORT
  269. int dbus_message_type_from_string (const char *type_str);
  270. DBUS_EXPORT
  271. const char* dbus_message_type_to_string (int type);
  272. DBUS_EXPORT
  273. dbus_bool_t dbus_message_marshal (DBusMessage *msg,
  274. char **marshalled_data_p,
  275. int *len_p);
  276. DBUS_EXPORT
  277. DBusMessage* dbus_message_demarshal (const char *str,
  278. int len,
  279. DBusError *error);
  280. DBUS_EXPORT
  281. int dbus_message_demarshal_bytes_needed (const char *str,
  282. int len);
  283. DBUS_EXPORT
  284. void dbus_message_set_allow_interactive_authorization (DBusMessage *message,
  285. dbus_bool_t allow);
  286. DBUS_EXPORT
  287. dbus_bool_t dbus_message_get_allow_interactive_authorization (
  288. DBusMessage *message);
  289. /** @} */
  290. DBUS_END_DECLS
  291. #endif /* DBUS_MESSAGE_H */