Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from __future__ import print_function
+from proton_server import Server
+
+class Application(Server):
+    def __init__(self, host, address):
+        super(Application, self).__init__(host, address)
+
+    def on_request(self, request, reply_to):
+        response = request.upper()
+        self.send(response, reply_to)
+        print("Request from: %s" % reply_to)
+
+try:
+    Application("localhost:5672", "examples").run()
+except KeyboardInterrupt: pass
+

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py
------------------------------------------------------------------------------
    svn:executable = *

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py.html.in
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py.html.in?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py.html.in
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/abstract_server.py.html.in
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,20 @@
+
+<h1>abstract_server.py</h1>
+<div class="highlight"><pre><span class="kn">from</span> <span 
class="nn">__future__</span> <span class="kn">import</span> <span 
class="n">print_function</span>
+<span class="kn">from</span> <span class="nn">proton_server</span> <span 
class="kn">import</span> <span class="n">Server</span>
+
+<span class="k">class</span> <span class="nc">Application</span><span 
class="p">(</span><span class="n">Server</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="n">host</span><span class="p">,</span> <span 
class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span 
class="n">Application</span><span class="p">,</span> <span 
class="bp">self</span><span class="p">)</span><span class="o">.</span><span 
class="n">__init__</span><span class="p">(</span><span 
class="n">host</span><span class="p">,</span> <span 
class="n">address</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_request</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">request</span><span class="p">,</span> <span 
class="n">reply_to</span><span class="p">):</span>
+        <span class="n">response</span> <span class="o">=</span> <span 
class="n">request</span><span class="o">.</span><span 
class="n">upper</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">send</span><span class="p">(</span><span 
class="n">response</span><span class="p">,</span> <span 
class="n">reply_to</span><span class="p">)</span>
+        <span class="k">print</span><span class="p">(</span><span 
class="s">&quot;Request from: </span><span class="si">%s</span><span 
class="s">&quot;</span> <span class="o">%</span> <span 
class="n">reply_to</span><span class="p">)</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Application</span><span class="p">(</span><span 
class="s">&quot;localhost:5672&quot;</span><span class="p">,</span> <span 
class="s">&quot;examples&quot;</span><span class="p">)</span><span 
class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span 
class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="abstract_server.py">Download this file</a></p>

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py 
(added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py 
Tue Sep 29 20:27:56 2015
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+import collections, optparse
+from proton import Endpoint, generate_uuid
+from proton.handlers import MessagingHandler
+from proton.reactor import Container
+
+class Queue(object):
+    def __init__(self, dynamic=False):
+        self.dynamic = dynamic
+        self.queue = collections.deque()
+        self.consumers = []
+
+    def subscribe(self, consumer):
+        self.consumers.append(consumer)
+
+    def unsubscribe(self, consumer):
+        if consumer in self.consumers:
+            self.consumers.remove(consumer)
+        return len(self.consumers) == 0 and (self.dynamic or self.queue.count 
== 0)
+
+    def publish(self, message):
+        self.queue.append(message)
+        self.dispatch()
+
+    def dispatch(self, consumer=None):
+        if consumer:
+            c = [consumer]
+        else:
+            c = self.consumers
+        while self._deliver_to(c): pass
+
+    def _deliver_to(self, consumers):
+        try:
+            result = False
+            for c in consumers:
+                if c.credit:
+                    c.send(self.queue.popleft())
+                    result = True
+            return result
+        except IndexError: # no more messages
+            return False
+
+class Broker(MessagingHandler):
+    def __init__(self, url):
+        super(Broker, self).__init__()
+        self.url = url
+        self.queues = {}
+
+    def on_start(self, event):
+        self.acceptor = event.container.listen(self.url)
+
+    def _queue(self, address):
+        if address not in self.queues:
+            self.queues[address] = Queue()
+        return self.queues[address]
+
+    def on_link_opening(self, event):
+        if event.link.is_sender:
+            if event.link.remote_source.dynamic:
+                address = str(generate_uuid())
+                event.link.source.address = address
+                q = Queue(True)
+                self.queues[address] = q
+                q.subscribe(event.link)
+            elif event.link.remote_source.address:
+                event.link.source.address = event.link.remote_source.address
+                self._queue(event.link.source.address).subscribe(event.link)
+        elif event.link.remote_target.address:
+            event.link.target.address = event.link.remote_target.address
+
+    def _unsubscribe(self, link):
+        if link.source.address in self.queues and 
self.queues[link.source.address].unsubscribe(link):
+            del self.queues[link.source.address]
+
+    def on_link_closing(self, event):
+        if event.link.is_sender:
+            self._unsubscribe(event.link)
+
+    def on_connection_closing(self, event):
+        self.remove_stale_consumers(event.connection)
+
+    def on_disconnected(self, event):
+        self.remove_stale_consumers(event.connection)
+
+    def remove_stale_consumers(self, connection):
+        l = connection.link_head(Endpoint.REMOTE_ACTIVE)
+        while l:
+            if l.is_sender:
+                self._unsubscribe(l)
+            l = l.next(Endpoint.REMOTE_ACTIVE)
+
+    def on_sendable(self, event):
+        self._queue(event.link.source.address).dispatch(event.link)
+
+    def on_message(self, event):
+        self._queue(event.link.target.address).publish(event.message)
+
+parser = optparse.OptionParser(usage="usage: %prog [options]")
+parser.add_option("-a", "--address", default="localhost:5672",
+                  help="address router listens on (default %default)")
+opts, args = parser.parse_args()
+
+try:
+    Container(Broker(opts.address)).run()
+except KeyboardInterrupt: pass

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py
------------------------------------------------------------------------------
    svn:executable = *

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py.html.in
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py.html.in?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py.html.in
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/broker.py.html.in
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,109 @@
+
+<h1>broker.py</h1>
+<div class="highlight"><pre><span class="kn">import</span> <span 
class="nn">collections</span><span class="o">,</span> <span 
class="nn">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span 
class="kn">import</span> <span class="n">Endpoint</span><span 
class="p">,</span> <span class="n">generate_uuid</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span 
class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span 
class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Queue</span><span 
class="p">(</span><span class="nb">object</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="n">dynamic</span><span class="o">=</span><span 
class="bp">False</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">dynamic</span> <span class="o">=</span> <span class="n">dynamic</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">queue</span> <span class="o">=</span> <span 
class="n">collections</span><span class="o">.</span><span 
class="n">deque</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">consumers</span> <span class="o">=</span> <span class="p">[]</span>
+
+    <span class="k">def</span> <span class="nf">subscribe</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">consumer</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">consumers</span><span class="o">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">consumer</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">unsubscribe</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">consumer</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">consumer</span> <span 
class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span 
class="n">consumers</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">consumers</span><span class="o">.</span><span 
class="n">remove</span><span class="p">(</span><span 
class="n">consumer</span><span class="p">)</span>
+        <span class="k">return</span> <span class="nb">len</span><span 
class="p">(</span><span class="bp">self</span><span class="o">.</span><span 
class="n">consumers</span><span class="p">)</span> <span class="o">==</span> 
<span class="mi">0</span> <span class="ow">and</span> <span 
class="p">(</span><span class="bp">self</span><span class="o">.</span><span 
class="n">dynamic</span> <span class="ow">or</span> <span 
class="bp">self</span><span class="o">.</span><span class="n">queue</span><span 
class="o">.</span><span class="n">count</span> <span class="o">==</span> <span 
class="mi">0</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">publish</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">message</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">queue</span><span class="o">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">message</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">dispatch</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">dispatch</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">consumer</span><span class="o">=</span><span 
class="bp">None</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">consumer</span><span 
class="p">:</span>
+            <span class="n">c</span> <span class="o">=</span> <span 
class="p">[</span><span class="n">consumer</span><span class="p">]</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">c</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span class="n">consumers</span>
+        <span class="k">while</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_deliver_to</span><span 
class="p">(</span><span class="n">c</span><span class="p">):</span> <span 
class="k">pass</span>
+
+    <span class="k">def</span> <span class="nf">_deliver_to</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">consumers</span><span class="p">):</span>
+        <span class="k">try</span><span class="p">:</span>
+            <span class="n">result</span> <span class="o">=</span> <span 
class="bp">False</span>
+            <span class="k">for</span> <span class="n">c</span> <span 
class="ow">in</span> <span class="n">consumers</span><span class="p">:</span>
+                <span class="k">if</span> <span class="n">c</span><span 
class="o">.</span><span class="n">credit</span><span class="p">:</span>
+                    <span class="n">c</span><span class="o">.</span><span 
class="n">send</span><span class="p">(</span><span class="bp">self</span><span 
class="o">.</span><span class="n">queue</span><span class="o">.</span><span 
class="n">popleft</span><span class="p">())</span>
+                    <span class="n">result</span> <span class="o">=</span> 
<span class="bp">True</span>
+            <span class="k">return</span> <span class="n">result</span>
+        <span class="k">except</span> <span class="ne">IndexError</span><span 
class="p">:</span> <span class="c"># no more messages</span>
+            <span class="k">return</span> <span class="bp">False</span>
+
+<span class="k">class</span> <span class="nc">Broker</span><span 
class="p">(</span><span class="n">MessagingHandler</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="n">url</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span 
class="n">Broker</span><span class="p">,</span> <span 
class="bp">self</span><span class="p">)</span><span class="o">.</span><span 
class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">queues</span> <span class="o">=</span> <span class="p">{}</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">acceptor</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">listen</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span class="n">url</span><span 
class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_queue</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">address</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">address</span> <span 
class="ow">not</span> <span class="ow">in</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">queues</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">queues</span><span class="p">[</span><span 
class="n">address</span><span class="p">]</span> <span class="o">=</span> <span 
class="n">Queue</span><span class="p">()</span>
+        <span class="k">return</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">queues</span><span class="p">[</span><span 
class="n">address</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opening</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="o">.</span><span class="n">link</span><span class="o">.</span><span 
class="n">is_sender</span><span class="p">:</span>
+            <span class="k">if</span> <span class="n">event</span><span 
class="o">.</span><span class="n">link</span><span class="o">.</span><span 
class="n">remote_source</span><span class="o">.</span><span 
class="n">dynamic</span><span class="p">:</span>
+                <span class="n">address</span> <span class="o">=</span> <span 
class="nb">str</span><span class="p">(</span><span 
class="n">generate_uuid</span><span class="p">())</span>
+                <span class="n">event</span><span class="o">.</span><span 
class="n">link</span><span class="o">.</span><span class="n">source</span><span 
class="o">.</span><span class="n">address</span> <span class="o">=</span> <span 
class="n">address</span>
+                <span class="n">q</span> <span class="o">=</span> <span 
class="n">Queue</span><span class="p">(</span><span class="bp">True</span><span 
class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span 
class="n">queues</span><span class="p">[</span><span 
class="n">address</span><span class="p">]</span> <span class="o">=</span> <span 
class="n">q</span>
+                <span class="n">q</span><span class="o">.</span><span 
class="n">subscribe</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="p">)</span>
+            <span class="k">elif</span> <span class="n">event</span><span 
class="o">.</span><span class="n">link</span><span class="o">.</span><span 
class="n">remote_source</span><span class="o">.</span><span 
class="n">address</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span 
class="n">link</span><span class="o">.</span><span class="n">source</span><span 
class="o">.</span><span class="n">address</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="o">.</span><span class="n">remote_source</span><span 
class="o">.</span><span class="n">address</span>
+                <span class="bp">self</span><span class="o">.</span><span 
class="n">_queue</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="o">.</span><span class="n">source</span><span class="o">.</span><span 
class="n">address</span><span class="p">)</span><span class="o">.</span><span 
class="n">subscribe</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="p">)</span>
+        <span class="k">elif</span> <span class="n">event</span><span 
class="o">.</span><span class="n">link</span><span class="o">.</span><span 
class="n">remote_target</span><span class="o">.</span><span 
class="n">address</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span 
class="n">link</span><span class="o">.</span><span class="n">target</span><span 
class="o">.</span><span class="n">address</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="o">.</span><span class="n">remote_target</span><span 
class="o">.</span><span class="n">address</span>
+
+    <span class="k">def</span> <span class="nf">_unsubscribe</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">link</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">link</span><span 
class="o">.</span><span class="n">source</span><span class="o">.</span><span 
class="n">address</span> <span class="ow">in</span> <span 
class="bp">self</span><span class="o">.</span><span class="n">queues</span> 
<span class="ow">and</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">queues</span><span class="p">[</span><span 
class="n">link</span><span class="o">.</span><span class="n">source</span><span 
class="o">.</span><span class="n">address</span><span class="p">]</span><span 
class="o">.</span><span class="n">unsubscribe</span><span 
class="p">(</span><span class="n">link</span><span class="p">):</span>
+            <span class="k">del</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">queues</span><span class="p">[</span><span 
class="n">link</span><span class="o">.</span><span class="n">source</span><span 
class="o">.</span><span class="n">address</span><span class="p">]</span>
+
+    <span class="k">def</span> <span class="nf">on_link_closing</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="o">.</span><span class="n">link</span><span class="o">.</span><span 
class="n">is_sender</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">_unsubscribe</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="p">)</span>
+
+    <span class="k">def</span> <span 
class="nf">on_connection_closing</span><span class="p">(</span><span 
class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">remove_stale_consumers</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span 
class="n">connection</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_disconnected</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">remove_stale_consumers</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span 
class="n">connection</span><span class="p">)</span>
+
+    <span class="k">def</span> <span 
class="nf">remove_stale_consumers</span><span class="p">(</span><span 
class="bp">self</span><span class="p">,</span> <span 
class="n">connection</span><span class="p">):</span>
+        <span class="n">l</span> <span class="o">=</span> <span 
class="n">connection</span><span class="o">.</span><span 
class="n">link_head</span><span class="p">(</span><span 
class="n">Endpoint</span><span class="o">.</span><span 
class="n">REMOTE_ACTIVE</span><span class="p">)</span>
+        <span class="k">while</span> <span class="n">l</span><span 
class="p">:</span>
+            <span class="k">if</span> <span class="n">l</span><span 
class="o">.</span><span class="n">is_sender</span><span class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span 
class="n">_unsubscribe</span><span class="p">(</span><span 
class="n">l</span><span class="p">)</span>
+            <span class="n">l</span> <span class="o">=</span> <span 
class="n">l</span><span class="o">.</span><span class="n">next</span><span 
class="p">(</span><span class="n">Endpoint</span><span class="o">.</span><span 
class="n">REMOTE_ACTIVE</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_queue</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="o">.</span><span class="n">source</span><span class="o">.</span><span 
class="n">address</span><span class="p">)</span><span class="o">.</span><span 
class="n">dispatch</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_queue</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="o">.</span><span class="n">target</span><span class="o">.</span><span 
class="n">address</span><span class="p">)</span><span class="o">.</span><span 
class="n">publish</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span 
class="n">message</span><span class="p">)</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span 
class="n">optparse</span><span class="o">.</span><span 
class="n">OptionParser</span><span class="p">(</span><span 
class="n">usage</span><span class="o">=</span><span class="s">&quot;usage: 
%prog [options]&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span 
class="n">add_option</span><span class="p">(</span><span 
class="s">&quot;-a&quot;</span><span class="p">,</span> <span 
class="s">&quot;--address&quot;</span><span class="p">,</span> <span 
class="n">default</span><span class="o">=</span><span 
class="s">&quot;localhost:5672&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span 
class="s">&quot;address router listens on (default </span><span 
class="si">%d</span><span class="s">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span 
class="n">args</span> <span class="o">=</span> <span 
class="n">parser</span><span class="o">.</span><span 
class="n">parse_args</span><span class="p">()</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">Container</span><span class="p">(</span><span 
class="n">Broker</span><span class="p">(</span><span class="n">opts</span><span 
class="o">.</span><span class="n">address</span><span class="p">))</span><span 
class="o">.</span><span class="n">run</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span 
class="p">:</span> <span class="k">pass</span>
+</pre></div>
+
+<p><a href="broker.py">Download this file</a></p>

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py 
(added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py 
Tue Sep 29 20:27:56 2015
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from __future__ import print_function, unicode_literals
+import optparse
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton.reactor import Container, DynamicNodeProperties
+
+class Client(MessagingHandler):
+    def __init__(self, url, requests):
+        super(Client, self).__init__()
+        self.url = url
+        self.requests = requests
+
+    def on_start(self, event):
+        self.sender = event.container.create_sender(self.url)
+        self.receiver = 
event.container.create_receiver(self.sender.connection, None, dynamic=True)
+
+    def next_request(self):
+        if self.receiver.remote_source.address:
+            req = Message(reply_to=self.receiver.remote_source.address, 
body=self.requests[0])
+            self.sender.send(req)
+
+    def on_link_opened(self, event):
+        if event.receiver == self.receiver:
+            self.next_request()
+
+    def on_message(self, event):
+        print("%s => %s" % (self.requests.pop(0), event.message.body))
+        if self.requests:
+            self.next_request()
+        else:
+            event.connection.close()
+
+REQUESTS= ["Twas brillig, and the slithy toves",
+           "Did gire and gymble in the wabe.",
+           "All mimsy were the borogroves,",
+           "And the mome raths outgrabe."]
+
+parser = optparse.OptionParser(usage="usage: %prog [options]",
+                               description="Send requests to the supplied 
address and print responses.")
+parser.add_option("-a", "--address", default="localhost:5672/examples",
+                  help="address to which messages are sent (default %default)")
+opts, args = parser.parse_args()
+
+Container(Client(opts.address, args or REQUESTS)).run()
+

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py
------------------------------------------------------------------------------
    svn:executable = *

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py.html.in
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py.html.in?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py.html.in
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client.py.html.in
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,49 @@
+
+<h1>client.py</h1>
+<div class="highlight"><pre><span class="kn">from</span> <span 
class="nn">__future__</span> <span class="kn">import</span> <span 
class="n">print_function</span><span class="p">,</span> <span 
class="n">unicode_literals</span>
+<span class="kn">import</span> <span class="nn">optparse</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span 
class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span 
class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton.reactor</span> <span 
class="kn">import</span> <span class="n">Container</span><span 
class="p">,</span> <span class="n">DynamicNodeProperties</span>
+
+<span class="k">class</span> <span class="nc">Client</span><span 
class="p">(</span><span class="n">MessagingHandler</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="n">url</span><span class="p">,</span> <span 
class="n">requests</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span 
class="n">Client</span><span class="p">,</span> <span 
class="bp">self</span><span class="p">)</span><span class="o">.</span><span 
class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">url</span> <span class="o">=</span> <span class="n">url</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">requests</span> <span class="o">=</span> <span 
class="n">requests</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">sender</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">create_sender</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span class="n">url</span><span 
class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">receiver</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">create_receiver</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">sender</span><span class="o">.</span><span 
class="n">connection</span><span class="p">,</span> <span 
class="bp">None</span><span class="p">,</span> <span 
class="n">dynamic</span><span class="o">=</span><span 
class="bp">True</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">next_request</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">receiver</span><span class="o">.</span><span 
class="n">remote_source</span><span class="o">.</span><span 
class="n">address</span><span class="p">:</span>
+            <span class="n">req</span> <span class="o">=</span> <span 
class="n">Message</span><span class="p">(</span><span 
class="n">reply_to</span><span class="o">=</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">receiver</span><span class="o">.</span><span 
class="n">remote_source</span><span class="o">.</span><span 
class="n">address</span><span class="p">,</span> <span 
class="n">body</span><span class="o">=</span><span class="bp">self</span><span 
class="o">.</span><span class="n">requests</span><span class="p">[</span><span 
class="mi">0</span><span class="p">])</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">sender</span><span class="o">.</span><span class="n">send</span><span 
class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opened</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="o">.</span><span class="n">receiver</span> <span class="o">==</span> 
<span class="bp">self</span><span class="o">.</span><span 
class="n">receiver</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">next_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="si">%s</span><span class="s"> =&gt; 
</span><span class="si">%s</span><span class="s">&quot;</span> <span 
class="o">%</span> <span class="p">(</span><span class="bp">self</span><span 
class="o">.</span><span class="n">requests</span><span class="o">.</span><span 
class="n">pop</span><span class="p">(</span><span class="mi">0</span><span 
class="p">),</span> <span class="n">event</span><span class="o">.</span><span 
class="n">message</span><span class="o">.</span><span 
class="n">body</span><span class="p">))</span>
+        <span class="k">if</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">requests</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">next_request</span><span class="p">()</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">event</span><span class="o">.</span><span 
class="n">connection</span><span class="o">.</span><span 
class="n">close</span><span class="p">()</span>
+
+<span class="n">REQUESTS</span><span class="o">=</span> <span 
class="p">[</span><span class="s">&quot;Twas brillig, and the slithy 
toves&quot;</span><span class="p">,</span>
+           <span class="s">&quot;Did gire and gymble in the 
wabe.&quot;</span><span class="p">,</span>
+           <span class="s">&quot;All mimsy were the 
borogroves,&quot;</span><span class="p">,</span>
+           <span class="s">&quot;And the mome raths 
outgrabe.&quot;</span><span class="p">]</span>
+
+<span class="n">parser</span> <span class="o">=</span> <span 
class="n">optparse</span><span class="o">.</span><span 
class="n">OptionParser</span><span class="p">(</span><span 
class="n">usage</span><span class="o">=</span><span class="s">&quot;usage: 
%prog [options]&quot;</span><span class="p">,</span>
+                               <span class="n">description</span><span 
class="o">=</span><span class="s">&quot;Send requests to the supplied address 
and print responses.&quot;</span><span class="p">)</span>
+<span class="n">parser</span><span class="o">.</span><span 
class="n">add_option</span><span class="p">(</span><span 
class="s">&quot;-a&quot;</span><span class="p">,</span> <span 
class="s">&quot;--address&quot;</span><span class="p">,</span> <span 
class="n">default</span><span class="o">=</span><span 
class="s">&quot;localhost:5672/examples&quot;</span><span class="p">,</span>
+                  <span class="n">help</span><span class="o">=</span><span 
class="s">&quot;address to which messages are sent (default </span><span 
class="si">%d</span><span class="s">efault)&quot;</span><span class="p">)</span>
+<span class="n">opts</span><span class="p">,</span> <span 
class="n">args</span> <span class="o">=</span> <span 
class="n">parser</span><span class="o">.</span><span 
class="n">parse_args</span><span class="p">()</span>
+
+<span class="n">Container</span><span class="p">(</span><span 
class="n">Client</span><span class="p">(</span><span class="n">opts</span><span 
class="o">.</span><span class="n">address</span><span class="p">,</span> <span 
class="n">args</span> <span class="ow">or</span> <span 
class="n">REQUESTS</span><span class="p">))</span><span class="o">.</span><span 
class="n">run</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="client.py">Download this file</a></p>

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from __future__ import print_function
+import tornado.ioloop
+import tornado.web
+from proton import Message
+from proton.handlers import MessagingHandler
+from proton_tornado import Container
+
+class Client(MessagingHandler):
+    def __init__(self, host, address):
+        super(Client, self).__init__()
+        self.host = host
+        self.address = address
+        self.sent = []
+        self.pending = []
+        self.reply_address = None
+        self.sender = None
+        self.receiver = None
+
+    def on_start(self, event):
+        conn = event.container.connect(self.host)
+        self.sender = event.container.create_sender(conn, self.address)
+        self.receiver = event.container.create_receiver(conn, None, 
dynamic=True)
+
+    def on_link_opened(self, event):
+        if event.receiver == self.receiver:
+            self.reply_address = event.link.remote_source.address
+            self.do_request()
+
+    def on_sendable(self, event):
+        self.do_request()
+
+    def on_message(self, event):
+        if self.sent:
+            request, handler = self.sent.pop(0)
+            print("%s => %s" % (request, event.message.body))
+            handler(event.message.body)
+            self.do_request()
+
+    def do_request(self):
+        if self.pending and self.reply_address and self.sender.credit:
+            request, handler = self.pending.pop(0)
+            self.sent.append((request, handler))
+            req = Message(reply_to=self.reply_address, body=request)
+            self.sender.send(req)
+
+    def request(self, body, handler):
+        self.pending.append((body, handler))
+        self.do_request()
+        self.container.touch()
+
+class ExampleHandler(tornado.web.RequestHandler):
+    def initialize(self, client):
+        self.client = client
+
+    def get(self):
+        self._write_open()
+        self._write_form()
+        self._write_close()
+
+    @tornado.web.asynchronous
+    def post(self):
+        client.request(self.get_body_argument("message"), lambda x: 
self.on_response(x))
+
+    def on_response(self, body):
+        self.set_header("Content-Type", "text/html")
+        self._write_open()
+        self._write_form()
+        self.write("Response: " + body)
+        self._write_close()
+        self.finish()
+
+    def _write_open(self):
+        self.write('<html><body>')
+
+    def _write_close(self):
+        self.write('</body></html>')
+
+    def _write_form(self):
+        self.write('<form action="/client" method="POST">'
+                   'Request: <input type="text" name="message">'
+                   '<input type="submit" value="Submit">'
+                   '</form>')
+
+
+loop = tornado.ioloop.IOLoop.instance()
+client = Client("localhost:5672", "examples")
+client.container = Container(client, loop=loop)
+client.container.initialise()
+app = tornado.web.Application([tornado.web.url(r"/client", ExampleHandler, 
dict(client=client))])
+app.listen(8888)
+try:
+    loop.start()
+except KeyboardInterrupt:
+    loop.stop()

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py
------------------------------------------------------------------------------
    svn:executable = *

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py.html.in
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py.html.in?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py.html.in
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/client_http.py.html.in
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,99 @@
+
+<h1>client_http.py</h1>
+<div class="highlight"><pre><span class="kn">from</span> <span 
class="nn">__future__</span> <span class="kn">import</span> <span 
class="n">print_function</span>
+<span class="kn">import</span> <span class="nn">tornado.ioloop</span>
+<span class="kn">import</span> <span class="nn">tornado.web</span>
+<span class="kn">from</span> <span class="nn">proton</span> <span 
class="kn">import</span> <span class="n">Message</span>
+<span class="kn">from</span> <span class="nn">proton.handlers</span> <span 
class="kn">import</span> <span class="n">MessagingHandler</span>
+<span class="kn">from</span> <span class="nn">proton_tornado</span> <span 
class="kn">import</span> <span class="n">Container</span>
+
+<span class="k">class</span> <span class="nc">Client</span><span 
class="p">(</span><span class="n">MessagingHandler</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="n">host</span><span class="p">,</span> <span 
class="n">address</span><span class="p">):</span>
+        <span class="nb">super</span><span class="p">(</span><span 
class="n">Client</span><span class="p">,</span> <span 
class="bp">self</span><span class="p">)</span><span class="o">.</span><span 
class="n">__init__</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">host</span> <span class="o">=</span> <span class="n">host</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">address</span> <span class="o">=</span> <span class="n">address</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">sent</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">pending</span> <span class="o">=</span> <span class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">reply_address</span> <span class="o">=</span> <span 
class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">sender</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">receiver</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">on_start</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">connect</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span class="n">host</span><span 
class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">sender</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">create_sender</span><span class="p">(</span><span 
class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">address</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">receiver</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">create_receiver</span><span class="p">(</span><span 
class="n">conn</span><span class="p">,</span> <span class="bp">None</span><span 
class="p">,</span> <span class="n">dynamic</span><span class="o">=</span><span 
class="bp">True</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">on_link_opened</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="o">.</span><span class="n">receiver</span> <span class="o">==</span> 
<span class="bp">self</span><span class="o">.</span><span 
class="n">receiver</span><span class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">reply_address</span> <span class="o">=</span> <span 
class="n">event</span><span class="o">.</span><span class="n">link</span><span 
class="o">.</span><span class="n">remote_source</span><span 
class="o">.</span><span class="n">address</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_sendable</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">on_message</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">sent</span><span class="p">:</span>
+            <span class="n">request</span><span class="p">,</span> <span 
class="n">handler</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span class="n">sent</span><span 
class="o">.</span><span class="n">pop</span><span class="p">(</span><span 
class="mi">0</span><span class="p">)</span>
+            <span class="k">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="si">%s</span><span class="s"> =&gt; 
</span><span class="si">%s</span><span class="s">&quot;</span> <span 
class="o">%</span> <span class="p">(</span><span class="n">request</span><span 
class="p">,</span> <span class="n">event</span><span class="o">.</span><span 
class="n">message</span><span class="o">.</span><span 
class="n">body</span><span class="p">))</span>
+            <span class="n">handler</span><span class="p">(</span><span 
class="n">event</span><span class="o">.</span><span 
class="n">message</span><span class="o">.</span><span 
class="n">body</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">do_request</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">do_request</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">pending</span> <span class="ow">and</span> 
<span class="bp">self</span><span class="o">.</span><span 
class="n">reply_address</span> <span class="ow">and</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">sender</span><span class="o">.</span><span 
class="n">credit</span><span class="p">:</span>
+            <span class="n">request</span><span class="p">,</span> <span 
class="n">handler</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">pending</span><span class="o">.</span><span class="n">pop</span><span 
class="p">(</span><span class="mi">0</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">sent</span><span class="o">.</span><span class="n">append</span><span 
class="p">((</span><span class="n">request</span><span class="p">,</span> <span 
class="n">handler</span><span class="p">))</span>
+            <span class="n">req</span> <span class="o">=</span> <span 
class="n">Message</span><span class="p">(</span><span 
class="n">reply_to</span><span class="o">=</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">reply_address</span><span class="p">,</span> <span 
class="n">body</span><span class="o">=</span><span 
class="n">request</span><span class="p">)</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">sender</span><span class="o">.</span><span class="n">send</span><span 
class="p">(</span><span class="n">req</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">request</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">body</span><span class="p">,</span> <span 
class="n">handler</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">pending</span><span class="o">.</span><span 
class="n">append</span><span class="p">((</span><span 
class="n">body</span><span class="p">,</span> <span 
class="n">handler</span><span class="p">))</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">do_request</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">touch</span><span class="p">()</span>
+
+<span class="k">class</span> <span class="nc">ExampleHandler</span><span 
class="p">(</span><span class="n">tornado</span><span class="o">.</span><span 
class="n">web</span><span class="o">.</span><span 
class="n">RequestHandler</span><span class="p">):</span>
+    <span class="k">def</span> <span class="nf">initialize</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">client</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">client</span> <span class="o">=</span> <span class="n">client</span>
+
+    <span class="k">def</span> <span class="nf">get</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">_write_open</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_write_form</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_write_close</span><span class="p">()</span>
+
+    <span class="nd">@tornado.web.asynchronous</span>
+    <span class="k">def</span> <span class="nf">post</span><span 
class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">client</span><span class="o">.</span><span 
class="n">request</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">get_body_argument</span><span class="p">(</span><span 
class="s">&quot;message&quot;</span><span class="p">),</span> <span 
class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">on_response</span><span class="p">(</span><span 
class="n">x</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">on_response</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">body</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">set_header</span><span class="p">(</span><span 
class="s">&quot;Content-Type&quot;</span><span class="p">,</span> <span 
class="s">&quot;text/html&quot;</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_write_open</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_write_form</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">write</span><span class="p">(</span><span class="s">&quot;Response: 
&quot;</span> <span class="o">+</span> <span class="n">body</span><span 
class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">_write_close</span><span class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">finish</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">_write_open</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">write</span><span class="p">(</span><span 
class="s">&#39;&lt;html&gt;&lt;body&gt;&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_write_close</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">write</span><span class="p">(</span><span 
class="s">&#39;&lt;/body&gt;&lt;/html&gt;&#39;</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_write_form</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">write</span><span class="p">(</span><span class="s">&#39;&lt;form 
action=&quot;/client&quot; method=&quot;POST&quot;&gt;&#39;</span>
+                   <span class="s">&#39;Request: &lt;input 
type=&quot;text&quot; name=&quot;message&quot;&gt;&#39;</span>
+                   <span class="s">&#39;&lt;input type=&quot;submit&quot; 
value=&quot;Submit&quot;&gt;&#39;</span>
+                   <span class="s">&#39;&lt;/form&gt;&#39;</span><span 
class="p">)</span>
+
+
+<span class="n">loop</span> <span class="o">=</span> <span 
class="n">tornado</span><span class="o">.</span><span 
class="n">ioloop</span><span class="o">.</span><span 
class="n">IOLoop</span><span class="o">.</span><span 
class="n">instance</span><span class="p">()</span>
+<span class="n">client</span> <span class="o">=</span> <span 
class="n">Client</span><span class="p">(</span><span 
class="s">&quot;localhost:5672&quot;</span><span class="p">,</span> <span 
class="s">&quot;examples&quot;</span><span class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span 
class="n">container</span> <span class="o">=</span> <span 
class="n">Container</span><span class="p">(</span><span 
class="n">client</span><span class="p">,</span> <span 
class="n">loop</span><span class="o">=</span><span class="n">loop</span><span 
class="p">)</span>
+<span class="n">client</span><span class="o">.</span><span 
class="n">container</span><span class="o">.</span><span 
class="n">initialise</span><span class="p">()</span>
+<span class="n">app</span> <span class="o">=</span> <span 
class="n">tornado</span><span class="o">.</span><span class="n">web</span><span 
class="o">.</span><span class="n">Application</span><span 
class="p">([</span><span class="n">tornado</span><span class="o">.</span><span 
class="n">web</span><span class="o">.</span><span class="n">url</span><span 
class="p">(</span><span class="s">r&quot;/client&quot;</span><span 
class="p">,</span> <span class="n">ExampleHandler</span><span 
class="p">,</span> <span class="nb">dict</span><span class="p">(</span><span 
class="n">client</span><span class="o">=</span><span 
class="n">client</span><span class="p">))])</span>
+<span class="n">app</span><span class="o">.</span><span 
class="n">listen</span><span class="p">(</span><span 
class="mi">8888</span><span class="p">)</span>
+<span class="k">try</span><span class="p">:</span>
+    <span class="n">loop</span><span class="o">.</span><span 
class="n">start</span><span class="p">()</span>
+<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span 
class="p">:</span>
+    <span class="n">loop</span><span class="o">.</span><span 
class="n">stop</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="client_http.py">Download this file</a></p>

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py 
(added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py 
Tue Sep 29 20:27:56 2015
@@ -0,0 +1,118 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+try:
+    import Queue
+except:
+    import queue as Queue
+
+import sqlite3
+import threading
+
+class Db(object):
+    def __init__(self, db, injector):
+        self.db = db
+        self.injector = injector
+        self.tasks = Queue.Queue()
+        self.position = None
+        self.pending_events = []
+        self.running = True
+        self.thread = threading.Thread(target=self._process)
+        self.thread.daemon=True
+        self.thread.start()
+
+    def close(self):
+        self.tasks.put(lambda conn: self._close())
+
+    def reset(self):
+        self.tasks.put(lambda conn: self._reset())
+
+    def load(self, records, event=None):
+        self.tasks.put(lambda conn: self._load(conn, records, event))
+
+    def get_id(self, event):
+        self.tasks.put(lambda conn: self._get_id(conn, event))
+
+    def insert(self, id, data, event=None):
+        self.tasks.put(lambda conn: self._insert(conn, id, data, event))
+
+    def delete(self, id, event=None):
+        self.tasks.put(lambda conn: self._delete(conn, id, event))
+
+    def _reset(self, ignored=None):
+        self.position = None
+
+    def _close(self, ignored=None):
+        self.running = False
+
+    def _get_id(self, conn, event):
+        cursor = conn.execute("SELECT * FROM records ORDER BY id DESC")
+        row = cursor.fetchone()
+        if event:
+            if row:
+                event.id = row['id']
+            else:
+                event.id = 0
+            self.injector.trigger(event)
+
+    def _load(self, conn, records, event):
+        if self.position:
+            cursor = conn.execute("SELECT * FROM records WHERE id > ? ORDER BY 
id", (self.position,))
+        else:
+            cursor = conn.execute("SELECT * FROM records ORDER BY id")
+        while not records.full():
+            row = cursor.fetchone()
+            if row:
+                self.position = row['id']
+                records.put(dict(row))
+            else:
+                break
+        if event:
+            self.injector.trigger(event)
+
+    def _insert(self, conn, id, data, event):
+        if id:
+            conn.execute("INSERT INTO records(id, description) VALUES (?, ?)", 
(id, data))
+        else:
+            conn.execute("INSERT INTO records(description) VALUES (?)", 
(data,))
+        if event:
+            self.pending_events.append(event)
+
+    def _delete(self, conn, id, event):
+        conn.execute("DELETE FROM records WHERE id=?", (id,))
+        if event:
+            self.pending_events.append(event)
+
+    def _process(self):
+        conn = sqlite3.connect(self.db)
+        conn.row_factory = sqlite3.Row
+        with conn:
+            while self.running:
+                f = self.tasks.get(True)
+                try:
+                    while True:
+                        f(conn)
+                        f = self.tasks.get(False)
+                except Queue.Empty: pass
+                conn.commit()
+                for event in self.pending_events:
+                    self.injector.trigger(event)
+                self.pending_events = []
+        self.injector.close()

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py
------------------------------------------------------------------------------
    svn:executable = *

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py.html.in
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py.html.in?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py.html.in
 (added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_common.py.html.in
 Tue Sep 29 20:27:56 2015
@@ -0,0 +1,103 @@
+
+<h1>db_common.py</h1>
+<div class="highlight"><pre><span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">Queue</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">queue</span> <span 
class="kn">as</span> <span class="nn">Queue</span>
+
+<span class="kn">import</span> <span class="nn">sqlite3</span>
+<span class="kn">import</span> <span class="nn">threading</span>
+
+<span class="k">class</span> <span class="nc">Db</span><span 
class="p">(</span><span class="nb">object</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="n">db</span><span class="p">,</span> <span 
class="n">injector</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">db</span> <span class="o">=</span> <span class="n">db</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">injector</span> <span class="o">=</span> <span 
class="n">injector</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">tasks</span> <span class="o">=</span> <span 
class="n">Queue</span><span class="o">.</span><span class="n">Queue</span><span 
class="p">()</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">pending_events</span> <span class="o">=</span> <span 
class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">running</span> <span class="o">=</span> <span class="bp">True</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">thread</span> <span class="o">=</span> <span 
class="n">threading</span><span class="o">.</span><span 
class="n">Thread</span><span class="p">(</span><span 
class="n">target</span><span class="o">=</span><span 
class="bp">self</span><span class="o">.</span><span 
class="n">_process</span><span class="p">)</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">thread</span><span class="o">.</span><span 
class="n">daemon</span><span class="o">=</span><span class="bp">True</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">thread</span><span class="o">.</span><span 
class="n">start</span><span class="p">()</span>
+
+    <span class="k">def</span> <span class="nf">close</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">tasks</span><span class="o">.</span><span class="n">put</span><span 
class="p">(</span><span class="k">lambda</span> <span 
class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_close</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">reset</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">tasks</span><span class="o">.</span><span class="n">put</span><span 
class="p">(</span><span class="k">lambda</span> <span 
class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_reset</span><span class="p">())</span>
+
+    <span class="k">def</span> <span class="nf">load</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">records</span><span class="p">,</span> <span 
class="n">event</span><span class="o">=</span><span class="bp">None</span><span 
class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">tasks</span><span class="o">.</span><span class="n">put</span><span 
class="p">(</span><span class="k">lambda</span> <span 
class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_load</span><span class="p">(</span><span 
class="n">conn</span><span class="p">,</span> <span 
class="n">records</span><span class="p">,</span> <span 
class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">get_id</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">tasks</span><span class="o">.</span><span class="n">put</span><span 
class="p">(</span><span class="k">lambda</span> <span 
class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_get_id</span><span class="p">(</span><span 
class="n">conn</span><span class="p">,</span> <span class="n">event</span><span 
class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">insert</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="nb">id</span><span class="p">,</span> <span class="n">data</span><span 
class="p">,</span> <span class="n">event</span><span class="o">=</span><span 
class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">tasks</span><span class="o">.</span><span class="n">put</span><span 
class="p">(</span><span class="k">lambda</span> <span 
class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_insert</span><span class="p">(</span><span 
class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span 
class="p">,</span> <span class="n">data</span><span class="p">,</span> <span 
class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">delete</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="nb">id</span><span class="p">,</span> <span class="n">event</span><span 
class="o">=</span><span class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">tasks</span><span class="o">.</span><span class="n">put</span><span 
class="p">(</span><span class="k">lambda</span> <span 
class="n">conn</span><span class="p">:</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">_delete</span><span class="p">(</span><span 
class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span 
class="p">,</span> <span class="n">event</span><span class="p">))</span>
+
+    <span class="k">def</span> <span class="nf">_reset</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">ignored</span><span class="o">=</span><span 
class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">position</span> <span class="o">=</span> <span class="bp">None</span>
+
+    <span class="k">def</span> <span class="nf">_close</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">ignored</span><span class="o">=</span><span 
class="bp">None</span><span class="p">):</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">running</span> <span class="o">=</span> <span class="bp">False</span>
+
+    <span class="k">def</span> <span class="nf">_get_id</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">conn</span><span class="p">,</span> <span class="n">event</span><span 
class="p">):</span>
+        <span class="n">cursor</span> <span class="o">=</span> <span 
class="n">conn</span><span class="o">.</span><span 
class="n">execute</span><span class="p">(</span><span class="s">&quot;SELECT * 
FROM records ORDER BY id DESC&quot;</span><span class="p">)</span>
+        <span class="n">row</span> <span class="o">=</span> <span 
class="n">cursor</span><span class="o">.</span><span 
class="n">fetchone</span><span class="p">()</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="p">:</span>
+            <span class="k">if</span> <span class="n">row</span><span 
class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span 
class="n">id</span> <span class="o">=</span> <span class="n">row</span><span 
class="p">[</span><span class="s">&#39;id&#39;</span><span class="p">]</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">event</span><span class="o">.</span><span 
class="n">id</span> <span class="o">=</span> <span class="mi">0</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">injector</span><span class="o">.</span><span 
class="n">trigger</span><span class="p">(</span><span 
class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_load</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">conn</span><span class="p">,</span> <span 
class="n">records</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">position</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span 
class="n">conn</span><span class="o">.</span><span 
class="n">execute</span><span class="p">(</span><span class="s">&quot;SELECT * 
FROM records WHERE id &gt; ? ORDER BY id&quot;</span><span class="p">,</span> 
<span class="p">(</span><span class="bp">self</span><span 
class="o">.</span><span class="n">position</span><span class="p">,))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">cursor</span> <span class="o">=</span> <span 
class="n">conn</span><span class="o">.</span><span 
class="n">execute</span><span class="p">(</span><span class="s">&quot;SELECT * 
FROM records ORDER BY id&quot;</span><span class="p">)</span>
+        <span class="k">while</span> <span class="ow">not</span> <span 
class="n">records</span><span class="o">.</span><span 
class="n">full</span><span class="p">():</span>
+            <span class="n">row</span> <span class="o">=</span> <span 
class="n">cursor</span><span class="o">.</span><span 
class="n">fetchone</span><span class="p">()</span>
+            <span class="k">if</span> <span class="n">row</span><span 
class="p">:</span>
+                <span class="bp">self</span><span class="o">.</span><span 
class="n">position</span> <span class="o">=</span> <span 
class="n">row</span><span class="p">[</span><span 
class="s">&#39;id&#39;</span><span class="p">]</span>
+                <span class="n">records</span><span class="o">.</span><span 
class="n">put</span><span class="p">(</span><span class="nb">dict</span><span 
class="p">(</span><span class="n">row</span><span class="p">))</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="k">break</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">injector</span><span class="o">.</span><span 
class="n">trigger</span><span class="p">(</span><span 
class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_insert</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span 
class="p">,</span> <span class="n">data</span><span class="p">,</span> <span 
class="n">event</span><span class="p">):</span>
+        <span class="k">if</span> <span class="nb">id</span><span 
class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span 
class="n">execute</span><span class="p">(</span><span class="s">&quot;INSERT 
INTO records(id, description) VALUES (?, ?)&quot;</span><span 
class="p">,</span> <span class="p">(</span><span class="nb">id</span><span 
class="p">,</span> <span class="n">data</span><span class="p">))</span>
+        <span class="k">else</span><span class="p">:</span>
+            <span class="n">conn</span><span class="o">.</span><span 
class="n">execute</span><span class="p">(</span><span class="s">&quot;INSERT 
INTO records(description) VALUES (?)&quot;</span><span class="p">,</span> <span 
class="p">(</span><span class="n">data</span><span class="p">,))</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">pending_events</span><span class="o">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_delete</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">conn</span><span class="p">,</span> <span class="nb">id</span><span 
class="p">,</span> <span class="n">event</span><span class="p">):</span>
+        <span class="n">conn</span><span class="o">.</span><span 
class="n">execute</span><span class="p">(</span><span class="s">&quot;DELETE 
FROM records WHERE id=?&quot;</span><span class="p">,</span> <span 
class="p">(</span><span class="nb">id</span><span class="p">,))</span>
+        <span class="k">if</span> <span class="n">event</span><span 
class="p">:</span>
+            <span class="bp">self</span><span class="o">.</span><span 
class="n">pending_events</span><span class="o">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">event</span><span class="p">)</span>
+
+    <span class="k">def</span> <span class="nf">_process</span><span 
class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="n">conn</span> <span class="o">=</span> <span 
class="n">sqlite3</span><span class="o">.</span><span 
class="n">connect</span><span class="p">(</span><span 
class="bp">self</span><span class="o">.</span><span class="n">db</span><span 
class="p">)</span>
+        <span class="n">conn</span><span class="o">.</span><span 
class="n">row_factory</span> <span class="o">=</span> <span 
class="n">sqlite3</span><span class="o">.</span><span class="n">Row</span>
+        <span class="k">with</span> <span class="n">conn</span><span 
class="p">:</span>
+            <span class="k">while</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">running</span><span class="p">:</span>
+                <span class="n">f</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span class="n">tasks</span><span 
class="o">.</span><span class="n">get</span><span class="p">(</span><span 
class="bp">True</span><span class="p">)</span>
+                <span class="k">try</span><span class="p">:</span>
+                    <span class="k">while</span> <span 
class="bp">True</span><span class="p">:</span>
+                        <span class="n">f</span><span class="p">(</span><span 
class="n">conn</span><span class="p">)</span>
+                        <span class="n">f</span> <span class="o">=</span> 
<span class="bp">self</span><span class="o">.</span><span 
class="n">tasks</span><span class="o">.</span><span class="n">get</span><span 
class="p">(</span><span class="bp">False</span><span class="p">)</span>
+                <span class="k">except</span> <span 
class="n">Queue</span><span class="o">.</span><span class="n">Empty</span><span 
class="p">:</span> <span class="k">pass</span>
+                <span class="n">conn</span><span class="o">.</span><span 
class="n">commit</span><span class="p">()</span>
+                <span class="k">for</span> <span class="n">event</span> <span 
class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span 
class="n">pending_events</span><span class="p">:</span>
+                    <span class="bp">self</span><span class="o">.</span><span 
class="n">injector</span><span class="o">.</span><span 
class="n">trigger</span><span class="p">(</span><span 
class="n">event</span><span class="p">)</span>
+                <span class="bp">self</span><span class="o">.</span><span 
class="n">pending_events</span> <span class="o">=</span> <span 
class="p">[]</span>
+        <span class="bp">self</span><span class="o">.</span><span 
class="n">injector</span><span class="o">.</span><span 
class="n">close</span><span class="p">()</span>
+</pre></div>
+
+<p><a href="db_common.py">Download this file</a></p>

Added: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_ctrl.py
URL: 
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_ctrl.py?rev=1705923&view=auto
==============================================================================
--- 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_ctrl.py 
(added)
+++ 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_ctrl.py 
Tue Sep 29 20:27:56 2015
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+from __future__ import print_function
+import sqlite3
+import sys
+
+if len(sys.argv) < 3:
+    print("Usage: %s [init|insert|list] db" % sys.argv[0])
+else:
+    conn = sqlite3.connect(sys.argv[2])
+    with conn:
+        if sys.argv[1] == "init":
+            conn.execute("DROP TABLE IF EXISTS records")
+            conn.execute("CREATE TABLE records(id INTEGER PRIMARY KEY 
AUTOINCREMENT, description TEXT)")
+            conn.commit()
+        elif sys.argv[1] == "list":
+            cursor = conn.cursor()
+            cursor.execute("SELECT * FROM records")
+            rows = cursor.fetchall()
+            for r in rows:
+                print(r)
+        elif sys.argv[1] == "insert":
+            while True:
+                l = sys.stdin.readline()
+                if not l: break
+                conn.execute("INSERT INTO records(description) VALUES (?)", 
(l.rstrip(),))
+            conn.commit()
+        else:
+            print("Unrecognised command: %s" %  sys.argv[1])

Propchange: 
qpid/site/input/releases/qpid-proton-master/proton/python/examples/db_ctrl.py
------------------------------------------------------------------------------
    svn:executable = *



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to