libxrdeveloper's documentation
xr-server.h
Go to the documentation of this file.
00001 /* 
00002  * Copyright 2006-2008 Ondrej Jirman <ondrej.jirman@zonio.net>
00003  * 
00004  * This file is part of libxr.
00005  *
00006  * Libxr is free software: you can redistribute it and/or modify it under the
00007  * terms of the GNU Lesser General Public License as published by the Free
00008  * Software Foundation, either version 2 of the License, or (at your option) any
00009  * later version.
00010  *
00011  * Libxr is distributed in the hope that it will be useful, but WITHOUT ANY
00012  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
00013  * A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
00014  * details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public License
00017  * along with libxr.  If not, see <http://www.gnu.org/licenses/>.
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
Documentation for libxr, Tue Jun 7 2011 17:44:21.