gsocket.h 14.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * Copyright © 2008 Christian Kellner, Samuel Cormier-Iijima
 * Copyright © 2009 Codethink Limited
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General
16
 * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
17 18 19 20 21 22
 *
 * Authors: Christian Kellner <gicmo@gnome.org>
 *          Samuel Cormier-Iijima <sciyoshi@gmail.com>
 *          Ryan Lortie <desrt@desrt.ca>
 */

23 24 25
#ifndef __G_SOCKET_H__
#define __G_SOCKET_H__

26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
#error "Only <gio/gio.h> can be included directly."
#endif

#include <gio/giotypes.h>

G_BEGIN_DECLS

#define G_TYPE_SOCKET                                       (g_socket_get_type ())
#define G_SOCKET(inst)                                      (G_TYPE_CHECK_INSTANCE_CAST ((inst),                     \
                                                             G_TYPE_SOCKET, GSocket))
#define G_SOCKET_CLASS(class)                               (G_TYPE_CHECK_CLASS_CAST ((class),                       \
                                                             G_TYPE_SOCKET, GSocketClass))
#define G_IS_SOCKET(inst)                                   (G_TYPE_CHECK_INSTANCE_TYPE ((inst),                     \
                                                             G_TYPE_SOCKET))
#define G_IS_SOCKET_CLASS(class)                            (G_TYPE_CHECK_CLASS_TYPE ((class),                       \
                                                             G_TYPE_SOCKET))
#define G_SOCKET_GET_CLASS(inst)                            (G_TYPE_INSTANCE_GET_CLASS ((inst),                      \
                                                             G_TYPE_SOCKET, GSocketClass))

typedef struct _GSocketPrivate                              GSocketPrivate;
typedef struct _GSocketClass                                GSocketClass;

struct _GSocketClass
{
  GObjectClass parent_class;

  /*< private >*/

  /* Padding for future expansion */
  void (*_g_reserved1) (void);
  void (*_g_reserved2) (void);
  void (*_g_reserved3) (void);
  void (*_g_reserved4) (void);
  void (*_g_reserved5) (void);
  void (*_g_reserved6) (void);
  void (*_g_reserved7) (void);
  void (*_g_reserved8) (void);
  void (*_g_reserved9) (void);
  void (*_g_reserved10) (void);
};

struct _GSocket
{
  GObject parent_instance;
  GSocketPrivate *priv;
};

74
GLIB_AVAILABLE_IN_ALL
75
GType                  g_socket_get_type                (void) G_GNUC_CONST;
76
GLIB_AVAILABLE_IN_ALL
77 78
GSocket *              g_socket_new                     (GSocketFamily            family,
							 GSocketType              type,
79
							 GSocketProtocol          protocol,
80
							 GError                 **error);
81
GLIB_AVAILABLE_IN_ALL
82 83
GSocket *              g_socket_new_from_fd             (gint                     fd,
							 GError                 **error);
84
GLIB_AVAILABLE_IN_ALL
85
int                    g_socket_get_fd                  (GSocket                 *socket);
86
GLIB_AVAILABLE_IN_ALL
87
GSocketFamily          g_socket_get_family              (GSocket                 *socket);
88
GLIB_AVAILABLE_IN_ALL
89
GSocketType            g_socket_get_socket_type         (GSocket                 *socket);
90
GLIB_AVAILABLE_IN_ALL
91
GSocketProtocol        g_socket_get_protocol            (GSocket                 *socket);
92
GLIB_AVAILABLE_IN_ALL
93 94
GSocketAddress *       g_socket_get_local_address       (GSocket                 *socket,
							 GError                 **error);
95
GLIB_AVAILABLE_IN_ALL
96 97
GSocketAddress *       g_socket_get_remote_address      (GSocket                 *socket,
							 GError                 **error);
98
GLIB_AVAILABLE_IN_ALL
99 100
void                   g_socket_set_blocking            (GSocket                 *socket,
							 gboolean                 blocking);
101
GLIB_AVAILABLE_IN_ALL
102
gboolean               g_socket_get_blocking            (GSocket                 *socket);
103
GLIB_AVAILABLE_IN_ALL
104 105
void                   g_socket_set_keepalive           (GSocket                 *socket,
							 gboolean                 keepalive);
106
GLIB_AVAILABLE_IN_ALL
107
gboolean               g_socket_get_keepalive           (GSocket                 *socket);
108
GLIB_AVAILABLE_IN_ALL
109
gint                   g_socket_get_listen_backlog      (GSocket                 *socket);
110
GLIB_AVAILABLE_IN_ALL
111 112
void                   g_socket_set_listen_backlog      (GSocket                 *socket,
							 gint                     backlog);
113
GLIB_AVAILABLE_IN_ALL
114
guint                  g_socket_get_timeout             (GSocket                 *socket);
115
GLIB_AVAILABLE_IN_ALL
116 117
void                   g_socket_set_timeout             (GSocket                 *socket,
							 guint                    timeout);
118

119
GLIB_AVAILABLE_IN_2_32
120
guint                  g_socket_get_ttl                 (GSocket                 *socket);
121
GLIB_AVAILABLE_IN_2_32
122 123 124
void                   g_socket_set_ttl                 (GSocket                 *socket,
                                                         guint                    ttl);

125
GLIB_AVAILABLE_IN_2_32
126
gboolean               g_socket_get_broadcast           (GSocket                 *socket);
127
GLIB_AVAILABLE_IN_2_32
128 129 130
void                   g_socket_set_broadcast           (GSocket                 *socket,
                                                         gboolean		  broadcast);

131
GLIB_AVAILABLE_IN_2_32
132
gboolean               g_socket_get_multicast_loopback  (GSocket                 *socket);
133
GLIB_AVAILABLE_IN_2_32
134 135
void                   g_socket_set_multicast_loopback  (GSocket                 *socket,
                                                         gboolean		  loopback);
136
GLIB_AVAILABLE_IN_2_32
137
guint                  g_socket_get_multicast_ttl       (GSocket                 *socket);
138
GLIB_AVAILABLE_IN_2_32
139 140
void                   g_socket_set_multicast_ttl       (GSocket                 *socket,
                                                         guint                    ttl);
141
GLIB_AVAILABLE_IN_ALL
142
gboolean               g_socket_is_connected            (GSocket                 *socket);
143
GLIB_AVAILABLE_IN_ALL
144 145 146 147
gboolean               g_socket_bind                    (GSocket                 *socket,
							 GSocketAddress          *address,
							 gboolean                 allow_reuse,
							 GError                 **error);
148
GLIB_AVAILABLE_IN_2_32
149 150
gboolean               g_socket_join_multicast_group    (GSocket                 *socket,
                                                         GInetAddress            *group,
151
                                                         gboolean                 source_specific,
152
                                                         const gchar             *iface,
153
                                                         GError                 **error);
154
GLIB_AVAILABLE_IN_2_32
155 156
gboolean               g_socket_leave_multicast_group   (GSocket                 *socket,
                                                         GInetAddress            *group,
157
                                                         gboolean                 source_specific,
158
                                                         const gchar             *iface,
159
                                                         GError                 **error);
160
GLIB_AVAILABLE_IN_ALL
161 162
gboolean               g_socket_connect                 (GSocket                 *socket,
							 GSocketAddress          *address,
163
							 GCancellable            *cancellable,
164
							 GError                 **error);
165
GLIB_AVAILABLE_IN_ALL
166
gboolean               g_socket_check_connect_result    (GSocket                 *socket,
167
							 GError                 **error);
168

169
GLIB_AVAILABLE_IN_ALL
170 171
gssize                 g_socket_get_available_bytes     (GSocket                 *socket);

172
GLIB_AVAILABLE_IN_ALL
173 174
GIOCondition           g_socket_condition_check         (GSocket                 *socket,
							 GIOCondition             condition);
175
GLIB_AVAILABLE_IN_ALL
176 177 178 179
gboolean               g_socket_condition_wait          (GSocket                 *socket,
							 GIOCondition             condition,
							 GCancellable            *cancellable,
							 GError                 **error);
180
GLIB_AVAILABLE_IN_2_32
181 182 183 184 185
gboolean               g_socket_condition_timed_wait    (GSocket                 *socket,
							 GIOCondition             condition,
							 gint64                   timeout,
							 GCancellable            *cancellable,
							 GError                 **error);
186
GLIB_AVAILABLE_IN_ALL
187
GSocket *              g_socket_accept                  (GSocket                 *socket,
188
							 GCancellable            *cancellable,
189
							 GError                 **error);
190
GLIB_AVAILABLE_IN_ALL
191 192
gboolean               g_socket_listen                  (GSocket                 *socket,
							 GError                 **error);
193
GLIB_AVAILABLE_IN_ALL
194 195 196
gssize                 g_socket_receive                 (GSocket                 *socket,
							 gchar                   *buffer,
							 gsize                    size,
197
							 GCancellable            *cancellable,
198
							 GError                 **error);
199
GLIB_AVAILABLE_IN_ALL
200 201 202 203
gssize                 g_socket_receive_from            (GSocket                 *socket,
							 GSocketAddress         **address,
							 gchar                   *buffer,
							 gsize                    size,
204
							 GCancellable            *cancellable,
205
							 GError                 **error);
206
GLIB_AVAILABLE_IN_ALL
207 208 209
gssize                 g_socket_send                    (GSocket                 *socket,
							 const gchar             *buffer,
							 gsize                    size,
210
							 GCancellable            *cancellable,
211
							 GError                 **error);
212
GLIB_AVAILABLE_IN_ALL
213 214 215 216
gssize                 g_socket_send_to                 (GSocket                 *socket,
							 GSocketAddress          *address,
							 const gchar             *buffer,
							 gsize                    size,
217
							 GCancellable            *cancellable,
218
							 GError                 **error);
219
GLIB_AVAILABLE_IN_ALL
220 221 222 223 224 225 226
gssize                 g_socket_receive_message         (GSocket                 *socket,
							 GSocketAddress         **address,
							 GInputVector            *vectors,
							 gint                     num_vectors,
							 GSocketControlMessage ***messages,
							 gint                    *num_messages,
							 gint                    *flags,
227
							 GCancellable            *cancellable,
228
							 GError                 **error);
229
GLIB_AVAILABLE_IN_ALL
230 231 232 233 234 235 236
gssize                 g_socket_send_message            (GSocket                 *socket,
							 GSocketAddress          *address,
							 GOutputVector           *vectors,
							 gint                     num_vectors,
							 GSocketControlMessage  **messages,
							 gint                     num_messages,
							 gint                     flags,
237
							 GCancellable            *cancellable,
238
							 GError                 **error);
239

240 241 242 243 244 245 246
GLIB_AVAILABLE_IN_2_48
gint                   g_socket_receive_messages        (GSocket                 *socket,
                                                         GInputMessage           *messages,
                                                         guint                    num_messages,
                                                         gint                     flags,
                                                         GCancellable            *cancellable,
                                                         GError                 **error);
247 248 249 250 251 252 253 254
GLIB_AVAILABLE_IN_2_44
gint                   g_socket_send_messages           (GSocket                 *socket,
							 GOutputMessage          *messages,
							 guint                    num_messages,
							 gint                     flags,
							 GCancellable            *cancellable,
							 GError                 **error);

255
GLIB_AVAILABLE_IN_ALL
256 257
gboolean               g_socket_close                   (GSocket                 *socket,
							 GError                 **error);
258
GLIB_AVAILABLE_IN_ALL
259 260 261 262
gboolean               g_socket_shutdown                (GSocket                 *socket,
							 gboolean                 shutdown_read,
							 gboolean                 shutdown_write,
							 GError                 **error);
263
GLIB_AVAILABLE_IN_ALL
264
gboolean               g_socket_is_closed               (GSocket                 *socket);
265
GLIB_AVAILABLE_IN_ALL
266 267 268
GSource *              g_socket_create_source           (GSocket                 *socket,
							 GIOCondition             condition,
							 GCancellable            *cancellable);
269
GLIB_AVAILABLE_IN_ALL
270
gboolean               g_socket_speaks_ipv4             (GSocket                 *socket);
271
GLIB_AVAILABLE_IN_ALL
272 273
GCredentials          *g_socket_get_credentials         (GSocket                 *socket,
                                                         GError                 **error);
274

275
GLIB_AVAILABLE_IN_ALL
276 277 278 279 280 281
gssize                 g_socket_receive_with_blocking   (GSocket                 *socket,
							 gchar                   *buffer,
							 gsize                    size,
							 gboolean                 blocking,
							 GCancellable            *cancellable,
							 GError                 **error);
282
GLIB_AVAILABLE_IN_ALL
283 284 285 286 287 288 289
gssize                 g_socket_send_with_blocking      (GSocket                 *socket,
							 const gchar             *buffer,
							 gsize                    size,
							 gboolean                 blocking,
							 GCancellable            *cancellable,
							 GError                 **error);

290 291 292 293 294 295 296 297 298 299 300 301 302
GLIB_AVAILABLE_IN_2_36
gboolean               g_socket_get_option              (GSocket                 *socket,
							 gint                     level,
							 gint                     optname,
							 gint                    *value,
							 GError                 **error);
GLIB_AVAILABLE_IN_2_36
gboolean               g_socket_set_option              (GSocket                 *socket,
							 gint                     level,
							 gint                     optname,
							 gint                     value,
							 GError                 **error);

303 304 305
G_END_DECLS

#endif /* __G_SOCKET_H__ */