Annotation of embedaddon/libpdel/structs/xmlrpc.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (c) 2001-2002 Packet Design, LLC.
4: * All rights reserved.
5: *
6: * Subject to the following obligations and disclaimer of warranty,
7: * use and redistribution of this software, in source or object code
8: * forms, with or without modifications are expressly permitted by
9: * Packet Design; provided, however, that:
10: *
11: * (i) Any and all reproductions of the source or object code
12: * must include the copyright notice above and the following
13: * disclaimer of warranties; and
14: * (ii) No rights are granted, in any manner or form, to use
15: * Packet Design trademarks, including the mark "PACKET DESIGN"
16: * on advertising, endorsements, or otherwise except as such
17: * appears in the above copyright notice or in the software.
18: *
19: * THIS SOFTWARE IS BEING PROVIDED BY PACKET DESIGN "AS IS", AND
20: * TO THE MAXIMUM EXTENT PERMITTED BY LAW, PACKET DESIGN MAKES NO
21: * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING
22: * THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED
23: * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
24: * OR NON-INFRINGEMENT. PACKET DESIGN DOES NOT WARRANT, GUARANTEE,
25: * OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS
26: * OF THE USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
27: * RELIABILITY OR OTHERWISE. IN NO EVENT SHALL PACKET DESIGN BE
28: * LIABLE FOR ANY DAMAGES RESULTING FROM OR ARISING OUT OF ANY USE
29: * OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY DIRECT,
30: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL
31: * DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF
32: * USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY THEORY OF
33: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
35: * THE USE OF THIS SOFTWARE, EVEN IF PACKET DESIGN IS ADVISED OF
36: * THE POSSIBILITY OF SUCH DAMAGE.
37: *
38: * Author: Archie Cobbs <archie@freebsd.org>
39: */
40:
41: #ifndef _PDEL_STRUCTS_XMLRPC_H_
42: #define _PDEL_STRUCTS_XMLRPC_H_
43:
44: #define XML_RPC_URL "/RPC2"
45: #define XML_RPC_REQUEST_TAG "methodCall"
46: #define XML_RPC_REPLY_TAG "methodResponse"
47: #define XML_RPC_METHOD_NAME_TAG "methodName"
48:
49: /*
50: * XML-RPC structure definitions
51: */
52:
53: DEFINE_STRUCTS_UNION(xmlrpc_value_union, xmlrpc_value);
54: DEFINE_STRUCTS_UNION(xmlrpc_response_union, xmlrpc_response);
55: DEFINE_STRUCTS_ARRAY(xmlrpc_value_array, struct xmlrpc_value_union);
56: DEFINE_STRUCTS_ARRAY(xmlrpc_param_array, struct xmlrpc_param);
57: DEFINE_STRUCTS_ARRAY(xmlrpc_struct, struct xmlrpc_member);
58:
59: /* Member (of a structure) */
60: struct xmlrpc_member {
61: char *name;
62: struct xmlrpc_value_union value;
63: };
64:
65: /* Array */
66: struct xmlrpc_array {
67: struct xmlrpc_value_array data;
68: };
69:
70: /* Parameter (for either a request or a response) */
71: struct xmlrpc_param {
72: struct xmlrpc_value_union value;
73: };
74:
75: /* Value */
76: union xmlrpc_value {
77: char *string;
78: int32_t i4;
79: int32_t int_;
80: u_char boolean;
81: double double_;
82: time_t dateTime_iso8601;
83: struct structs_data base64;
84: struct xmlrpc_value_array array;
85: struct xmlrpc_struct struct_;
86: };
87:
88: /* Fault */
89: struct xmlrpc_fault {
90: struct xmlrpc_value_union value; /* see below */
91: };
92:
93: /* Fault in compact form */
94: struct xmlrpc_compact_fault {
95: int32_t faultCode;
96: char *faultString;
97: };
98:
99: /* Request */
100: struct xmlrpc_request {
101: char *methodName;
102: struct xmlrpc_param_array params;
103: };
104:
105: /* Response */
106: union xmlrpc_response {
107: struct xmlrpc_param_array params; /* params.length == 1 */
108: struct xmlrpc_fault fault;
109: };
110:
111: __BEGIN_DECLS
112:
113: /*
114: * Type describing an XML-RPC value in XML-RPC exploded form.
115: * This type describes a 'struct xmlrpc_value_union'.
116: */
117: extern const struct structs_type structs_type_xmlrpc_value;
118:
119: /*
120: * Type describing an XML-RPC array in XML-RPC exploded form.
121: * This type describes a 'struct xmlrpc_array'.
122: */
123: extern const struct structs_type structs_type_xmlrpc_array;
124:
125: /*
126: * Type describing an XML-RPC member in XML-RPC exploded form.
127: * This type describes a 'struct xmlrpc_member'.
128: */
129: extern const struct structs_type structs_type_xmlrpc_member;
130:
131: /*
132: * Type describing an XML-RPC struct in XML-RPC exploded form.
133: * This type describes a 'struct xmlrpc_struct'.
134: */
135: extern const struct structs_type structs_type_xmlrpc_struct;
136:
137: /*
138: * Type describing an XML-RPC request in XML-RPC exploded form.
139: * This type describes a 'struct xmlrpc_request'.
140: */
141: extern const struct structs_type structs_type_xmlrpc_request;
142:
143: /*
144: * Type describing an XML-RPC response in XML-RPC exploded form.
145: * This type describes a 'struct xmlrpc_response_union'.
146: */
147: extern const struct structs_type structs_type_xmlrpc_response;
148:
149: /*
150: * Type describing an XML-RPC fault in XML-RPC exploded form.
151: * This type describes a 'struct xmlrpc_fault'.
152: */
153: extern const struct structs_type structs_type_xmlrpc_fault;
154:
155: /*
156: * Type describing an XML-RPC fault in compact form.
157: * This type describes a 'struct xmlrpc_compact_fault'.
158: */
159: extern const struct structs_type structs_type_xmlrpc_compact_fault;
160:
161: /*
162: * Create an XML-RPC methodCall structure with the given parameters.
163: * The returned structure will be allocated with type "mtype"
164: * and have type &structs_type_xmlrpc_request.
165: *
166: * The parameters should be specified as pairs: type, data.
167: */
168: extern struct xmlrpc_request *structs_xmlrpc_build_request(const char *mtype,
169: const char *methodName, u_int nparams,
170: const struct structs_type **types, const void **params);
171:
172: /*
173: * Create an XML-RPC methodResponse structure with the given return value.
174: *
175: * The returned structure will be allocated with type "mtype"
176: * and have type &structs_type_xmlrpc_response.
177: */
178: extern struct xmlrpc_response_union *structs_xmlrpc_build_response(
179: const char *mtype, const struct structs_type *type,
180: const void *data);
181:
182: /*
183: * Create an XML-RPC methodResponse structure with the given fault.
184: *
185: * The returned structure will be allocated with type "mtype"
186: * and have type &structs_type_xmlrpc_response.
187: */
188: extern struct xmlrpc_response_union *structs_xmlrpc_build_fault_response(
189: const char *mtype,
190: const struct xmlrpc_compact_fault *fault);
191:
192: /*
193: * Convert a normal structure into an XML-RPC value.
194: */
195: extern int structs_struct2xmlrpc(const struct structs_type *type,
196: const void *data, const char *sname,
197: const struct structs_type *xtype,
198: void *xdata, const char *xname);
199:
200: /*
201: * Convert an XML-RPC value into a normal structure.
202: */
203: extern int structs_xmlrpc2struct(const struct structs_type *xtype,
204: const void *xdata, const char *xname,
205: const struct structs_type *type, void *data,
206: const char *sname, char *ebuf, size_t emax);
207:
208: __END_DECLS
209:
210: #endif /* _PDEL_STRUCTS_XMLRPC_H_ */
211:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>