1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 from __future__ import absolute_import
21
22 from cproton import PN_REJECTED, PN_RELEASED, PN_MODIFIED, PN_RECEIVED, PN_ACCEPTED, \
23 pn_disposition_is_undeliverable, pn_disposition_set_section_number, pn_disposition_get_section_number, \
24 pn_disposition_set_undeliverable, pn_disposition_set_failed, pn_disposition_condition, \
25 pn_disposition_set_section_offset, pn_disposition_data, pn_disposition_get_section_offset, \
26 pn_disposition_is_failed, pn_disposition_annotations, \
27 pn_delivery_partial, pn_delivery_aborted, pn_disposition_type, pn_delivery_pending, pn_delivery_updated, \
28 pn_delivery_readable, pn_delivery_abort, pn_delivery_remote, pn_delivery_tag, pn_delivery_link, pn_delivery_local, \
29 pn_delivery_update, pn_delivery_attachments, pn_delivery_local_state, pn_delivery_settled, pn_delivery_settle, \
30 pn_delivery_writable, pn_delivery_remote_state, \
31 pn_work_next
32
33 from ._condition import cond2obj, obj2cond
34 from ._data import dat2obj, obj2dat
35 from ._wrapper import Wrapper
39 values = {}
40
45
48
51
54
55 @classmethod
58
62
65 RECEIVED = DispositionType(PN_RECEIVED, "RECEIVED")
66 ACCEPTED = DispositionType(PN_ACCEPTED, "ACCEPTED")
67 REJECTED = DispositionType(PN_REJECTED, "REJECTED")
68 RELEASED = DispositionType(PN_RELEASED, "RELEASED")
69 MODIFIED = DispositionType(PN_MODIFIED, "MODIFIED")
70
72 self._impl = impl
73 self.local = local
74 self._data = None
75 self._condition = None
76 self._annotations = None
77
78 @property
81
83 return pn_disposition_get_section_number(self._impl)
84
86 pn_disposition_set_section_number(self._impl, n)
87
88 section_number = property(_get_section_number, _set_section_number)
89
91 return pn_disposition_get_section_offset(self._impl)
92
94 pn_disposition_set_section_offset(self._impl, n)
95
96 section_offset = property(_get_section_offset, _set_section_offset)
97
99 return pn_disposition_is_failed(self._impl)
100
102 pn_disposition_set_failed(self._impl, b)
103
104 failed = property(_get_failed, _set_failed)
105
107 return pn_disposition_is_undeliverable(self._impl)
108
110 pn_disposition_set_undeliverable(self._impl, b)
111
112 undeliverable = property(_get_undeliverable, _set_undeliverable)
113
115 if self.local:
116 return self._data
117 else:
118 return dat2obj(pn_disposition_data(self._impl))
119
121 if self.local:
122 self._data = obj
123 else:
124 raise AttributeError("data attribute is read-only")
125
126 data = property(_get_data, _set_data)
127
129 if self.local:
130 return self._annotations
131 else:
132 return dat2obj(pn_disposition_annotations(self._impl))
133
135 if self.local:
136 self._annotations = obj
137 else:
138 raise AttributeError("annotations attribute is read-only")
139
140 annotations = property(_get_annotations, _set_annotations)
141
143 if self.local:
144 return self._condition
145 else:
146 return cond2obj(pn_disposition_condition(self._impl))
147
149 if self.local:
150 self._condition = obj
151 else:
152 raise AttributeError("condition attribute is read-only")
153
154 condition = property(_get_condition, _set_condition)
155
158 """
159 Tracks and/or records the delivery of a message over a link.
160 """
161
162 RECEIVED = Disposition.RECEIVED
163 ACCEPTED = Disposition.ACCEPTED
164 REJECTED = Disposition.REJECTED
165 RELEASED = Disposition.RELEASED
166 MODIFIED = Disposition.MODIFIED
167
168 @staticmethod
170 if impl is None:
171 return None
172 else:
173 return Delivery(impl)
174
177
179 self.local = Disposition(pn_delivery_local(self._impl), True)
180 self.remote = Disposition(pn_delivery_remote(self._impl), False)
181
182 @property
184 """The identifier for the delivery."""
185 return pn_delivery_tag(self._impl)
186
187 @property
189 """Returns true for an outgoing delivery to which data can now be written."""
190 return pn_delivery_writable(self._impl)
191
192 @property
194 """Returns true for an incoming delivery that has data to read."""
195 return pn_delivery_readable(self._impl)
196
197 @property
199 """Returns true if the state of the delivery has been updated
200 (e.g. it has been settled and/or accepted, rejected etc)."""
201 return pn_delivery_updated(self._impl)
202
204 """
205 Set the local state of the delivery e.g. ACCEPTED, REJECTED, RELEASED.
206 """
207 obj2dat(self.local._data, pn_disposition_data(self.local._impl))
208 obj2dat(self.local._annotations, pn_disposition_annotations(self.local._impl))
209 obj2cond(self.local._condition, pn_disposition_condition(self.local._impl))
210 pn_delivery_update(self._impl, state)
211
212 @property
214 return pn_delivery_pending(self._impl)
215
216 @property
218 """
219 Returns true for an incoming delivery if not all the data is
220 yet available.
221 """
222 return pn_delivery_partial(self._impl)
223
224 @property
226 """Returns the local state of the delivery."""
227 return DispositionType.get(pn_delivery_local_state(self._impl))
228
229 @property
231 """
232 Returns the state of the delivery as indicated by the remote
233 peer.
234 """
235 return DispositionType.get(pn_delivery_remote_state(self._impl))
236
237 @property
239 """
240 Returns true if the delivery has been settled by the remote peer.
241 """
242 return pn_delivery_settled(self._impl)
243
245 """
246 Settles the delivery locally. This indicates the application
247 considers the delivery complete and does not wish to receive any
248 further events about it. Every delivery should be settled locally.
249 """
250 pn_delivery_settle(self._impl)
251
252 @property
254 """Returns true if the delivery has been aborted."""
255 return pn_delivery_aborted(self._impl)
256
258 """
259 Aborts the delivery. This indicates the application wishes to
260 invalidate any data that may have already been sent on this delivery.
261 The delivery cannot be aborted after it has been completely delivered.
262 """
263 pn_delivery_abort(self._impl)
264
265 @property
268
269 @property
271 """
272 Returns the link on which the delivery was sent or received.
273 """
274 from . import _endpoints
275 return _endpoints.Link.wrap(pn_delivery_link(self._impl))
276
277 @property
279 """
280 Returns the session over which the delivery was sent or received.
281 """
282 return self.link.session
283
284 @property
286 """
287 Returns the connection over which the delivery was sent or received.
288 """
289 return self.session.connection
290
291 @property
294