libxrdeveloper's documentation
xr-server.h
Go to the documentation of this file.
1 /*
2  * Copyright 2006-2008 Ondrej Jirman <ondrej.jirman@zonio.net>
3  *
4  * This file is part of libxr.
5  *
6  * Libxr is free software: you can redistribute it and/or modify it under the
7  * terms of the GNU Lesser General Public License as published by the Free
8  * Software Foundation, either version 2 of the License, or (at your option) any
9  * later version.
10  *
11  * Libxr is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13  * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14  * details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with libxr. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
27 #ifndef __XR_SERVER_H__
28 #define __XR_SERVER_H__
29 
30 #include <openssl/ssl.h>
31 #include "xr-call.h"
32 #include "xr-http.h"
33 #include "xr-value-utils.h"
34 
37 typedef struct _xr_server xr_server;
38 
42 typedef struct _xr_servlet xr_servlet;
43 
46 typedef gboolean (*servlet_method_t)(xr_servlet* servlet, xr_call* call);
47 
50 typedef gboolean (*servlet_init_t)(xr_servlet* servlet);
51 
54 typedef void (*servlet_fini_t)(xr_servlet* servlet);
55 
58 typedef gboolean (*servlet_download_t)(xr_servlet* servlet);
59 
62 typedef gboolean (*servlet_upload_t)(xr_servlet* servlet);
63 
67 
71 
75 {
76  char* name;
78  void* padding1[4];
79 };
80 
84 {
85  char* name;
86  int size;
96  void* padding1[10];
97 };
98 
99 #define XR_SERVER_ERROR xr_server_error_quark()
100 
101 typedef enum
102 {
103  XR_SERVER_ERROR_FAILED
104 } XRServerError;
105 
106 G_BEGIN_DECLS
107 
117 xr_server* xr_server_new(const char* cert, int threads, GError** err);
118 
127 SSL_CTX* xr_server_get_ssl_context(xr_server* server);
128 
137 gboolean xr_server_bind(xr_server* server, const char* port, GError** err);
138 
150 gboolean xr_server_run(xr_server* server, GError** err);
151 
156 void xr_server_stop(xr_server* server);
157 
162 void xr_server_free(xr_server* server);
163 
171 gboolean xr_server_register_servlet(xr_server* server, xr_servlet_def* servlet);
172 
179 void* xr_servlet_get_priv(xr_servlet* servlet);
180 
188 
195 char* xr_servlet_get_client_ip(xr_servlet* servlet);
196 
207 gboolean xr_server_simple(const char* cert, int threads, const char* bind,
208  xr_servlet_def** servlets, GError** err);
209 
210 GQuark xr_server_error_quark();
211 
212 G_END_DECLS
213 
214 #endif
servlet_method_t pre_call
Pre-call hook.
Definition: xr-server.h:89
int size
Size of the private object.
Definition: xr-server.h:86
SSL_CTX * xr_server_get_ssl_context(xr_server *server)
Get SSL context used by the server.
gboolean xr_server_run(xr_server *server, GError **err)
Run server.
XML-RPC Call Handling API.
xr_http * xr_servlet_get_http(xr_servlet *servlet)
Get http object for the servlet.
void xr_server_stop(xr_server *server)
Stop server.
servlet_method_t post_call
Post-call hook.
Definition: xr-server.h:90
servlet_init_t init
Servlet constructor.
Definition: xr-server.h:87
char * xr_servlet_get_client_ip(xr_servlet *servlet)
Get client IP address.
void xr_server_free(xr_server *server)
Free server object.
void(* servlet_fini_t)(xr_servlet *servlet)
Servlet fini callback type.
Definition: xr-server.h:54
void * xr_servlet_get_priv(xr_servlet *servlet)
Get private data for the servlet.
struct _xr_http xr_http
Opaque HTTP object.
Definition: xr-http.h:46
gboolean(* servlet_download_t)(xr_servlet *servlet)
Servlet download callback type.
Definition: xr-server.h:58
HTTP Transport.
gboolean xr_server_bind(xr_server *server, const char *port, GError **err)
Bind to the specified host/port.
gboolean xr_server_register_servlet(xr_server *server, xr_servlet_def *servlet)
Register servlet type with the server.
servlet_upload_t upload
Upload hook.
Definition: xr-server.h:92
char * name
Method name.
Definition: xr-server.h:76
char * name
Servlet name (/Name resource for client).
Definition: xr-server.h:85
servlet_download_t download
Download hook.
Definition: xr-server.h:91
xr_value parser/builder.
Servlet method description structure.
Definition: xr-server.h:74
G_BEGIN_DECLS xr_server * xr_server_new(const char *cert, int threads, GError **err)
Create new server object.
servlet_method_t cb
Method callback.
Definition: xr-server.h:77
servlet_fini_t fini
Servlet destructor.
Definition: xr-server.h:88
struct _xr_call xr_call
Opaque data structrure for storing intermediate representation of XML-RPC call.
Definition: xr-call.h:49
gboolean(* servlet_upload_t)(xr_servlet *servlet)
Servlet upload callback type.
Definition: xr-server.h:62
gboolean(* servlet_method_t)(xr_servlet *servlet, xr_call *call)
Servlet method callback type.
Definition: xr-server.h:46
Servlet description structure.
Definition: xr-server.h:83
struct _xr_server xr_server
Opaque data structrure that represents XML-RPC server.
Definition: xr-server.h:37
servlet_method_t fallback
Fallback (undefined method) hook.
Definition: xr-server.h:95
gboolean xr_server_simple(const char *cert, int threads, const char *bind, xr_servlet_def **servlets, GError **err)
Use this function as a simple way to quickly start a server.
struct _xr_servlet xr_servlet
Opaque data structrure that represents single instance of servlet object.
Definition: xr-server.h:42
gboolean(* servlet_init_t)(xr_servlet *servlet)
Servlet init callback type.
Definition: xr-server.h:50
int methods_count
Count of the methods implemented by the server.
Definition: xr-server.h:93
xr_servlet_method_def * methods
Methods descriptions.
Definition: xr-server.h:94
Documentation for libxr, Wed Apr 27 2016 22:07:49.