Bump development version to 0.7.99.
[platform/upstream/libsoup.git] / libsoup / soup-socket.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * soup-socket.c: ronous Callback-based SOAP Request Queue.
4  *
5  * Authors:
6  *      David Helder  (dhelder@umich.edu)
7  *      Alex Graveley (alex@helixcode.com)
8  * 
9  * Original code compliments of David Helder's GNET Networking Library.
10  *
11  * Copyright (C) 2000, Helix Code, Inc.
12  */
13
14 #ifndef SOUP_SOCKET_H
15 #define SOUP_SOCKET_H 1
16
17 #include <glib.h>
18
19 typedef struct _SoupAddress SoupAddress;
20
21 typedef gpointer SoupAddressNewId;
22
23 typedef enum {
24         SOUP_ADDRESS_STATUS_OK,
25         SOUP_ADDRESS_STATUS_ERROR
26 } SoupAddressStatus;
27
28 typedef void (*SoupAddressNewFn) (SoupAddress       *inetaddr, 
29                                   SoupAddressStatus  status, 
30                                   gpointer           user_data);
31
32 SoupAddressNewId     soup_address_new                (const gchar*       name, 
33                                                       const gint         port, 
34                                                       SoupAddressNewFn   func, 
35                                                       gpointer           data);
36
37 void                 soup_address_new_cancel         (SoupAddressNewId   id);
38
39 SoupAddress         *soup_address_new_sync           (const gchar       *name, 
40                                                       const gint         port);
41
42 SoupAddress         *soup_address_lookup_in_cache    (const gchar       *name, 
43                                                       const gint         port);
44
45 void                 soup_address_ref                (SoupAddress*       ia);
46
47 void                 soup_address_unref              (SoupAddress*       ia);
48
49 SoupAddress *        soup_address_copy               (SoupAddress*       ia);
50
51
52 typedef gpointer SoupAddressGetNameId;
53
54 typedef void (*SoupAddressGetNameFn) (SoupAddress       *inetaddr, 
55                                       SoupAddressStatus  status, 
56                                       const gchar       *name,
57                                       gpointer           user_data);
58
59 SoupAddressGetNameId soup_address_get_name           (SoupAddress*         ia, 
60                                                       SoupAddressGetNameFn func,
61                                                       gpointer             data);
62
63 void                 soup_address_get_name_cancel    (SoupAddressGetNameId id);
64
65 const gchar         *soup_address_get_name_sync      (SoupAddress *addr);
66
67 gchar*               soup_address_get_canonical_name (SoupAddress*         ia);
68
69 gint                 soup_address_get_port           (const SoupAddress*   ia);
70
71 const struct sockaddr *
72                      soup_address_get_sockaddr       (SoupAddress         *ia,
73                                                       guint               *addrlen);
74
75 guint                soup_address_hash               (const gpointer       p);
76
77 gint                 soup_address_equal              (const gpointer       p1, 
78                                                       const gpointer       p2);
79
80 gint                 soup_address_noport_equal       (const gpointer       p1, 
81                                                       const gpointer       p2);
82
83 gchar*               soup_address_gethostname        (void);
84
85 SoupAddress*         soup_address_gethostaddr        (void);
86
87
88 typedef struct _SoupSocket SoupSocket;
89
90 typedef gpointer SoupSocketConnectId;
91
92 typedef enum {
93         SOUP_SOCKET_CONNECT_ERROR_NONE,
94         SOUP_SOCKET_CONNECT_ERROR_ADDR_RESOLVE,
95         SOUP_SOCKET_CONNECT_ERROR_NETWORK
96 } SoupSocketConnectStatus;
97
98 typedef void (*SoupSocketConnectFn) (SoupSocket              *socket, 
99                                      SoupSocketConnectStatus  status, 
100                                      gpointer                 data);
101
102 SoupSocketConnectId  soup_socket_connect        (const gchar*        hostname,
103                                                  const gint          port, 
104                                                  SoupSocketConnectFn func, 
105                                                  gpointer            data);
106
107 void                 soup_socket_connect_cancel (SoupSocketConnectId id);
108
109 SoupSocket          *soup_socket_connect_sync   (const gchar        *hostname, 
110                                                  const gint          port);
111
112
113 typedef gpointer SoupSocketNewId;
114
115 typedef enum {
116         SOUP_SOCKET_NEW_STATUS_OK,
117         SOUP_SOCKET_NEW_STATUS_ERROR
118 } SoupSocketNewStatus;
119
120 typedef void (*SoupSocketNewFn) (SoupSocket*         socket, 
121                                  SoupSocketNewStatus status, 
122                                  gpointer            data);
123
124 SoupSocketNewId     soup_socket_new             (SoupAddress        *addr, 
125                                                  SoupSocketNewFn     func,
126                                                  gpointer            data);
127
128 void                soup_socket_new_cancel      (SoupSocketNewId     id);
129
130 SoupSocket         *soup_socket_new_sync        (SoupAddress        *addr);
131
132
133 void                soup_socket_ref             (SoupSocket*         s);
134
135 void                soup_socket_unref           (SoupSocket*         s);
136
137 GIOChannel         *soup_socket_get_iochannel   (SoupSocket*         socket);
138
139 SoupAddress        *soup_socket_get_address     (const SoupSocket*   socket);
140
141 gint                soup_socket_get_port        (const SoupSocket*   socket);
142
143
144 #define SOUP_SERVER_ANY_PORT 0
145
146 SoupSocket         *soup_socket_server_new        (const gint          port);
147
148 SoupSocket         *soup_socket_server_accept     (SoupSocket         *socket);
149
150 SoupSocket         *soup_socket_server_try_accept (SoupSocket         *socket);
151
152 #endif /* SOUP_SOCKET_H */