Git init
[profile/ivi/libsoup2.4.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_ASYNC_CONTEXT "async-context"
64 #define SOUP_SERVER_RAW_PATHS     "raw-paths"
65 #define SOUP_SERVER_SERVER_HEADER "server-header"
66
67 SoupServer        *soup_server_new            (const char            *optname1,
68                                                ...) G_GNUC_NULL_TERMINATED;
69
70 gboolean           soup_server_is_https       (SoupServer            *server);
71 guint              soup_server_get_port       (SoupServer            *server);
72
73 SoupSocket        *soup_server_get_listener   (SoupServer            *server);
74
75 void               soup_server_run            (SoupServer            *server);
76 void               soup_server_run_async      (SoupServer            *server);
77 void               soup_server_quit           (SoupServer            *server);
78 void               soup_server_disconnect     (SoupServer            *server);
79
80 GMainContext      *soup_server_get_async_context (SoupServer         *server);
81
82 /* Handlers and auth */
83
84 void               soup_server_add_handler    (SoupServer            *server,
85                                                const char            *path,
86                                                SoupServerCallback     callback,
87                                                gpointer               user_data,
88                                                GDestroyNotify         destroy);
89 void               soup_server_remove_handler (SoupServer            *server,
90                                                const char            *path);
91
92 void               soup_server_add_auth_domain    (SoupServer     *server,
93                                                    SoupAuthDomain *auth_domain);
94 void               soup_server_remove_auth_domain (SoupServer     *server,
95                                                    SoupAuthDomain *auth_domain);
96
97 /* I/O */
98
99 void               soup_server_pause_message   (SoupServer           *server,
100                                                 SoupMessage          *msg);
101 void               soup_server_unpause_message (SoupServer           *server,
102                                                 SoupMessage          *msg);
103
104 /* Client context */
105
106 SoupSocket     *soup_client_context_get_socket      (SoupClientContext *client);
107 SoupAddress    *soup_client_context_get_address     (SoupClientContext *client);
108 const char     *soup_client_context_get_host        (SoupClientContext *client);
109 SoupAuthDomain *soup_client_context_get_auth_domain (SoupClientContext *client);
110 const char     *soup_client_context_get_auth_user   (SoupClientContext *client);
111
112 G_END_DECLS
113
114 #endif /* SOUP_SERVER_H */