gsocket.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. /*
  2. * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima
  3. * Copyright © 2009 Codethink Limited
  4. *
  5. * SPDX-License-Identifier: LGPL-2.1-or-later
  6. *
  7. * This library is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation; either
  10. * version 2.1 of the License, or (at your option) any later version.
  11. *
  12. * This library is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General
  18. * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
  19. *
  20. * Authors: Christian Kellner <gicmo@gnome.org>
  21. * Samuel Cormier-Iijima <sciyoshi@gmail.com>
  22. * Ryan Lortie <desrt@desrt.ca>
  23. */
  24. #ifndef __G_SOCKET_H__
  25. #define __G_SOCKET_H__
  26. #if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
  27. #error "Only <gio/gio.h> can be included directly."
  28. #endif
  29. #include <gio/giotypes.h>
  30. G_BEGIN_DECLS
  31. #define G_TYPE_SOCKET (g_socket_get_type ())
  32. #define G_SOCKET(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \
  33. G_TYPE_SOCKET, GSocket))
  34. #define G_SOCKET_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), \
  35. G_TYPE_SOCKET, GSocketClass))
  36. #define G_IS_SOCKET(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \
  37. G_TYPE_SOCKET))
  38. #define G_IS_SOCKET_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \
  39. G_TYPE_SOCKET))
  40. #define G_SOCKET_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \
  41. G_TYPE_SOCKET, GSocketClass))
  42. typedef struct _GSocketPrivate GSocketPrivate;
  43. typedef struct _GSocketClass GSocketClass;
  44. struct _GSocketClass
  45. {
  46. GObjectClass parent_class;
  47. /*< private >*/
  48. /* Padding for future expansion */
  49. void (*_g_reserved1) (void);
  50. void (*_g_reserved2) (void);
  51. void (*_g_reserved3) (void);
  52. void (*_g_reserved4) (void);
  53. void (*_g_reserved5) (void);
  54. void (*_g_reserved6) (void);
  55. void (*_g_reserved7) (void);
  56. void (*_g_reserved8) (void);
  57. void (*_g_reserved9) (void);
  58. void (*_g_reserved10) (void);
  59. };
  60. struct _GSocket
  61. {
  62. GObject parent_instance;
  63. GSocketPrivate *priv;
  64. };
  65. GIO_AVAILABLE_IN_ALL
  66. GType g_socket_get_type (void) G_GNUC_CONST;
  67. GIO_AVAILABLE_IN_ALL
  68. GSocket * g_socket_new (GSocketFamily family,
  69. GSocketType type,
  70. GSocketProtocol protocol,
  71. GError **error);
  72. GIO_AVAILABLE_IN_ALL
  73. GSocket * g_socket_new_from_fd (gint fd,
  74. GError **error);
  75. GIO_AVAILABLE_IN_ALL
  76. int g_socket_get_fd (GSocket *socket);
  77. GIO_AVAILABLE_IN_ALL
  78. GSocketFamily g_socket_get_family (GSocket *socket);
  79. GIO_AVAILABLE_IN_ALL
  80. GSocketType g_socket_get_socket_type (GSocket *socket);
  81. GIO_AVAILABLE_IN_ALL
  82. GSocketProtocol g_socket_get_protocol (GSocket *socket);
  83. GIO_AVAILABLE_IN_ALL
  84. GSocketAddress * g_socket_get_local_address (GSocket *socket,
  85. GError **error);
  86. GIO_AVAILABLE_IN_ALL
  87. GSocketAddress * g_socket_get_remote_address (GSocket *socket,
  88. GError **error);
  89. GIO_AVAILABLE_IN_ALL
  90. void g_socket_set_blocking (GSocket *socket,
  91. gboolean blocking);
  92. GIO_AVAILABLE_IN_ALL
  93. gboolean g_socket_get_blocking (GSocket *socket);
  94. GIO_AVAILABLE_IN_ALL
  95. void g_socket_set_keepalive (GSocket *socket,
  96. gboolean keepalive);
  97. GIO_AVAILABLE_IN_ALL
  98. gboolean g_socket_get_keepalive (GSocket *socket);
  99. GIO_AVAILABLE_IN_ALL
  100. gint g_socket_get_listen_backlog (GSocket *socket);
  101. GIO_AVAILABLE_IN_ALL
  102. void g_socket_set_listen_backlog (GSocket *socket,
  103. gint backlog);
  104. GIO_AVAILABLE_IN_ALL
  105. guint g_socket_get_timeout (GSocket *socket);
  106. GIO_AVAILABLE_IN_ALL
  107. void g_socket_set_timeout (GSocket *socket,
  108. guint timeout);
  109. GIO_AVAILABLE_IN_2_32
  110. guint g_socket_get_ttl (GSocket *socket);
  111. GIO_AVAILABLE_IN_2_32
  112. void g_socket_set_ttl (GSocket *socket,
  113. guint ttl);
  114. GIO_AVAILABLE_IN_2_32
  115. gboolean g_socket_get_broadcast (GSocket *socket);
  116. GIO_AVAILABLE_IN_2_32
  117. void g_socket_set_broadcast (GSocket *socket,
  118. gboolean broadcast);
  119. GIO_AVAILABLE_IN_2_32
  120. gboolean g_socket_get_multicast_loopback (GSocket *socket);
  121. GIO_AVAILABLE_IN_2_32
  122. void g_socket_set_multicast_loopback (GSocket *socket,
  123. gboolean loopback);
  124. GIO_AVAILABLE_IN_2_32
  125. guint g_socket_get_multicast_ttl (GSocket *socket);
  126. GIO_AVAILABLE_IN_2_32
  127. void g_socket_set_multicast_ttl (GSocket *socket,
  128. guint ttl);
  129. GIO_AVAILABLE_IN_ALL
  130. gboolean g_socket_is_connected (GSocket *socket);
  131. GIO_AVAILABLE_IN_ALL
  132. gboolean g_socket_bind (GSocket *socket,
  133. GSocketAddress *address,
  134. gboolean allow_reuse,
  135. GError **error);
  136. GIO_AVAILABLE_IN_2_32
  137. gboolean g_socket_join_multicast_group (GSocket *socket,
  138. GInetAddress *group,
  139. gboolean source_specific,
  140. const gchar *iface,
  141. GError **error);
  142. GIO_AVAILABLE_IN_2_32
  143. gboolean g_socket_leave_multicast_group (GSocket *socket,
  144. GInetAddress *group,
  145. gboolean source_specific,
  146. const gchar *iface,
  147. GError **error);
  148. GIO_AVAILABLE_IN_2_56
  149. gboolean g_socket_join_multicast_group_ssm (GSocket *socket,
  150. GInetAddress *group,
  151. GInetAddress *source_specific,
  152. const gchar *iface,
  153. GError **error);
  154. GIO_AVAILABLE_IN_2_56
  155. gboolean g_socket_leave_multicast_group_ssm (GSocket *socket,
  156. GInetAddress *group,
  157. GInetAddress *source_specific,
  158. const gchar *iface,
  159. GError **error);
  160. GIO_AVAILABLE_IN_ALL
  161. gboolean g_socket_connect (GSocket *socket,
  162. GSocketAddress *address,
  163. GCancellable *cancellable,
  164. GError **error);
  165. GIO_AVAILABLE_IN_ALL
  166. gboolean g_socket_check_connect_result (GSocket *socket,
  167. GError **error);
  168. GIO_AVAILABLE_IN_ALL
  169. gssize g_socket_get_available_bytes (GSocket *socket);
  170. GIO_AVAILABLE_IN_ALL
  171. GIOCondition g_socket_condition_check (GSocket *socket,
  172. GIOCondition condition);
  173. GIO_AVAILABLE_IN_ALL
  174. gboolean g_socket_condition_wait (GSocket *socket,
  175. GIOCondition condition,
  176. GCancellable *cancellable,
  177. GError **error);
  178. GIO_AVAILABLE_IN_2_32
  179. gboolean g_socket_condition_timed_wait (GSocket *socket,
  180. GIOCondition condition,
  181. gint64 timeout_us,
  182. GCancellable *cancellable,
  183. GError **error);
  184. GIO_AVAILABLE_IN_ALL
  185. GSocket * g_socket_accept (GSocket *socket,
  186. GCancellable *cancellable,
  187. GError **error);
  188. GIO_AVAILABLE_IN_ALL
  189. gboolean g_socket_listen (GSocket *socket,
  190. GError **error);
  191. GIO_AVAILABLE_IN_ALL
  192. gssize g_socket_receive (GSocket *socket,
  193. gchar *buffer,
  194. gsize size,
  195. GCancellable *cancellable,
  196. GError **error);
  197. GIO_AVAILABLE_IN_2_80
  198. GBytes * g_socket_receive_bytes (GSocket *socket,
  199. gsize size,
  200. gint64 timeout_us,
  201. GCancellable *cancellable,
  202. GError **error);
  203. GIO_AVAILABLE_IN_ALL
  204. gssize g_socket_receive_from (GSocket *socket,
  205. GSocketAddress **address,
  206. gchar *buffer,
  207. gsize size,
  208. GCancellable *cancellable,
  209. GError **error);
  210. GIO_AVAILABLE_IN_2_80
  211. GBytes * g_socket_receive_bytes_from (GSocket *socket,
  212. GSocketAddress **address,
  213. gsize size,
  214. gint64 timeout_us,
  215. GCancellable *cancellable,
  216. GError **error);
  217. GIO_AVAILABLE_IN_ALL
  218. gssize g_socket_send (GSocket *socket,
  219. const gchar *buffer,
  220. gsize size,
  221. GCancellable *cancellable,
  222. GError **error);
  223. GIO_AVAILABLE_IN_ALL
  224. gssize g_socket_send_to (GSocket *socket,
  225. GSocketAddress *address,
  226. const gchar *buffer,
  227. gsize size,
  228. GCancellable *cancellable,
  229. GError **error);
  230. GIO_AVAILABLE_IN_ALL
  231. gssize g_socket_receive_message (GSocket *socket,
  232. GSocketAddress **address,
  233. GInputVector *vectors,
  234. gint num_vectors,
  235. GSocketControlMessage ***messages,
  236. gint *num_messages,
  237. gint *flags,
  238. GCancellable *cancellable,
  239. GError **error);
  240. GIO_AVAILABLE_IN_ALL
  241. gssize g_socket_send_message (GSocket *socket,
  242. GSocketAddress *address,
  243. GOutputVector *vectors,
  244. gint num_vectors,
  245. GSocketControlMessage **messages,
  246. gint num_messages,
  247. gint flags,
  248. GCancellable *cancellable,
  249. GError **error);
  250. GIO_AVAILABLE_IN_2_48
  251. gint g_socket_receive_messages (GSocket *socket,
  252. GInputMessage *messages,
  253. guint num_messages,
  254. gint flags,
  255. GCancellable *cancellable,
  256. GError **error);
  257. GIO_AVAILABLE_IN_2_44
  258. gint g_socket_send_messages (GSocket *socket,
  259. GOutputMessage *messages,
  260. guint num_messages,
  261. gint flags,
  262. GCancellable *cancellable,
  263. GError **error);
  264. GIO_AVAILABLE_IN_ALL
  265. gboolean g_socket_close (GSocket *socket,
  266. GError **error);
  267. GIO_AVAILABLE_IN_ALL
  268. gboolean g_socket_shutdown (GSocket *socket,
  269. gboolean shutdown_read,
  270. gboolean shutdown_write,
  271. GError **error);
  272. GIO_AVAILABLE_IN_ALL
  273. gboolean g_socket_is_closed (GSocket *socket);
  274. GIO_AVAILABLE_IN_ALL
  275. GSource * g_socket_create_source (GSocket *socket,
  276. GIOCondition condition,
  277. GCancellable *cancellable);
  278. GIO_AVAILABLE_IN_ALL
  279. gboolean g_socket_speaks_ipv4 (GSocket *socket);
  280. GIO_AVAILABLE_IN_ALL
  281. GCredentials *g_socket_get_credentials (GSocket *socket,
  282. GError **error);
  283. GIO_AVAILABLE_IN_ALL
  284. gssize g_socket_receive_with_blocking (GSocket *socket,
  285. gchar *buffer,
  286. gsize size,
  287. gboolean blocking,
  288. GCancellable *cancellable,
  289. GError **error);
  290. GIO_AVAILABLE_IN_ALL
  291. gssize g_socket_send_with_blocking (GSocket *socket,
  292. const gchar *buffer,
  293. gsize size,
  294. gboolean blocking,
  295. GCancellable *cancellable,
  296. GError **error);
  297. GIO_AVAILABLE_IN_2_60
  298. GPollableReturn g_socket_send_message_with_timeout (GSocket *socket,
  299. GSocketAddress *address,
  300. const GOutputVector *vectors,
  301. gint num_vectors,
  302. GSocketControlMessage **messages,
  303. gint num_messages,
  304. gint flags,
  305. gint64 timeout_us,
  306. gsize *bytes_written,
  307. GCancellable *cancellable,
  308. GError **error);
  309. GIO_AVAILABLE_IN_2_36
  310. gboolean g_socket_get_option (GSocket *socket,
  311. gint level,
  312. gint optname,
  313. gint *value,
  314. GError **error);
  315. GIO_AVAILABLE_IN_2_36
  316. gboolean g_socket_set_option (GSocket *socket,
  317. gint level,
  318. gint optname,
  319. gint value,
  320. GError **error);
  321. G_END_DECLS
  322. #endif /* __G_SOCKET_H__ */