blob: db4147901a3f66d91601edd1c2b30b2bf1b329b4 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>proton._delivery &#8212; Qpid Proton Python API 0.32.0 documentation</title>
<link rel="stylesheet" href="../../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="nav-item nav-item-0"><a href="../../index.html">Qpid Proton Python API 0.32.0 documentation</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">proton._delivery</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>Source code for proton._delivery</h1><div class="highlight"><pre>
<span></span><span class="c1">#</span>
<span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="c1"># or more contributor license agreements. See the NOTICE file</span>
<span class="c1"># distributed with this work for additional information</span>
<span class="c1"># regarding copyright ownership. The ASF licenses this file</span>
<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
<span class="c1"># with the License. You may obtain a copy of the License at</span>
<span class="c1">#</span>
<span class="c1"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c1">#</span>
<span class="c1"># Unless required by applicable law or agreed to in writing,</span>
<span class="c1"># software distributed under the License is distributed on an</span>
<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
<span class="c1"># KIND, either express or implied. See the License for the</span>
<span class="c1"># specific language governing permissions and limitations</span>
<span class="c1"># under the License.</span>
<span class="c1">#</span>
<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
<span class="kn">from</span> <span class="nn">cproton</span> <span class="kn">import</span> <span class="n">PN_ACCEPTED</span><span class="p">,</span> <span class="n">PN_MODIFIED</span><span class="p">,</span> <span class="n">PN_RECEIVED</span><span class="p">,</span> <span class="n">PN_REJECTED</span><span class="p">,</span> <span class="n">PN_RELEASED</span><span class="p">,</span> <span class="n">pn_delivery_abort</span><span class="p">,</span> \
<span class="n">pn_delivery_aborted</span><span class="p">,</span> <span class="n">pn_delivery_attachments</span><span class="p">,</span> <span class="n">pn_delivery_link</span><span class="p">,</span> <span class="n">pn_delivery_local</span><span class="p">,</span> <span class="n">pn_delivery_local_state</span><span class="p">,</span> \
<span class="n">pn_delivery_partial</span><span class="p">,</span> <span class="n">pn_delivery_pending</span><span class="p">,</span> <span class="n">pn_delivery_readable</span><span class="p">,</span> <span class="n">pn_delivery_remote</span><span class="p">,</span> <span class="n">pn_delivery_remote_state</span><span class="p">,</span> \
<span class="n">pn_delivery_settle</span><span class="p">,</span> <span class="n">pn_delivery_settled</span><span class="p">,</span> <span class="n">pn_delivery_tag</span><span class="p">,</span> <span class="n">pn_delivery_update</span><span class="p">,</span> <span class="n">pn_delivery_updated</span><span class="p">,</span> \
<span class="n">pn_delivery_writable</span><span class="p">,</span> <span class="n">pn_disposition_annotations</span><span class="p">,</span> <span class="n">pn_disposition_condition</span><span class="p">,</span> <span class="n">pn_disposition_data</span><span class="p">,</span> \
<span class="n">pn_disposition_get_section_number</span><span class="p">,</span> <span class="n">pn_disposition_get_section_offset</span><span class="p">,</span> <span class="n">pn_disposition_is_failed</span><span class="p">,</span> \
<span class="n">pn_disposition_is_undeliverable</span><span class="p">,</span> <span class="n">pn_disposition_set_failed</span><span class="p">,</span> <span class="n">pn_disposition_set_section_number</span><span class="p">,</span> \
<span class="n">pn_disposition_set_section_offset</span><span class="p">,</span> <span class="n">pn_disposition_set_undeliverable</span><span class="p">,</span> <span class="n">pn_disposition_type</span><span class="p">,</span> <span class="n">pn_work_next</span>
<span class="kn">from</span> <span class="nn">._condition</span> <span class="kn">import</span> <span class="n">cond2obj</span><span class="p">,</span> <span class="n">obj2cond</span>
<span class="kn">from</span> <span class="nn">._data</span> <span class="kn">import</span> <span class="n">dat2obj</span><span class="p">,</span> <span class="n">obj2dat</span>
<span class="kn">from</span> <span class="nn">._wrapper</span> <span class="kn">import</span> <span class="n">Wrapper</span>
<span class="k">class</span> <span class="nc">NamedInt</span><span class="p">(</span><span class="nb">int</span><span class="p">):</span>
<span class="n">values</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># type: Dict[int, str]</span>
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="n">ni</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">NamedInt</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="bp">cls</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">ni</span>
<span class="k">return</span> <span class="n">ni</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
<span class="nd">@classmethod</span>
<span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">values</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="k">class</span> <span class="nc">DispositionType</span><span class="p">(</span><span class="n">NamedInt</span><span class="p">):</span>
<span class="n">values</span> <span class="o">=</span> <span class="p">{}</span>
<div class="viewcode-block" id="Disposition"><a class="viewcode-back" href="../../proton.html#proton.Disposition">[docs]</a><span class="k">class</span> <span class="nc">Disposition</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A delivery state.</span>
<span class="sd"> Dispositions record the current state or final outcome of a</span>
<span class="sd"> transfer. Every delivery contains both a local and remote</span>
<span class="sd"> disposition. The local disposition holds the local state of the</span>
<span class="sd"> delivery, and the remote disposition holds the last known remote</span>
<span class="sd"> state of the delivery.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">RECEIVED</span> <span class="o">=</span> <span class="n">DispositionType</span><span class="p">(</span><span class="n">PN_RECEIVED</span><span class="p">,</span> <span class="s2">&quot;RECEIVED&quot;</span><span class="p">)</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A non terminal state indicating how much (if any) message data</span>
<span class="sd"> has been received for a delivery.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ACCEPTED</span> <span class="o">=</span> <span class="n">DispositionType</span><span class="p">(</span><span class="n">PN_ACCEPTED</span><span class="p">,</span> <span class="s2">&quot;ACCEPTED&quot;</span><span class="p">)</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery was successfully</span>
<span class="sd"> processed. Once in this state there will be no further state</span>
<span class="sd"> changes prior to the delivery being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">REJECTED</span> <span class="o">=</span> <span class="n">DispositionType</span><span class="p">(</span><span class="n">PN_REJECTED</span><span class="p">,</span> <span class="s2">&quot;REJECTED&quot;</span><span class="p">)</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery could not be</span>
<span class="sd"> processed due to some error condition. Once in this state</span>
<span class="sd"> there will be no further state changes prior to the delivery</span>
<span class="sd"> being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">RELEASED</span> <span class="o">=</span> <span class="n">DispositionType</span><span class="p">(</span><span class="n">PN_RELEASED</span><span class="p">,</span> <span class="s2">&quot;RELEASED&quot;</span><span class="p">)</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery is being</span>
<span class="sd"> returned to the sender. Once in this state there will be no</span>
<span class="sd"> further state changes prior to the delivery being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">MODIFIED</span> <span class="o">=</span> <span class="n">DispositionType</span><span class="p">(</span><span class="n">PN_MODIFIED</span><span class="p">,</span> <span class="s2">&quot;MODIFIED&quot;</span><span class="p">)</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery is being</span>
<span class="sd"> returned to the sender and should be annotated by the</span>
<span class="sd"> sender prior to further delivery attempts. Once in this</span>
<span class="sd"> state there will be no further state changes prior to the</span>
<span class="sd"> delivery being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">impl</span><span class="p">,</span> <span class="n">local</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_impl</span> <span class="o">=</span> <span class="n">impl</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local</span> <span class="o">=</span> <span class="n">local</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_condition</span> <span class="o">=</span> <span class="kc">None</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_annotations</span> <span class="o">=</span> <span class="kc">None</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Get the type of this disposition object.</span>
<span class="sd"> Defined values are:</span>
<span class="sd"> </span>
<span class="sd"> * :const:`RECEIVED`</span>
<span class="sd"> * :const:`ACCEPTED`</span>
<span class="sd"> * :const:`REJECTED`</span>
<span class="sd"> * :const:`RELEASED`</span>
<span class="sd"> * :const:`MODIFIED`</span>
<span class="sd"> </span>
<span class="sd"> :type: ``str``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">DispositionType</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pn_disposition_type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">_get_section_number</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">pn_disposition_get_section_number</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_set_section_number</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
<span class="n">pn_disposition_set_section_number</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
<span class="n">section_number</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_section_number</span><span class="p">,</span> <span class="n">_set_section_number</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> The section number associated with a disposition.</span>
<span class="s2"> :type: ``int``</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_section_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">pn_disposition_get_section_offset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_set_section_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
<span class="n">pn_disposition_set_section_offset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
<span class="n">section_offset</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_section_offset</span><span class="p">,</span> <span class="n">_set_section_offset</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> The section offset associated with a disposition.</span>
<span class="s2"> :type: ``int``</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_failed</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">pn_disposition_is_failed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_set_failed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="n">pn_disposition_set_failed</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
<span class="n">failed</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_failed</span><span class="p">,</span> <span class="n">_set_failed</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> The failed flag for this disposition.</span>
<span class="s2"> :type: ``bool``</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_undeliverable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="n">pn_disposition_is_undeliverable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_set_undeliverable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
<span class="n">pn_disposition_set_undeliverable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
<span class="n">undeliverable</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_undeliverable</span><span class="p">,</span> <span class="n">_set_undeliverable</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> The undeliverable flag for this disposition.</span>
<span class="s2"> :type: ``bool``</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_data</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">dat2obj</span><span class="p">(</span><span class="n">pn_disposition_data</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">_set_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_data</span> <span class="o">=</span> <span class="n">obj</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;data attribute is read-only&quot;</span><span class="p">)</span>
<span class="n">data</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_data</span><span class="p">,</span> <span class="n">_set_data</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> Access the disposition as a :class:`Data` object.</span>
<span class="s2"> Dispositions are an extension point in the AMQP protocol. The</span>
<span class="s2"> disposition interface provides setters/getters for those</span>
<span class="s2"> dispositions that are predefined by the specification, however</span>
<span class="s2"> access to the raw disposition data is provided so that other</span>
<span class="s2"> dispositions can be used.</span>
<span class="s2"> The :class:`Data` object returned by this operation is valid until</span>
<span class="s2"> the parent delivery is settled.</span>
<span class="s2"> :type: :class:`Data`</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_annotations</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_annotations</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">dat2obj</span><span class="p">(</span><span class="n">pn_disposition_annotations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">_set_annotations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_annotations</span> <span class="o">=</span> <span class="n">obj</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;annotations attribute is read-only&quot;</span><span class="p">)</span>
<span class="n">annotations</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_annotations</span><span class="p">,</span> <span class="n">_set_annotations</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> The annotations associated with a disposition.</span>
<span class="s2"> The :class:`Data` object retrieved by this operation may be modified</span>
<span class="s2"> prior to updating a delivery. When a delivery is updated, the</span>
<span class="s2"> annotations described by the :class:`Data` are reported to the peer</span>
<span class="s2"> if applicable to the current delivery state, e.g. states such as</span>
<span class="s2"> :const:`MODIFIED`. The :class:`Data` must be empty or contain a symbol</span>
<span class="s2"> keyed map.</span>
<span class="s2"> The :class:`Data` object returned by this operation is valid until</span>
<span class="s2"> the parent delivery is settled.</span>
<span class="s2"> :type: :class:`Data`</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_get_condition</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_condition</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">cond2obj</span><span class="p">(</span><span class="n">pn_disposition_condition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">_set_condition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_condition</span> <span class="o">=</span> <span class="n">obj</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;condition attribute is read-only&quot;</span><span class="p">)</span>
<span class="n">condition</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_condition</span><span class="p">,</span> <span class="n">_set_condition</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> The condition object associated with a disposition.</span>
<span class="s2"> </span>
<span class="s2"> The :class:`Condition` object retrieved by this operation may be</span>
<span class="s2"> modified prior to updating a delivery. When a delivery is updated,</span>
<span class="s2"> the condition described by the disposition is reported to the peer</span>
<span class="s2"> if applicable to the current delivery state, e.g. states such as</span>
<span class="s2"> :const:`REJECTED`.</span>
<span class="s2"> :type: :class:`Condition`</span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span></div>
<div class="viewcode-block" id="Delivery"><a class="viewcode-back" href="../../proton.html#proton.Delivery">[docs]</a><span class="k">class</span> <span class="nc">Delivery</span><span class="p">(</span><span class="n">Wrapper</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Tracks and/or records the delivery of a message over a link.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">RECEIVED</span> <span class="o">=</span> <span class="n">Disposition</span><span class="o">.</span><span class="n">RECEIVED</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A non terminal state indicating how much (if any) message data</span>
<span class="sd"> has been received for a delivery.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ACCEPTED</span> <span class="o">=</span> <span class="n">Disposition</span><span class="o">.</span><span class="n">ACCEPTED</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery was successfully</span>
<span class="sd"> processed. Once in this state there will be no further state</span>
<span class="sd"> changes prior to the delivery being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">REJECTED</span> <span class="o">=</span> <span class="n">Disposition</span><span class="o">.</span><span class="n">REJECTED</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery could not be</span>
<span class="sd"> processed due to some error condition. Once in this state</span>
<span class="sd"> there will be no further state changes prior to the delivery</span>
<span class="sd"> being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">RELEASED</span> <span class="o">=</span> <span class="n">Disposition</span><span class="o">.</span><span class="n">RELEASED</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery is being</span>
<span class="sd"> returned to the sender. Once in this state there will be no</span>
<span class="sd"> further state changes prior to the delivery being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">MODIFIED</span> <span class="o">=</span> <span class="n">Disposition</span><span class="o">.</span><span class="n">MODIFIED</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A terminal state indicating that the delivery is being</span>
<span class="sd"> returned to the sender and should be annotated by the</span>
<span class="sd"> sender prior to further delivery attempts. Once in this</span>
<span class="sd"> state there will be no further state changes prior to the</span>
<span class="sd"> delivery being settled.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="nd">@staticmethod</span>
<span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="n">impl</span><span class="p">):</span>
<span class="k">if</span> <span class="n">impl</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">None</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">Delivery</span><span class="p">(</span><span class="n">impl</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">impl</span><span class="p">):</span>
<span class="n">Wrapper</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">impl</span><span class="p">,</span> <span class="n">pn_delivery_attachments</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local</span> <span class="o">=</span> <span class="n">Disposition</span><span class="p">(</span><span class="n">pn_delivery_local</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">),</span> <span class="kc">True</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">remote</span> <span class="o">=</span> <span class="n">Disposition</span><span class="p">(</span><span class="n">pn_delivery_remote</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">),</span> <span class="kc">False</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">tag</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The identifier for the delivery.</span>
<span class="sd"> :type: ``bytes``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_tag</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">writable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``True`` for an outgoing delivery to which data can now be written,</span>
<span class="sd"> ``False`` otherwise..</span>
<span class="sd"> :type: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_writable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">readable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``True`` for an incoming delivery that has data to read,</span>
<span class="sd"> ``False`` otherwise..</span>
<span class="sd"> :type: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_readable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">updated</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``True`` if the state of the delivery has been updated</span>
<span class="sd"> (e.g. it has been settled and/or accepted, rejected etc),</span>
<span class="sd"> ``False`` otherwise.</span>
<span class="sd"> :type: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_updated</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<div class="viewcode-block" id="Delivery.update"><a class="viewcode-back" href="../../proton.html#proton.Delivery.update">[docs]</a> <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">state</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set the local state of the delivery e.g. :const:`ACCEPTED`,</span>
<span class="sd"> :const:`REJECTED`, :const:`RELEASED`.</span>
<span class="sd"> :param state: State of delivery</span>
<span class="sd"> :type state: ``int``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">obj2dat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">_data</span><span class="p">,</span> <span class="n">pn_disposition_data</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="n">obj2dat</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">_annotations</span><span class="p">,</span> <span class="n">pn_disposition_annotations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="n">obj2cond</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">_condition</span><span class="p">,</span> <span class="n">pn_disposition_condition</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">local</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="n">pn_delivery_update</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">,</span> <span class="n">state</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">pending</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The amount of pending message data for a delivery.</span>
<span class="sd"> :type: ``int``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_pending</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">partial</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``True`` for an incoming delivery if not all the data is</span>
<span class="sd"> yet available, ``False`` otherwise.</span>
<span class="sd"> :type: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">local_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A string representation of the local state of the delivery.</span>
<span class="sd"> :type: ``str``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">DispositionType</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pn_delivery_local_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">remote_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> A string representation of the state of the delivery as</span>
<span class="sd"> indicated by the remote peer.</span>
<span class="sd"> :type: ``str``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">DispositionType</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pn_delivery_remote_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">settled</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``True`` if the delivery has been settled by the remote peer,</span>
<span class="sd"> ``False`` otherwise.</span>
<span class="sd"> :type: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_settled</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<div class="viewcode-block" id="Delivery.settle"><a class="viewcode-back" href="../../proton.html#proton.Delivery.settle">[docs]</a> <span class="k">def</span> <span class="nf">settle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Settles the delivery locally. This indicates the application</span>
<span class="sd"> considers the delivery complete and does not wish to receive any</span>
<span class="sd"> further events about it. Every delivery should be settled locally.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">pn_delivery_settle</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">aborted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> ``True`` if the delivery has been aborted, ``False`` otherwise.</span>
<span class="sd"> :type: ``bool``</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">pn_delivery_aborted</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span>
<div class="viewcode-block" id="Delivery.abort"><a class="viewcode-back" href="../../proton.html#proton.Delivery.abort">[docs]</a> <span class="k">def</span> <span class="nf">abort</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Aborts the delivery. This indicates the application wishes to</span>
<span class="sd"> invalidate any data that may have already been sent on this delivery.</span>
<span class="sd"> The delivery cannot be aborted after it has been completely delivered.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">pn_delivery_abort</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">)</span></div>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">work_next</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Deprecated: use on_message(), on_accepted(), on_rejected(),</span>
<span class="sd"> on_released(), and on_settled() instead.</span>
<span class="sd"> The next :class:`Delivery` on the connection that has pending</span>
<span class="sd"> operations.</span>
<span class="sd"> :type: :class:`Delivery`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="n">Delivery</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">pn_work_next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">link</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The :class:`Link` on which the delivery was sent or received.</span>
<span class="sd"> :type: :class:`Link`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_endpoints</span>
<span class="k">return</span> <span class="n">_endpoints</span><span class="o">.</span><span class="n">Link</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">pn_delivery_link</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_impl</span><span class="p">))</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">session</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The :class:`Session` over which the delivery was sent or received.</span>
<span class="sd"> :type: :class:`Session`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">link</span><span class="o">.</span><span class="n">session</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">connection</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The :class:`Connection` over which the delivery was sent or received.</span>
<span class="sd"> :type: :class:`Connection`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">connection</span>
<span class="nd">@property</span>
<span class="k">def</span> <span class="nf">transport</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> The :class:`Transport` bound to the :class:`Connection` over which</span>
<span class="sd"> the delivery was sent or received.</span>
<span class="sd"> :type: :class:`Transport`</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">transport</span></div>
</pre></div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../../genindex.html" title="General Index"
>index</a></li>
<li class="nav-item nav-item-0"><a href="../../index.html">Qpid Proton Python API 0.32.0 documentation</a> &#187;</li>
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">proton._delivery</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2019, Apache Qpid Contributors.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>