1 """contains L{Message}"""
2
3 from grassyknoll.lib import intUniqueId
4 import MailBox
5
6 __all__=['Message']
7
9 """a message
10
11 @ivar payload: the contents of the message
12 @type payload: object
13
14 @ivar id: a unique identifier for this message
15 @type id: integer
16
17 @ivar reply_box: where responses for this message should be
18 sent to. May be None.
19 @type reply_box: L{MailBox.MailBox}
20
21 @ivar re_id: the id of the Message this is a response to. May
22 be None
23 @type re_id: integer
24 """
25
26 __slots__=['payload', 'id', 'reply_box', 're_id']
27
28 - def __init__(self, payload, re_id=None, reply_box=None):
29 self.id = intUniqueId()
30 self.payload = payload
31
32 if not (re_id is None or isinstance(re_id, (int, long))):
33 raise TypeError("re_id must be int or long, not %r"%re_id)
34
35 self.re_id = re_id
36
37 if not(reply_box is None or isinstance(reply_box, MailBox.MailBox)):
38 raise TypeError("reply_box must be MailBox, not %r"%reply_box)
39
40 self.reply_box = reply_box
41
43 return "<Message %d\npayload %r\nreply_box %r\nre_id %r>"%(
44 self.id, self.payload, self.reply_box, self.re_id)
45