|
|
|
|
|
|
|
|
|
|
xen-api
[Xen-API] Typing in XML-RPC
One of the first things I noticed is that the spec defines some extended
types. This is a bit challenging in XML-RPC. It's unclear to me how 64
bit integer is represented (since XML-RPC only defines 32 bit
integers). Also, defining void to an empty string is understandable but
requires some special casing that really shouldn't be necessary.
Here's what I propose:
As a convention, we never use <struct>'s on the wire to directly
represent structures. By convention, structs always appear as:
<struct>
<member><name>kind</name><value><string>[typename]</string></value></member>
<member><name>value</name><value>[typevalue]</value></member>
</struct>
Where typename is the string representation of the type and typevalue is
the type-specific value.
Some common types would be:
struct - use this to represent actual structs. typevalue is the normal
encoding of a struct
long - 64 bit representation of struct. typevalue is the string
representation
void - use to represent None. typevalue is ignored.
What's nice about this sort of consistent approach is that we can write
a marshalling/unmarshalling wrapper for Python that automagically does
this conversion. Furthermore, if we did decide to support objects (as
the current spec does), we could automagically marshal/unmarshal these
over the wire.
The general idea here is that this is an extensible typing system for
XML-RPC.
Another thing to consider is having a type of exception. I like
exception based APIs (i'll say that for another email) however the
format of the standard XML-RPC exception leaves a lot to be desired.
Thoughts?
Regards,
Anthony Liguori
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-api
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-API] Typing in XML-RPC,
Anthony Liguori <=
|
|
|
|
|