| 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 24 */ |
24 */ |
| 25 #ifndef _GAIM_NETWORK_H_ |
25 #ifndef _GAIM_NETWORK_H_ |
| 26 #define _GAIM_NETWORK_H_ |
26 #define _GAIM_NETWORK_H_ |
| 27 |
27 |
| 28 /* |
|
| 29 * TODO: This API needs a way to cancel pending calls to |
|
| 30 * gaim_network_listen_range() and company. |
|
| 31 */ |
|
| 32 |
|
| 33 #ifdef __cplusplus |
28 #ifdef __cplusplus |
| 34 extern "C" { |
29 extern "C" { |
| 35 #endif |
30 #endif |
| 36 |
31 |
| 37 /**************************************************************************/ |
32 /**************************************************************************/ |
| 38 /** @name Network API */ |
33 /** @name Network API */ |
| 39 /**************************************************************************/ |
34 /**************************************************************************/ |
| 40 /*@{*/ |
35 /*@{*/ |
| |
36 |
| |
37 typedef struct _GaimNetworkListenData GaimNetworkListenData; |
| 41 |
38 |
| 42 typedef void (*GaimNetworkListenCallback) (int listenfd, gpointer data); |
39 typedef void (*GaimNetworkListenCallback) (int listenfd, gpointer data); |
| 43 |
40 |
| 44 /** |
41 /** |
| 45 * Converts a dot-decimal IP address to an array of unsigned |
42 * Converts a dot-decimal IP address to an array of unsigned |
| 127 * @param cb The callback to be invoked when the port to listen on is available. |
124 * @param cb The callback to be invoked when the port to listen on is available. |
| 128 * The file descriptor of the listening socket will be specified in |
125 * The file descriptor of the listening socket will be specified in |
| 129 * this callback, or -1 if no socket could be established. |
126 * this callback, or -1 if no socket could be established. |
| 130 * @param cb_data extra data to be returned when cb is called |
127 * @param cb_data extra data to be returned when cb is called |
| 131 * |
128 * |
| 132 * @return TRUE if the callback will be invoked, or FALSE if unable to obtain |
129 * @return A pointer to a data structure that can be used to cancel |
| 133 * a local socket to listen on. |
130 * the pending listener, or NULL if unable to obtain a local |
| 134 */ |
131 * socket to listen on. |
| 135 gboolean gaim_network_listen(unsigned short port, int socket_type, |
132 */ |
| 136 GaimNetworkListenCallback cb, gpointer cb_data); |
133 GaimNetworkListenData *gaim_network_listen(unsigned short port, |
| |
134 int socket_type, GaimNetworkListenCallback cb, gpointer cb_data); |
| 137 |
135 |
| 138 /** |
136 /** |
| 139 * Opens a listening port selected from a range of ports. The range of |
137 * Opens a listening port selected from a range of ports. The range of |
| 140 * ports used is chosen in the following manner: |
138 * ports used is chosen in the following manner: |
| 141 * If a range is specified in preferences, these values are used. |
139 * If a range is specified in preferences, these values are used. |
| 159 * @param cb The callback to be invoked when the port to listen on is available. |
157 * @param cb The callback to be invoked when the port to listen on is available. |
| 160 * The file descriptor of the listening socket will be specified in |
158 * The file descriptor of the listening socket will be specified in |
| 161 * this callback, or -1 if no socket could be established. |
159 * this callback, or -1 if no socket could be established. |
| 162 * @param cb_data extra data to be returned when cb is called |
160 * @param cb_data extra data to be returned when cb is called |
| 163 * |
161 * |
| 164 * @return TRUE if the callback will be invoked, or FALSE if unable to obtain |
162 * @return A pointer to a data structure that can be used to cancel |
| 165 * a local socket to listen on. |
163 * the pending listener, or NULL if unable to obtain a local |
| 166 */ |
164 * socket to listen on. |
| 167 gboolean gaim_network_listen_range(unsigned short start, unsigned short end, |
165 */ |
| 168 int socket_type, GaimNetworkListenCallback cb, gpointer cb_data); |
166 GaimNetworkListenData *gaim_network_listen_range(unsigned short start, |
| |
167 unsigned short end, int socket_type, |
| |
168 GaimNetworkListenCallback cb, gpointer cb_data); |
| |
169 |
| |
170 /** |
| |
171 * This can be used to cancel any in-progress listener connection |
| |
172 * by passing in the return value from either gaim_network_listen() |
| |
173 * or gaim_network_listen_range(). |
| |
174 * |
| |
175 * @param listen_data This listener attempt will be canceled and |
| |
176 * the struct will be freed. |
| |
177 */ |
| |
178 void gaim_network_listen_cancel(GaimNetworkListenData *listen_data); |
| 169 |
179 |
| 170 /** |
180 /** |
| 171 * Gets a port number from a file descriptor. |
181 * Gets a port number from a file descriptor. |
| 172 * |
182 * |
| 173 * @param fd The file descriptor. This should be a tcp socket. The current |
183 * @param fd The file descriptor. This should be a tcp socket. The current |