initial load of upstream version 1.06.32
[xmlrpc-c] / include / xmlrpc-c / transport.h
1 /* Copyright information is at the end of the file */
2 #ifndef  XMLRPC_TRANSPORT_H_INCLUDED
3 #define  XMLRPC_TRANSPORT_H_INCLUDED
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #include "xmlrpc-c/base.h"
10
11 struct xmlrpc_call_info;
12
13 struct xmlrpc_client_transport;
14
15 /*=========================================================================
16 **  Transport function type declarations.
17 **=========================================================================
18 */
19 typedef void (*xmlrpc_transport_setup)(xmlrpc_env * const envP);
20
21 typedef void (*xmlrpc_transport_teardown)(void);
22
23 typedef void (*xmlrpc_transport_create)(
24     xmlrpc_env *                      const envP,
25     int                               const flags,
26     const char *                      const appname,
27     const char *                      const appversion,
28     const struct xmlrpc_xportparms *  const transportparmsP,
29     size_t                            const transportparm_size,
30     struct xmlrpc_client_transport ** const handlePP);
31     
32 typedef void (*xmlrpc_transport_destroy)(
33     struct xmlrpc_client_transport * const clientTransportP);
34
35 typedef void (*xmlrpc_transport_asynch_complete)(
36     struct xmlrpc_call_info * const callInfoP,
37     xmlrpc_mem_block *        const responseXmlP,
38     xmlrpc_env                const env);
39
40 typedef void (*xmlrpc_transport_send_request)(
41     xmlrpc_env *                     const envP, 
42     struct xmlrpc_client_transport * const clientTransportP,
43     const xmlrpc_server_info *       const serverP,
44     xmlrpc_mem_block *               const xmlP,
45     xmlrpc_transport_asynch_complete       complete,
46     struct xmlrpc_call_info *        const callInfoP);
47
48 typedef void (*xmlrpc_transport_call)(
49     xmlrpc_env *                     const envP,
50     struct xmlrpc_client_transport * const clientTransportP,
51     const xmlrpc_server_info *       const serverP,
52     xmlrpc_mem_block *               const xmlP,
53     xmlrpc_mem_block **              const responsePP);
54
55 typedef enum {timeout_no, timeout_yes} xmlrpc_timeoutType;
56
57 typedef unsigned long xmlrpc_timeout;
58     /* A timeout in milliseconds. */
59
60 typedef void (*xmlrpc_transport_finish_asynch)(
61     struct xmlrpc_client_transport * const clientTransportP,
62     xmlrpc_timeoutType               const timeoutType,
63     xmlrpc_timeout                   const timeout);
64
65
66 struct xmlrpc_client_transport_ops {
67
68     xmlrpc_transport_setup         setup_global_const;
69     xmlrpc_transport_teardown      teardown_global_const;
70     xmlrpc_transport_create        create;
71     xmlrpc_transport_destroy       destroy;
72     xmlrpc_transport_send_request  send_request;
73     xmlrpc_transport_call          call;
74     xmlrpc_transport_finish_asynch finish_asynch;
75 };
76
77 #ifdef __cplusplus
78 }
79 #endif
80
81 #endif