Python 7.0pl5 Benutzerhandbuch

Seite von 124
Message Encoding
80
Supported Data Types
Communication between services is mediated through a layer of code which is written in C++. The
only exception to this is when the
LocalService
class is used as a proxy to send a request to a serv-
ice in the same process which is also implemented in Python. This means that except for when the
Lo-
calService
class is being used, any data which is being transferred between services must go
through a process of being encoded into a serialised form at the point of sending and then deserialised
at the point of reception.
Data which is being sent between services is not limited to that of just a string. The data to be sent can
consist of any of the basic Python scalar types, a list, a tuple or a dictionary. In addition to this, the
Python
None
value may be used, as well as a number of extended types. The only limitation in respect
of the Python compound types is that when using a dictionary, the keys must be of type string. Further,
when a tuple appears within any data, the recipient will see it as a list and not a tuple. It is not possible
to send data which is cyclically self referential.
self.publishReport("string","value")
self.publishReport("list",[1,1L,1.1,None])
self.publishReport("dictionary",{"key":"value"})
The extended types which are supported are
Boolean
,
Binary
,
Date
,
DateTime
,
Time
and
Du-
ration
. For the
Boolean
type, there are also predefined values for
True
and
False
. The
Boolean
type should behave correctly with respect to all truth type tests. If the default arguments for
the constructor of
Date
and
DateTime
types are used, they will be initialised to the current local date
and current local date and time respectively.
self.publishReport("true",netsvc.True)
self.publishReport("false,netsvc.False)
self.publishReport("boolean",netsvc.Boolean(1))
self.publishReport("binary",netsvc.Binary("value"))
# current local date
self.publishReport("date",netsvc.Date())
# current local date/time
self.publishReport("dateTime",netsvc.DateTime())
When using the various date and time types, they should be initialised with string values corresponding
to what type they represent. The format and range of these values should be the subset of values pos-
sible under the ISO 8601 date/time standard as described by the XML Schema Datatypes 2001 speci-
fication, examples of which are illustrated below.
Type
Format
Sample
Date
YYYY-MM-DD
2001-12-25