add gobject-2.0 to the PKG_CHECK_MODULES call
[platform/upstream/libsoup.git] / libsoup / soup-socket.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * Copyright (C) 2000-2003, Ximian, Inc.
4  */
5
6 #ifndef SOUP_SOCKET_H
7 #define SOUP_SOCKET_H 1
8
9 #include <glib-object.h>
10 #include <libsoup/soup-address.h>
11
12 #define SOUP_TYPE_SOCKET            (soup_socket_get_type ())
13 #define SOUP_SOCKET(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SOCKET, SoupSocket))
14 #define SOUP_SOCKET_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SOCKET, SoupSocketClass))
15 #define SOUP_IS_SOCKET(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SOCKET))
16 #define SOUP_IS_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_SOCKET))
17 #define SOUP_SOCKET_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_SOCKET, SoupSocketClass))
18
19 typedef struct SoupSocketPrivate SoupSocketPrivate;
20
21 typedef struct {
22         GObject parent;
23
24         SoupSocketPrivate *priv;
25 } SoupSocket;
26
27 typedef struct {
28         GObjectClass parent_class;
29
30 } SoupSocketClass;
31
32 GType soup_socket_get_type (void);
33
34
35 typedef gpointer SoupSocketConnectId;
36
37 typedef enum {
38         SOUP_SOCKET_CONNECT_ERROR_NONE,
39         SOUP_SOCKET_CONNECT_ERROR_ADDR_RESOLVE,
40         SOUP_SOCKET_CONNECT_ERROR_NETWORK
41 } SoupSocketConnectStatus;
42
43 typedef void (*SoupSocketConnectFn) (SoupSocket              *socket, 
44                                      SoupSocketConnectStatus  status, 
45                                      gpointer                 data);
46
47 SoupSocketConnectId  soup_socket_connect        (const char         *hostname,
48                                                  guint               port, 
49                                                  SoupSocketConnectFn func, 
50                                                  gpointer            data);
51
52 void                 soup_socket_connect_cancel (SoupSocketConnectId id);
53
54 SoupSocket          *soup_socket_connect_sync   (const char         *hostname, 
55                                                  guint               port);
56
57
58 typedef gpointer SoupSocketNewId;
59
60 typedef enum {
61         SOUP_SOCKET_NEW_STATUS_OK,
62         SOUP_SOCKET_NEW_STATUS_ERROR
63 } SoupSocketNewStatus;
64
65 typedef void (*SoupSocketNewFn) (SoupSocket*         socket, 
66                                  SoupSocketNewStatus status, 
67                                  gpointer            data);
68
69 SoupSocketNewId     soup_socket_new             (SoupAddress        *addr, 
70                                                  guint               port,
71                                                  SoupSocketNewFn     func,
72                                                  gpointer            data);
73
74 void                soup_socket_new_cancel      (SoupSocketNewId     id);
75
76 SoupSocket         *soup_socket_new_sync        (SoupAddress        *addr,
77                                                  guint               port);
78
79
80 GIOChannel         *soup_socket_get_iochannel   (SoupSocket*         socket);
81
82 SoupAddress        *soup_socket_get_address     (const SoupSocket*   socket);
83
84 guint               soup_socket_get_port        (const SoupSocket*   socket);
85
86
87 #define SOUP_SERVER_ANY_PORT 0
88
89 SoupSocket         *soup_socket_server_new        (SoupAddress        *local_addr,
90                                                    guint               local_port);
91
92 SoupSocket         *soup_socket_server_accept     (SoupSocket         *socket);
93
94 SoupSocket         *soup_socket_server_try_accept (SoupSocket         *socket);
95
96 #endif /* SOUP_SOCKET_H */