Add SoupSession:proxy-resolver
[platform/upstream/libsoup.git] / libsoup / soup-server.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_SERVER_H
7 #define SOUP_SERVER_H 1
8
9 #include <libsoup/soup-types.h>
10 #include <libsoup/soup-uri.h>
11
12 G_BEGIN_DECLS
13
14 #define SOUP_TYPE_SERVER            (soup_server_get_type ())
15 #define SOUP_SERVER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SERVER, SoupServer))
16 #define SOUP_SERVER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SERVER, SoupServerClass))
17 #define SOUP_IS_SERVER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SERVER))
18 #define SOUP_IS_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_SERVER))
19 #define SOUP_SERVER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_SERVER, SoupServerClass))
20
21 typedef struct SoupClientContext SoupClientContext;
22 GType soup_client_context_get_type (void);
23 #define SOUP_TYPE_CLIENT_CONTEXT (soup_client_context_get_type ())
24
25 struct _SoupServer {
26         GObject parent;
27
28 };
29
30 typedef struct {
31         GObjectClass parent_class;
32
33         /* signals */
34         void (*request_started)  (SoupServer *server, SoupMessage *msg,
35                                   SoupClientContext *client);
36         void (*request_read)     (SoupServer *server, SoupMessage *msg,
37                                   SoupClientContext *client);
38         void (*request_finished) (SoupServer *server, SoupMessage *msg,
39                                   SoupClientContext *client);
40         void (*request_aborted)  (SoupServer *server, SoupMessage *msg,
41                                   SoupClientContext *client);
42
43         /* Padding for future expansion */
44         void (*_libsoup_reserved1) (void);
45         void (*_libsoup_reserved2) (void);
46         void (*_libsoup_reserved3) (void);
47         void (*_libsoup_reserved4) (void);
48 } SoupServerClass;
49
50 GType soup_server_get_type (void);
51
52 typedef void (*SoupServerCallback) (SoupServer        *server,
53                                     SoupMessage       *msg, 
54                                     const char        *path,
55                                     GHashTable        *query,
56                                     SoupClientContext *client,
57                                     gpointer           user_data);
58
59 #define SOUP_SERVER_PORT            "port"
60 #define SOUP_SERVER_INTERFACE       "interface"
61 #define SOUP_SERVER_SSL_CERT_FILE   "ssl-cert-file"
62 #define SOUP_SERVER_SSL_KEY_FILE    "ssl-key-file"
63 #define SOUP_SERVER_TLS_CERTIFICATE "tls-certificate"
64 #define SOUP_SERVER_ASYNC_CONTEXT   "async-context"
65 #define SOUP_SERVER_RAW_PATHS       "raw-paths"
66 #define SOUP_SERVER_SERVER_HEADER   "server-header"
67
68 SoupServer        *soup_server_new            (const char            *optname1,
69                                                ...) G_GNUC_NULL_TERMINATED;
70
71 gboolean           soup_server_is_https       (SoupServer            *server);
72 guint              soup_server_get_port       (SoupServer            *server);
73
74 SoupSocket        *soup_server_get_listener   (SoupServer            *server);
75
76 void               soup_server_run            (SoupServer            *server);
77 void               soup_server_run_async      (SoupServer            *server);
78 void               soup_server_quit           (SoupServer            *server);
79 void               soup_server_disconnect     (SoupServer            *server);
80
81 GMainContext      *soup_server_get_async_context (SoupServer         *server);
82
83 /* Handlers and auth */
84
85 void               soup_server_add_handler    (SoupServer            *server,
86                                                const char            *path,
87                                                SoupServerCallback     callback,
88                                                gpointer               user_data,
89                                                GDestroyNotify         destroy);
90 void               soup_server_remove_handler (SoupServer            *server,
91                                                const char            *path);
92
93 void               soup_server_add_auth_domain    (SoupServer     *server,
94                                                    SoupAuthDomain *auth_domain);
95 void               soup_server_remove_auth_domain (SoupServer     *server,
96                                                    SoupAuthDomain *auth_domain);
97
98 /* I/O */
99
100 void               soup_server_pause_message   (SoupServer           *server,
101                                                 SoupMessage          *msg);
102 void               soup_server_unpause_message (SoupServer           *server,
103                                                 SoupMessage          *msg);
104
105 /* Client context */
106
107 SoupSocket     *soup_client_context_get_socket      (SoupClientContext *client);
108 SoupAddress    *soup_client_context_get_address     (SoupClientContext *client);
109 const char     *soup_client_context_get_host        (SoupClientContext *client);
110 SoupAuthDomain *soup_client_context_get_auth_domain (SoupClientContext *client);
111 const char     *soup_client_context_get_auth_user   (SoupClientContext *client);
112
113 G_END_DECLS
114
115 #endif /* SOUP_SERVER_H */