142 lines
5.6 KiB
C
142 lines
5.6 KiB
C
#ifndef CLIENT_GLOBAL_H_INCLUDED
|
|
#define CLIENT_GLOBAL_H_INCLUDED
|
|
|
|
/*=========================================================================
|
|
** Initialization and Shutdown
|
|
**=========================================================================
|
|
** These routines initialize and terminate the XML-RPC client. If you're
|
|
** already using libwww on your own, you can pass
|
|
** XMLRPC_CLIENT_SKIP_LIBWWW_INIT to avoid initializing it twice.
|
|
*/
|
|
|
|
#define XMLRPC_CLIENT_NO_FLAGS (0)
|
|
#define XMLRPC_CLIENT_SKIP_LIBWWW_INIT (1)
|
|
|
|
extern void
|
|
xmlrpc_client_init(int const flags,
|
|
const char * const appname,
|
|
const char * const appversion);
|
|
|
|
void
|
|
xmlrpc_client_init2(xmlrpc_env * const env,
|
|
int const flags,
|
|
const char * const appname,
|
|
const char * const appversion,
|
|
const struct xmlrpc_clientparms * const clientparms,
|
|
unsigned int const parm_size);
|
|
|
|
extern void
|
|
xmlrpc_client_cleanup(void);
|
|
|
|
/*=========================================================================
|
|
** xmlrpc_client_call
|
|
**=========================================================================
|
|
** A synchronous XML-RPC client. Do not attempt to call any of these
|
|
** functions from inside an asynchronous callback!
|
|
*/
|
|
|
|
xmlrpc_value *
|
|
xmlrpc_client_call(xmlrpc_env * const envP,
|
|
const char * const server_url,
|
|
const char * const method_name,
|
|
const char * const format,
|
|
...);
|
|
|
|
xmlrpc_value *
|
|
xmlrpc_client_call_params(xmlrpc_env * const envP,
|
|
const char * const serverUrl,
|
|
const char * const methodName,
|
|
xmlrpc_value * const paramArrayP);
|
|
|
|
xmlrpc_value *
|
|
xmlrpc_client_call_server(xmlrpc_env * const envP,
|
|
const xmlrpc_server_info * const server,
|
|
const char * const method_name,
|
|
const char * const format,
|
|
...);
|
|
|
|
xmlrpc_value *
|
|
xmlrpc_client_call_server_params(
|
|
xmlrpc_env * const envP,
|
|
const xmlrpc_server_info * const serverP,
|
|
const char * const method_name,
|
|
xmlrpc_value * const paramArrayP);
|
|
|
|
void
|
|
xmlrpc_client_transport_call(
|
|
xmlrpc_env * const envP,
|
|
void * const reserved, /* for client handle */
|
|
const xmlrpc_server_info * const serverP,
|
|
xmlrpc_mem_block * const callXmlP,
|
|
xmlrpc_mem_block ** const respXmlPP);
|
|
|
|
|
|
/*=========================================================================
|
|
** xmlrpc_client_call_asynch
|
|
**=========================================================================
|
|
** An asynchronous XML-RPC client.
|
|
*/
|
|
|
|
/* Make an asynchronous XML-RPC call. We make internal copies of all
|
|
** arguments except user_data, so you can deallocate them safely as soon
|
|
** as you return. Errors will be passed to the callback. You will need
|
|
** to run the event loop somehow; see below.
|
|
** WARNING: If an error occurs while building the argument, the
|
|
** response handler will be called with a NULL param_array. */
|
|
void
|
|
xmlrpc_client_call_asynch(const char * const server_url,
|
|
const char * const method_name,
|
|
xmlrpc_response_handler callback,
|
|
void * const user_data,
|
|
const char * const format,
|
|
...);
|
|
|
|
/* As above, but use an xmlrpc_server_info object. The server object can be
|
|
** safely destroyed as soon as this function returns. */
|
|
void
|
|
xmlrpc_client_call_server_asynch(xmlrpc_server_info * const server,
|
|
const char * const method_name,
|
|
xmlrpc_response_handler callback,
|
|
void * const user_data,
|
|
const char * const format,
|
|
...);
|
|
|
|
/* As above, but the parameter list is supplied as an xmlrpc_value
|
|
** containing an array.
|
|
*/
|
|
void
|
|
xmlrpc_client_call_asynch_params(const char * const server_url,
|
|
const char * const method_name,
|
|
xmlrpc_response_handler callback,
|
|
void * const user_data,
|
|
xmlrpc_value * const paramArrayP);
|
|
|
|
/* As above, but use an xmlrpc_server_info object. The server object can be
|
|
** safely destroyed as soon as this function returns. */
|
|
void
|
|
xmlrpc_client_call_server_asynch_params(
|
|
xmlrpc_server_info * const server,
|
|
const char * const method_name,
|
|
xmlrpc_response_handler callback,
|
|
void * const user_data,
|
|
xmlrpc_value * const paramArrayP);
|
|
|
|
/*=========================================================================
|
|
** Event Loop Interface
|
|
**=========================================================================
|
|
** These functions can be used to run the XML-RPC event loop. If you
|
|
** don't like these, you can also run the libwww event loop directly.
|
|
*/
|
|
|
|
/* Finish all outstanding asynchronous calls. Alternatively, the loop
|
|
** will exit if someone calls xmlrpc_client_event_loop_end. */
|
|
extern void
|
|
xmlrpc_client_event_loop_finish_asynch(void);
|
|
|
|
|
|
/* Finish all outstanding asynchronous calls. */
|
|
extern void
|
|
xmlrpc_client_event_loop_finish_asynch_timeout(unsigned long const milliseconds);
|
|
|
|
#endif
|