1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
/*
* Copyright (C) 2000-2003, Ximian, Inc.
*/
#pragma once
#include "soup-types.h"
#include "soup-uri-utils.h"
#include "soup-websocket-connection.h"
G_BEGIN_DECLS
#define SOUP_TYPE_SERVER (soup_server_get_type ())
SOUP_AVAILABLE_IN_ALL
G_DECLARE_DERIVABLE_TYPE (SoupServer, soup_server, SOUP, SERVER, GObject)
typedef enum {
SOUP_SERVER_LISTEN_HTTPS = (1 << 0),
SOUP_SERVER_LISTEN_IPV4_ONLY = (1 << 1),
SOUP_SERVER_LISTEN_IPV6_ONLY = (1 << 2)
} SoupServerListenOptions;
struct _SoupServerClass {
GObjectClass parent_class;
/* signals */
void (*request_started) (SoupServer *server,
SoupServerMessage *msg);
void (*request_read) (SoupServer *server,
SoupServerMessage *msg);
void (*request_finished) (SoupServer *server,
SoupServerMessage *msg);
void (*request_aborted) (SoupServer *server,
SoupServerMessage *msg);
gpointer padding[6];
};
SOUP_AVAILABLE_IN_ALL
SoupServer *soup_server_new (const char *optname1,
...) G_GNUC_NULL_TERMINATED;
SOUP_AVAILABLE_IN_ALL
void soup_server_set_tls_certificate (SoupServer *server,
GTlsCertificate *certificate);
SOUP_AVAILABLE_IN_ALL
GTlsCertificate *soup_server_get_tls_certificate (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
void soup_server_set_tls_database (SoupServer *server,
GTlsDatabase *tls_database);
SOUP_AVAILABLE_IN_ALL
GTlsDatabase *soup_server_get_tls_database (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
void soup_server_set_tls_auth_mode (SoupServer *server,
GTlsAuthenticationMode mode);
SOUP_AVAILABLE_IN_ALL
GTlsAuthenticationMode soup_server_get_tls_auth_mode (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
gboolean soup_server_is_https (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
gboolean soup_server_listen (SoupServer *server,
GSocketAddress *address,
SoupServerListenOptions options,
GError **error);
SOUP_AVAILABLE_IN_ALL
gboolean soup_server_listen_all (SoupServer *server,
guint port,
SoupServerListenOptions options,
GError **error);
SOUP_AVAILABLE_IN_ALL
gboolean soup_server_listen_local (SoupServer *server,
guint port,
SoupServerListenOptions options,
GError **error);
SOUP_AVAILABLE_IN_ALL
gboolean soup_server_listen_socket (SoupServer *server,
GSocket *socket,
SoupServerListenOptions options,
GError **error);
SOUP_AVAILABLE_IN_ALL
GSList *soup_server_get_uris (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
GSList *soup_server_get_listeners (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
void soup_server_disconnect (SoupServer *server);
SOUP_AVAILABLE_IN_ALL
gboolean soup_server_accept_iostream (SoupServer *server,
GIOStream *stream,
GSocketAddress *local_addr,
GSocketAddress *remote_addr,
GError **error);
/* Handlers and auth */
typedef void (*SoupServerCallback) (SoupServer *server,
SoupServerMessage *msg,
const char *path,
GHashTable *query,
gpointer user_data);
SOUP_AVAILABLE_IN_ALL
void soup_server_add_handler (SoupServer *server,
const char *path,
SoupServerCallback callback,
gpointer user_data,
GDestroyNotify destroy);
SOUP_AVAILABLE_IN_ALL
void soup_server_add_early_handler (SoupServer *server,
const char *path,
SoupServerCallback callback,
gpointer user_data,
GDestroyNotify destroy);
typedef void (*SoupServerWebsocketCallback) (SoupServer *server,
SoupServerMessage *msg,
const char *path,
SoupWebsocketConnection *connection,
gpointer user_data);
SOUP_AVAILABLE_IN_ALL
void soup_server_add_websocket_handler (SoupServer *server,
const char *path,
const char *origin,
char **protocols,
SoupServerWebsocketCallback callback,
gpointer user_data,
GDestroyNotify destroy);
SOUP_AVAILABLE_IN_ALL
void soup_server_add_websocket_extension (SoupServer *server,
GType extension_type);
SOUP_AVAILABLE_IN_ALL
void soup_server_remove_websocket_extension (SoupServer *server,
GType extension_type);
SOUP_AVAILABLE_IN_ALL
void soup_server_remove_handler (SoupServer *server,
const char *path);
SOUP_AVAILABLE_IN_ALL
void soup_server_add_auth_domain (SoupServer *server,
SoupAuthDomain *auth_domain);
SOUP_AVAILABLE_IN_ALL
void soup_server_remove_auth_domain (SoupServer *server,
SoupAuthDomain *auth_domain);
/* I/O */
SOUP_DEPRECATED_IN_3_2_FOR(soup_server_message_pause)
void soup_server_pause_message (SoupServer *server,
SoupServerMessage *msg);
SOUP_DEPRECATED_IN_3_2_FOR(soup_server_message_unpause)
void soup_server_unpause_message (SoupServer *server,
SoupServerMessage *msg);
G_END_DECLS
|