1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * soup-socket.c: ronous Callback-based SOAP Request Queue.
6 * David Helder (dhelder@umich.edu)
7 * Alex Graveley (alex@helixcode.com)
9 * Original code compliments of David Helder's GNET Networking Library.
11 * Copyright (C) 2000, Helix Code, Inc.
15 #define SOUP_SOCKET_H 1
17 #ifdef HAVE_SYS_SOCKET_H
\r
18 #include <sys/socket.h>
\r
22 #include <winsock.h>
\r
27 gboolean soup_gethostbyname (const gchar *hostname,
28 struct sockaddr_in *sa,
31 gchar *soup_gethostbyaddr (const gchar *addr,
35 typedef struct _SoupAddress SoupAddress;
37 typedef gpointer SoupAddressNewId;
40 SOUP_ADDRESS_STATUS_OK,
41 SOUP_ADDRESS_STATUS_ERROR
44 typedef void (*SoupAddressNewFn) (SoupAddress *inetaddr,
45 SoupAddressStatus status,
48 SoupAddressNewId soup_address_new (const gchar* name,
50 SoupAddressNewFn func,
53 void soup_address_new_cancel (SoupAddressNewId id);
55 SoupAddress *soup_address_new_sync (const gchar *name,
58 void soup_address_ref (SoupAddress* ia);
60 void soup_address_unref (SoupAddress* ia);
62 SoupAddress * soup_address_copy (SoupAddress* ia);
65 typedef gpointer SoupAddressGetNameId;
67 typedef void (*SoupAddressGetNameFn) (SoupAddress *inetaddr,
68 SoupAddressStatus status,
72 SoupAddressGetNameId soup_address_get_name (SoupAddress* ia,
73 SoupAddressGetNameFn func,
76 void soup_address_get_name_cancel (SoupAddressGetNameId id);
78 const gchar *soup_address_get_name_sync (SoupAddress *addr);
80 gchar* soup_address_get_canonical_name (SoupAddress* ia);
82 gint soup_address_get_port (const SoupAddress* ia);
84 void soup_address_set_port (const SoupAddress* ia,
87 guint soup_address_hash (const gpointer p);
89 gint soup_address_equal (const gpointer p1,
92 gint soup_address_noport_equal (const gpointer p1,
95 gchar* soup_address_gethostname (void);
97 SoupAddress* soup_address_gethostaddr (void);
100 typedef struct _SoupSocket SoupSocket;
102 typedef gpointer SoupSocketConnectId;
105 SOUP_SOCKET_CONNECT_ERROR_NONE,
106 SOUP_SOCKET_CONNECT_ERROR_ADDR_RESOLVE,
107 SOUP_SOCKET_CONNECT_ERROR_NETWORK
108 } SoupSocketConnectStatus;
110 typedef void (*SoupSocketConnectFn) (SoupSocket *socket,
111 SoupSocketConnectStatus status,
114 SoupSocketConnectId soup_socket_connect (const gchar* hostname,
116 SoupSocketConnectFn func,
119 void soup_socket_connect_cancel (SoupSocketConnectId id);
121 SoupSocket *soup_socket_connect_sync (const gchar *hostname,
126 typedef gpointer SoupSocketNewId;
129 SOUP_SOCKET_NEW_STATUS_OK,
130 SOUP_SOCKET_NEW_STATUS_ERROR
131 } SoupSocketNewStatus;
133 typedef void (*SoupSocketNewFn) (SoupSocket* socket,
134 SoupSocketNewStatus status,
137 SoupSocketNewId soup_socket_new (SoupAddress *addr,
138 SoupSocketNewFn func,
141 void soup_socket_new_cancel (SoupSocketNewId id);
143 SoupSocket *soup_socket_new_sync (SoupAddress *addr);
146 void soup_socket_ref (SoupSocket* s);
148 void soup_socket_unref (SoupSocket* s);
150 GIOChannel *soup_socket_get_iochannel (SoupSocket* socket);
152 SoupAddress *soup_socket_get_address (const SoupSocket* socket);
154 gint soup_socket_get_port (const SoupSocket* socket);
157 #define SOUP_SERVER_ANY_PORT 0
159 SoupSocket *soup_socket_server_new (const gint port);
161 SoupSocket *soup_socket_server_accept (SoupSocket *socket);
163 SoupSocket *soup_socket_server_try_accept (SoupSocket *socket);
165 #endif /* SOUP_SOCKET_H */