Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00027 #ifndef __XR_SERVER_H__
00028 #define __XR_SERVER_H__
00029
00030 #include <openssl/ssl.h>
00031 #include "xr-call.h"
00032 #include "xr-http.h"
00033 #include "xr-value-utils.h"
00034
00037 typedef struct _xr_server xr_server;
00038
00042 typedef struct _xr_servlet xr_servlet;
00043
00046 typedef gboolean (*servlet_method_t)(xr_servlet* servlet, xr_call* call);
00047
00050 typedef gboolean (*servlet_init_t)(xr_servlet* servlet);
00051
00054 typedef void (*servlet_fini_t)(xr_servlet* servlet);
00055
00058 typedef gboolean (*servlet_download_t)(xr_servlet* servlet);
00059
00062 typedef gboolean (*servlet_upload_t)(xr_servlet* servlet);
00063
00066 typedef struct _xr_servlet_method_def xr_servlet_method_def;
00067
00070 typedef struct _xr_servlet_def xr_servlet_def;
00071
00074 struct _xr_servlet_method_def
00075 {
00076 char* name;
00077 servlet_method_t cb;
00078 void* padding1[4];
00079 };
00080
00083 struct _xr_servlet_def
00084 {
00085 char* name;
00086 int size;
00087 servlet_init_t init;
00088 servlet_fini_t fini;
00089 servlet_method_t pre_call;
00090 servlet_method_t post_call;
00091 servlet_download_t download;
00092 servlet_upload_t upload;
00093 int methods_count;
00094 xr_servlet_method_def* methods;
00095 servlet_method_t fallback;
00096 void* padding1[10];
00097 };
00098
00099 #define XR_SERVER_ERROR xr_server_error_quark()
00100
00101 typedef enum
00102 {
00103 XR_SERVER_ERROR_FAILED
00104 } XRServerError;
00105
00106 G_BEGIN_DECLS
00107
00117 xr_server* xr_server_new(const char* cert, int threads, GError** err);
00118
00127 SSL_CTX* xr_server_get_ssl_context(xr_server* server);
00128
00137 gboolean xr_server_bind(xr_server* server, const char* port, GError** err);
00138
00150 gboolean xr_server_run(xr_server* server, GError** err);
00151
00156 void xr_server_stop(xr_server* server);
00157
00162 void xr_server_free(xr_server* server);
00163
00171 gboolean xr_server_register_servlet(xr_server* server, xr_servlet_def* servlet);
00172
00179 void* xr_servlet_get_priv(xr_servlet* servlet);
00180
00187 xr_http* xr_servlet_get_http(xr_servlet* servlet);
00188
00195 char* xr_servlet_get_client_ip(xr_servlet* servlet);
00196
00207 gboolean xr_server_simple(const char* cert, int threads, const char* bind,
00208 xr_servlet_def** servlets, GError** err);
00209
00210 GQuark xr_server_error_quark();
00211
00212 G_END_DECLS
00213
00214 #endif