1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * soup-socket.c: ronous Callback-based HTTP 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
19 typedef struct _SoupAddress SoupAddress;
21 typedef gpointer SoupAddressNewId;
24 SOUP_ADDRESS_STATUS_OK,
25 SOUP_ADDRESS_STATUS_ERROR
28 typedef void (*SoupAddressNewFn) (SoupAddress *inetaddr,
29 SoupAddressStatus status,
32 SoupAddressNewId soup_address_new (const gchar* name,
34 SoupAddressNewFn func,
37 void soup_address_new_cancel (SoupAddressNewId id);
39 SoupAddress *soup_address_new_sync (const gchar *name,
42 SoupAddress *soup_address_lookup_in_cache (const gchar *name,
45 void soup_address_ref (SoupAddress* ia);
47 void soup_address_unref (SoupAddress* ia);
49 SoupAddress * soup_address_copy (SoupAddress* ia);
52 typedef gpointer SoupAddressGetNameId;
54 typedef void (*SoupAddressGetNameFn) (SoupAddress *inetaddr,
55 SoupAddressStatus status,
59 SoupAddressGetNameId soup_address_get_name (SoupAddress* ia,
60 SoupAddressGetNameFn func,
63 void soup_address_get_name_cancel (SoupAddressGetNameId id);
65 const gchar *soup_address_get_name_sync (SoupAddress *addr);
67 gchar* soup_address_get_canonical_name (SoupAddress* ia);
69 gint soup_address_get_port (const SoupAddress* ia);
71 const struct sockaddr *
72 soup_address_get_sockaddr (SoupAddress *ia,
75 guint soup_address_hash (const gpointer p);
77 gint soup_address_equal (const gpointer p1,
80 gint soup_address_noport_equal (const gpointer p1,
83 gchar* soup_address_gethostname (void);
85 SoupAddress* soup_address_gethostaddr (void);
88 typedef struct _SoupSocket SoupSocket;
90 typedef gpointer SoupSocketConnectId;
93 SOUP_SOCKET_CONNECT_ERROR_NONE,
94 SOUP_SOCKET_CONNECT_ERROR_ADDR_RESOLVE,
95 SOUP_SOCKET_CONNECT_ERROR_NETWORK
96 } SoupSocketConnectStatus;
98 typedef void (*SoupSocketConnectFn) (SoupSocket *socket,
99 SoupSocketConnectStatus status,
102 SoupSocketConnectId soup_socket_connect (const gchar* hostname,
104 SoupSocketConnectFn func,
107 void soup_socket_connect_cancel (SoupSocketConnectId id);
109 SoupSocket *soup_socket_connect_sync (const gchar *hostname,
113 typedef gpointer SoupSocketNewId;
116 SOUP_SOCKET_NEW_STATUS_OK,
117 SOUP_SOCKET_NEW_STATUS_ERROR
118 } SoupSocketNewStatus;
120 typedef void (*SoupSocketNewFn) (SoupSocket* socket,
121 SoupSocketNewStatus status,
124 SoupSocketNewId soup_socket_new (SoupAddress *addr,
125 SoupSocketNewFn func,
128 void soup_socket_new_cancel (SoupSocketNewId id);
130 SoupSocket *soup_socket_new_sync (SoupAddress *addr);
133 void soup_socket_ref (SoupSocket* s);
135 void soup_socket_unref (SoupSocket* s);
137 GIOChannel *soup_socket_get_iochannel (SoupSocket* socket);
139 SoupAddress *soup_socket_get_address (const SoupSocket* socket);
141 gint soup_socket_get_port (const SoupSocket* socket);
144 #define SOUP_SERVER_ANY_PORT 0
146 SoupSocket *soup_socket_server_new (const gint port);
148 SoupSocket *soup_socket_server_accept (SoupSocket *socket);
150 SoupSocket *soup_socket_server_try_accept (SoupSocket *socket);
152 #endif /* SOUP_SOCKET_H */