Moved examples into appropriate part of the tree

Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/d4b154cb
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/d4b154cb
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/d4b154cb

Branch: refs/heads/examples
Commit: d4b154cbda186ff20272fcbe22a3fd1229d84f4f
Parents: 2f4d1ba
Author: Gordon Sim <[email protected]>
Authored: Wed Nov 26 20:31:07 2014 +0000
Committer: Gordon Sim <[email protected]>
Committed: Wed Nov 26 20:31:07 2014 +0000

----------------------------------------------------------------------
 examples/engine/py/Makefile                     | 153 ++++
 .../py/_build/doctrees/environment.pickle       | Bin 0 -> 4949 bytes
 .../engine/py/_build/doctrees/index.doctree     | Bin 0 -> 3508 bytes
 .../engine/py/_build/doctrees/tutorial.doctree  | Bin 0 -> 33559 bytes
 examples/engine/py/_build/html/.buildinfo       |   4 +
 .../engine/py/_build/html/_sources/index.txt    |  15 +
 .../engine/py/_build/html/_sources/tutorial.txt | 152 ++++
 .../py/_build/html/_static/ajax-loader.gif      | Bin 0 -> 673 bytes
 .../py/_build/html/_static/alert_info_32.png    | Bin 0 -> 1168 bytes
 .../py/_build/html/_static/alert_warning_32.png | Bin 0 -> 1060 bytes
 .../engine/py/_build/html/_static/basic.css     | 540 +++++++++++++
 .../engine/py/_build/html/_static/bg-page.png   | Bin 0 -> 164 bytes
 .../py/_build/html/_static/bullet_orange.png    | Bin 0 -> 365 bytes
 .../py/_build/html/_static/comment-bright.png   | Bin 0 -> 3500 bytes
 .../py/_build/html/_static/comment-close.png    | Bin 0 -> 3578 bytes
 .../engine/py/_build/html/_static/comment.png   | Bin 0 -> 3445 bytes
 .../engine/py/_build/html/_static/default.css   | 256 ++++++
 .../engine/py/_build/html/_static/doctools.js   | 247 ++++++
 .../py/_build/html/_static/down-pressed.png     | Bin 0 -> 368 bytes
 examples/engine/py/_build/html/_static/down.png | Bin 0 -> 363 bytes
 examples/engine/py/_build/html/_static/file.png | Bin 0 -> 392 bytes
 .../engine/py/_build/html/_static/haiku.css     | 371 +++++++++
 .../engine/py/_build/html/_static/jquery.js     | 154 ++++
 .../engine/py/_build/html/_static/minus.png     | Bin 0 -> 199 bytes
 examples/engine/py/_build/html/_static/plus.png | Bin 0 -> 199 bytes
 .../engine/py/_build/html/_static/pygments.css  |  62 ++
 .../py/_build/html/_static/searchtools.js       | 560 +++++++++++++
 .../engine/py/_build/html/_static/sidebar.js    | 151 ++++
 .../engine/py/_build/html/_static/underscore.js |  23 +
 .../py/_build/html/_static/up-pressed.png       | Bin 0 -> 372 bytes
 examples/engine/py/_build/html/_static/up.png   | Bin 0 -> 363 bytes
 .../engine/py/_build/html/_static/websupport.js | 808 +++++++++++++++++++
 examples/engine/py/_build/html/genindex.html    |  73 ++
 examples/engine/py/_build/html/index.html       |  84 ++
 examples/engine/py/_build/html/objects.inv      | Bin 0 -> 202 bytes
 examples/engine/py/_build/html/search.html      |  93 +++
 examples/engine/py/_build/html/searchindex.js   |   1 +
 examples/engine/py/_build/html/tutorial.html    | 495 ++++++++++++
 examples/engine/py/abstract_server.py           |  35 +
 examples/engine/py/client.py                    |  59 ++
 examples/engine/py/client_http.py               | 110 +++
 examples/engine/py/conf.py                      | 242 ++++++
 examples/engine/py/db_common.py                 |  93 +++
 examples/engine/py/db_ctrl.py                   |  46 ++
 examples/engine/py/db_recv.py                   |  56 ++
 examples/engine/py/db_send.py                   |  83 ++
 examples/engine/py/helloworld.py                |  45 ++
 examples/engine/py/helloworld_blocking.py       |  35 +
 examples/engine/py/helloworld_direct.py         |  49 ++
 examples/engine/py/helloworld_direct_tornado.py |  52 ++
 examples/engine/py/helloworld_tornado.py        |  49 ++
 examples/engine/py/index.rst                    |  15 +
 examples/engine/py/make.bat                     | 190 +++++
 examples/engine/py/proton_server.py             |  61 ++
 examples/engine/py/proton_tornado.py            |  70 ++
 examples/engine/py/recurring_timer.py           |  47 ++
 examples/engine/py/recurring_timer_tornado.py   |  48 ++
 examples/engine/py/selected_recv.py             |  40 +
 examples/engine/py/server.py                    |  55 ++
 examples/engine/py/server_tx.py                 |  77 ++
 examples/engine/py/simple_recv.py               |  42 +
 examples/engine/py/simple_send.py               |  55 ++
 examples/engine/py/sync_client.py               |  88 ++
 examples/engine/py/tutorial.rst                 | 152 ++++
 examples/engine/py/tx_recv.py                   |  62 ++
 examples/engine/py/tx_recv_interactive.py       |  83 ++
 examples/engine/py/tx_send.py                   |  76 ++
 examples/engine/py/tx_send_sync.py              |  77 ++
 tutorial/Makefile                               | 153 ----
 tutorial/_build/doctrees/environment.pickle     | Bin 4949 -> 0 bytes
 tutorial/_build/doctrees/index.doctree          | Bin 3508 -> 0 bytes
 tutorial/_build/doctrees/tutorial.doctree       | Bin 33559 -> 0 bytes
 tutorial/_build/html/.buildinfo                 |   4 -
 tutorial/_build/html/_sources/index.txt         |  15 -
 tutorial/_build/html/_sources/tutorial.txt      | 152 ----
 tutorial/_build/html/_static/ajax-loader.gif    | Bin 673 -> 0 bytes
 tutorial/_build/html/_static/alert_info_32.png  | Bin 1168 -> 0 bytes
 .../_build/html/_static/alert_warning_32.png    | Bin 1060 -> 0 bytes
 tutorial/_build/html/_static/basic.css          | 540 -------------
 tutorial/_build/html/_static/bg-page.png        | Bin 164 -> 0 bytes
 tutorial/_build/html/_static/bullet_orange.png  | Bin 365 -> 0 bytes
 tutorial/_build/html/_static/comment-bright.png | Bin 3500 -> 0 bytes
 tutorial/_build/html/_static/comment-close.png  | Bin 3578 -> 0 bytes
 tutorial/_build/html/_static/comment.png        | Bin 3445 -> 0 bytes
 tutorial/_build/html/_static/default.css        | 256 ------
 tutorial/_build/html/_static/doctools.js        | 247 ------
 tutorial/_build/html/_static/down-pressed.png   | Bin 368 -> 0 bytes
 tutorial/_build/html/_static/down.png           | Bin 363 -> 0 bytes
 tutorial/_build/html/_static/file.png           | Bin 392 -> 0 bytes
 tutorial/_build/html/_static/haiku.css          | 371 ---------
 tutorial/_build/html/_static/jquery.js          | 154 ----
 tutorial/_build/html/_static/minus.png          | Bin 199 -> 0 bytes
 tutorial/_build/html/_static/plus.png           | Bin 199 -> 0 bytes
 tutorial/_build/html/_static/pygments.css       |  62 --
 tutorial/_build/html/_static/searchtools.js     | 560 -------------
 tutorial/_build/html/_static/sidebar.js         | 151 ----
 tutorial/_build/html/_static/underscore.js      |  23 -
 tutorial/_build/html/_static/up-pressed.png     | Bin 372 -> 0 bytes
 tutorial/_build/html/_static/up.png             | Bin 363 -> 0 bytes
 tutorial/_build/html/_static/websupport.js      | 808 -------------------
 tutorial/_build/html/genindex.html              |  73 --
 tutorial/_build/html/index.html                 |  84 --
 tutorial/_build/html/objects.inv                | Bin 202 -> 0 bytes
 tutorial/_build/html/search.html                |  93 ---
 tutorial/_build/html/searchindex.js             |   1 -
 tutorial/_build/html/tutorial.html              | 495 ------------
 tutorial/abstract_server.py                     |  35 -
 tutorial/client.py                              |  59 --
 tutorial/client_http.py                         | 110 ---
 tutorial/conf.py                                | 242 ------
 tutorial/db_common.py                           |  93 ---
 tutorial/db_ctrl.py                             |  46 --
 tutorial/db_recv.py                             |  56 --
 tutorial/db_send.py                             |  83 --
 tutorial/helloworld.py                          |  45 --
 tutorial/helloworld_blocking.py                 |  35 -
 tutorial/helloworld_direct.py                   |  49 --
 tutorial/helloworld_direct_tornado.py           |  52 --
 tutorial/helloworld_tornado.py                  |  49 --
 tutorial/index.rst                              |  15 -
 tutorial/make.bat                               | 190 -----
 tutorial/proton_server.py                       |  61 --
 tutorial/proton_tornado.py                      |  70 --
 tutorial/recurring_timer.py                     |  47 --
 tutorial/recurring_timer_tornado.py             |  48 --
 tutorial/selected_recv.py                       |  40 -
 tutorial/server.py                              |  55 --
 tutorial/server_tx.py                           |  77 --
 tutorial/simple_recv.py                         |  42 -
 tutorial/simple_send.py                         |  55 --
 tutorial/sync_client.py                         |  88 --
 tutorial/tutorial.rst                           | 152 ----
 tutorial/tx_recv.py                             |  62 --
 tutorial/tx_recv_interactive.py                 |  83 --
 tutorial/tx_send.py                             |  76 --
 tutorial/tx_send_sync.py                        |  77 --
 136 files changed, 6434 insertions(+), 6434 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/Makefile
----------------------------------------------------------------------
diff --git a/examples/engine/py/Makefile b/examples/engine/py/Makefile
new file mode 100644
index 0000000..ec4b876
--- /dev/null
+++ b/examples/engine/py/Makefile
@@ -0,0 +1,153 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp 
epub latex latexpdf text man changes linkcheck doctest gettext
+
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or 
PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  texinfo    to make Texinfo files"
+       @echo "  info       to make Texinfo files and run them through makeinfo"
+       @echo "  gettext    to make PO message catalogs"
+       @echo "  changes    to make an overview of all changed/added/deprecated 
items"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation 
(if enabled)"
+
+clean:
+       -rm -rf $(BUILDDIR)/*
+
+html:
+       $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+       $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+       $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+       @echo
+       @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+       $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+       @echo
+       @echo "Build finished; now you can process the pickle files."
+
+json:
+       $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+       @echo
+       @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+       $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+       @echo
+       @echo "Build finished; now you can run HTML Help Workshop with the" \
+             ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+       $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+       @echo
+       @echo "Build finished; now you can run "qcollectiongenerator" with the" 
\
+             ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+       @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Proton.qhcp"
+       @echo "To view the help file:"
+       @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Proton.qhc"
+
+devhelp:
+       $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+       @echo
+       @echo "Build finished."
+       @echo "To view the help file:"
+       @echo "# mkdir -p $$HOME/.local/share/devhelp/Proton"
+       @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Proton"
+       @echo "# devhelp"
+
+epub:
+       $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+       @echo
+       @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo
+       @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+       @echo "Run \`make' in that directory to run these through (pdf)latex" \
+             "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+       $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+       @echo
+       @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+       $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+       @echo
+       @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+texinfo:
+       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+       @echo
+       @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+       @echo "Run \`make' in that directory to run these through makeinfo" \
+             "(use \`make info' here to do that automatically)."
+
+info:
+       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+       @echo "Running Texinfo files through makeinfo..."
+       make -C $(BUILDDIR)/texinfo info
+       @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+       $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+       @echo
+       @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+changes:
+       $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+       @echo
+       @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+       $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+       @echo
+       @echo "Link check complete; look for any errors in the above output " \
+             "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+       $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+       @echo "Testing of doctests in the sources finished, look at the " \
+             "results in $(BUILDDIR)/doctest/output.txt."

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/doctrees/environment.pickle
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/doctrees/environment.pickle 
b/examples/engine/py/_build/doctrees/environment.pickle
new file mode 100644
index 0000000..2d7a398
Binary files /dev/null and 
b/examples/engine/py/_build/doctrees/environment.pickle differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/doctrees/index.doctree
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/doctrees/index.doctree 
b/examples/engine/py/_build/doctrees/index.doctree
new file mode 100644
index 0000000..de2c704
Binary files /dev/null and b/examples/engine/py/_build/doctrees/index.doctree 
differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/doctrees/tutorial.doctree
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/doctrees/tutorial.doctree 
b/examples/engine/py/_build/doctrees/tutorial.doctree
new file mode 100644
index 0000000..a093651
Binary files /dev/null and 
b/examples/engine/py/_build/doctrees/tutorial.doctree differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/.buildinfo
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/.buildinfo 
b/examples/engine/py/_build/html/.buildinfo
new file mode 100644
index 0000000..eed68be
--- /dev/null
+++ b/examples/engine/py/_build/html/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file hashes the configuration used when building these files. When it 
is not found, a full rebuild will be done.
+config: 2657ccbc7cab07e4ab00891ea70f9dd0
+tags: fbb0d17656682115ca4d033fb2f83ba1

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_sources/index.txt
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_sources/index.txt 
b/examples/engine/py/_build/html/_sources/index.txt
new file mode 100644
index 0000000..d5f5b76
--- /dev/null
+++ b/examples/engine/py/_build/html/_sources/index.txt
@@ -0,0 +1,15 @@
+.. Proton documentation master file, created by
+   sphinx-quickstart on Thu Jul 31 10:31:05 2014.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Some Proton Examples
+====================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   tutorial
+

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_sources/tutorial.txt
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_sources/tutorial.txt 
b/examples/engine/py/_build/html/_sources/tutorial.txt
new file mode 100644
index 0000000..89eb563
--- /dev/null
+++ b/examples/engine/py/_build/html/_sources/tutorial.txt
@@ -0,0 +1,152 @@
+============
+Hello World!
+============
+
+Tradition dictates that we start with hello world! However rather than
+simply striving for the shortest program possible, we'll aim for a
+more illustrative example while still restricting the functionality to
+sending and receiving a single message.
+
+.. literalinclude:: helloworld.py
+   :lines: 21-
+   :linenos:
+
+This example uses proton in an event-driven or reactive manner. The
+flow of control is an 'event loop', where the events may be triggered
+by data arriving on a socket among other things and are then passed to
+relevant 'handlers'. Applications are then structured as a set of
+defined handlers for events of interest; to be notified of a
+particular event, you define a class with an appropriately name method
+on it, inform the event loop of that method which then calls it
+whenever the event occurs.
+
+The class we define in this example, ``HelloWorld``, has methods to
+handle three types of events.
+
+The first, ``on_connection_opened()``, is called when the connection
+is opened, and when that occurs we create a receiver over which to
+receive our message and a sender over which to send it.
+
+The second method, ``on_credit()``, is called when our sender has been
+issued by the peer with 'credit', allowing it to send messages. A
+credit based flow control mechanism like this ensures we only send
+messages when the recipient is ready and able to receive them. This is
+particularly important when the volume of messages might be large. In
+our case we are just going to send one message.
+
+The third and final method, ``on_message()``, is called when a message
+arrives. Within that method we simply print the body of the message
+and then close the connection.
+
+This particular example assumes a broker (or similar service), which
+accepts connections and routes published messages to intended
+recipients. The constructor for the ``HelloWorld`` class takes the
+details of the broker to connect to, and the address through which the
+message is sent and received (for a broker this corresponds to a queue
+or topic name).
+
+After an instance of ``HelloWorld`` is constructed, the event loop is
+entered by the call to the ``run()`` method on the last line. This
+call will return only when the loop determines there are no more
+events possible (at which point our example program will then exit).
+
+====================
+Hello World, Direct!
+====================
+
+Though often used in conjunction with a broker, AMQP does not
+*require* this. It also allows senders and receivers can communicate
+directly if desired.
+
+Let's modify our example to demonstrate this.
+
+.. literalinclude:: helloworld_direct.py
+   :lines: 21-
+   :emphasize-lines: 17,33,38
+   :linenos:
+
+The first difference, on line 17, is that rather than creating a
+receiver on the same connection as our sender, we listen for incoming
+connections by invoking the ``listen() method on the ``EventLoop``
+instance.
+
+Another difference is that the ``EventLoop`` instance we use is not
+the default instance as was used in the original example, but one we
+construct ourselves on line 38, passing in some event handlers. The
+first of these is ``HelloWorldReceiver``, as used in the original
+example. We pass it to the event loop, because we aren't going to
+directly create the receiver here ourselves. Rather we will accept an
+incoming connection on which the message will be received. This
+handler would then be notified of any incoming message event on any of
+the connections the event loop controls. As well as our own handler, we
+specify a couple of useful handlers from the ``proton_events``
+toolkit. The ``Handshaker`` handler will ensure our server follows the
+basic handshaking rules laid down by the protocol. The
+``FlowController`` will issue credit for incoming messages. We won't
+worry about them in more detail than that for now.
+
+The last difference is that we close the ``acceptor`` returned from
+the ``listen()`` call as part of the handling of the connection close
+event (line 33).
+
+So now we have our example working without a broker involved!
+
+==========
+The Basics
+==========
+
+TODO: These examples show reliable (at-least-once) send and receive
+with reconnect ability. Need to write some explanation. Could also do
+with some further cleanup.
+
+
+.. literalinclude:: simple_recv.py
+   :lines: 21-
+   :linenos:
+
+.. literalinclude:: simple_send.py
+   :lines: 21-
+   :linenos:
+
+================
+Request/Response
+================
+
+A common pattern is to send a request message and expect a response
+message in return. AMQP has special support for this pattern. Let's
+have a look at a simple example. We'll start with the 'server',
+i.e. the program that will process the request and send the
+response. Note that we are still using a broker in this example.
+
+Our server will provide a very simple service: it will respond with
+the body of the request converted to uppercase.
+
+.. literalinclude:: server.py
+   :lines: 21-
+   :linenos:
+
+The code here is not too different from the simple receiver example. When
+we receive a request however, we look at the reply-to address and
+create a sender for that over which to send the response. We'll cache
+the senders incase we get further requests wit the same reply-to.
+
+Now let's create a simple client to test this service out.
+
+.. literalinclude:: client.py
+   :lines: 21-
+   :linenos:
+
+As well as sending requests, we need to be able to get back the
+responses. We create a receiver for that (see line 8), but we don't
+specify an address, we set the dynamic option which tells the broker
+we are connected to to create a temporary address over which we can
+receive our responses.
+
+We need to use the address allocated by the broker as the reply_to
+address of our requests. To be notified when the broker has sent us
+back the address to use, we add an ``on_link_remote_open()`` method to
+our receiver's handler, and use that as the trigger to send our first
+request.
+
+
+

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/ajax-loader.gif
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/ajax-loader.gif 
b/examples/engine/py/_build/html/_static/ajax-loader.gif
new file mode 100644
index 0000000..61faf8c
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/ajax-loader.gif differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/alert_info_32.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/alert_info_32.png 
b/examples/engine/py/_build/html/_static/alert_info_32.png
new file mode 100644
index 0000000..05b4fe8
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/alert_info_32.png differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/alert_warning_32.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/alert_warning_32.png 
b/examples/engine/py/_build/html/_static/alert_warning_32.png
new file mode 100644
index 0000000..f13611c
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/alert_warning_32.png differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/basic.css
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/basic.css 
b/examples/engine/py/_build/html/_static/basic.css
new file mode 100644
index 0000000..43e8baf
--- /dev/null
+++ b/examples/engine/py/_build/html/_static/basic.css
@@ -0,0 +1,540 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- 
*/
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- 
*/
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- 
*/
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+    width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+    width: 30px;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- 
*/
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ 
*/
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- 
*/
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- 
*/
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- 
*/
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- 
*/
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- 
*/
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- 
*/
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- 
*/
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+abbr, acronym {
+    border-bottom: dotted 1px;
+    cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- 
*/
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- 
*/
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- 
*/
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/bg-page.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/bg-page.png 
b/examples/engine/py/_build/html/_static/bg-page.png
new file mode 100644
index 0000000..c6f3bc4
Binary files /dev/null and b/examples/engine/py/_build/html/_static/bg-page.png 
differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/bullet_orange.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/bullet_orange.png 
b/examples/engine/py/_build/html/_static/bullet_orange.png
new file mode 100644
index 0000000..ad5d02f
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/bullet_orange.png differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/comment-bright.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/comment-bright.png 
b/examples/engine/py/_build/html/_static/comment-bright.png
new file mode 100644
index 0000000..551517b
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/comment-bright.png differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/comment-close.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/comment-close.png 
b/examples/engine/py/_build/html/_static/comment-close.png
new file mode 100644
index 0000000..09b54be
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/comment-close.png differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/comment.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/comment.png 
b/examples/engine/py/_build/html/_static/comment.png
new file mode 100644
index 0000000..92feb52
Binary files /dev/null and b/examples/engine/py/_build/html/_static/comment.png 
differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/default.css
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/default.css 
b/examples/engine/py/_build/html/_static/default.css
new file mode 100644
index 0000000..21f3f50
--- /dev/null
+++ b/examples/engine/py/_build/html/_static/default.css
@@ -0,0 +1,256 @@
+/*
+ * default.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- default theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- 
*/
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ 
*/
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:visited {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- 
*/
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.admonition p {
+    margin-bottom: 5px;
+}
+
+div.admonition pre {
+    margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+    margin-bottom: 5px;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: #eeffcc;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+th {
+    background-color: #ede;
+}
+
+.warning tt {
+    background: #efc2c2;
+}
+
+.note tt {
+    background: #d6d6d6;
+}
+
+.viewcode-back {
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/doctools.js
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/doctools.js 
b/examples/engine/py/_build/html/_static/doctools.js
new file mode 100644
index 0000000..d4619fd
--- /dev/null
+++ b/examples/engine/py/_build/html/_static/doctools.js
@@ -0,0 +1,247 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+    "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+};
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+  for (var i = 0; i < arr.length; i++) {
+    if (arr[i] == item)
+      return true;
+  }
+  return false;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, 
text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this);
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initIndexTable();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can safely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + 
')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlighted');
+        });
+      }, 10);
+      $('<p class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+          .appendTo($('#searchbox'));
+    }
+  },
+
+  /**
+   * init the domain index toggle buttons
+   */
+  initIndexTable : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      $('tr.cg-' + idnum).toggle();
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('#searchbox .highlight-link').fadeOut(300);
+    $('span.highlighted').removeClass('highlighted');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/down-pressed.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/down-pressed.png 
b/examples/engine/py/_build/html/_static/down-pressed.png
new file mode 100644
index 0000000..6f7ad78
Binary files /dev/null and 
b/examples/engine/py/_build/html/_static/down-pressed.png differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/down.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/down.png 
b/examples/engine/py/_build/html/_static/down.png
new file mode 100644
index 0000000..3003a88
Binary files /dev/null and b/examples/engine/py/_build/html/_static/down.png 
differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/file.png
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/file.png 
b/examples/engine/py/_build/html/_static/file.png
new file mode 100644
index 0000000..d18082e
Binary files /dev/null and b/examples/engine/py/_build/html/_static/file.png 
differ

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d4b154cb/examples/engine/py/_build/html/_static/haiku.css
----------------------------------------------------------------------
diff --git a/examples/engine/py/_build/html/_static/haiku.css 
b/examples/engine/py/_build/html/_static/haiku.css
new file mode 100644
index 0000000..1b7c261
--- /dev/null
+++ b/examples/engine/py/_build/html/_static/haiku.css
@@ -0,0 +1,371 @@
+/*
+ * haiku.css_t
+ * ~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- haiku theme.
+ *
+ * Adapted from http://haiku-os.org/docs/Haiku-doc.css.
+ * Original copyright message:
+ *
+ *     Copyright 2008-2009, Haiku. All rights reserved.
+ *     Distributed under the terms of the MIT License.
+ *
+ *     Authors:
+ *              Francois Revol <[email protected]>
+ *              Stephan Assmus <[email protected]>
+ *              Braden Ewing <[email protected]>
+ *              Humdinger <[email protected]>
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+html {
+    margin: 0px;
+    padding: 0px;
+    background: #FFF url(bg-page.png) top left repeat-x;
+}
+
+body {
+    line-height: 1.5;
+    margin: auto;
+    padding: 0px;
+    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
+    min-width: 59em;
+    max-width: 70em;
+    color: #333333;
+}
+
+div.footer {
+    padding: 8px;
+    font-size: 11px;
+    text-align: center;
+    letter-spacing: 0.5px;
+}
+
+/* link colors and text decoration */
+
+a:link {
+    font-weight: bold;
+    text-decoration: none;
+    color: #dc3c01;
+}
+
+a:visited {
+    font-weight: bold;
+    text-decoration: none;
+    color: #892601;
+}
+
+a:hover, a:active {
+    text-decoration: underline;
+    color: #ff4500;
+}
+
+/* Some headers act as anchors, don't give them a hover effect */
+
+h1 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+h2 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+h3 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+h4 a:hover, a:active {
+    text-decoration: none;
+    color: #0c3762;
+}
+
+a.headerlink {
+    color: #a7ce38;
+    padding-left: 5px;
+}
+
+a.headerlink:hover {
+    color: #a7ce38;
+}
+
+/* basic text elements */
+
+div.content {
+    margin-top: 20px;
+    margin-left: 40px;
+    margin-right: 40px;
+    margin-bottom: 50px;
+    font-size: 0.9em;
+}
+
+/* heading and navigation */
+
+div.header {
+    position: relative;
+    left: 0px;
+    top: 0px;
+    height: 85px;
+    /* background: #eeeeee; */
+    padding: 0 40px;
+}
+div.header h1 {
+    font-size: 1.6em;
+    font-weight: normal;
+    letter-spacing: 1px;
+    color: #0c3762;
+    border: 0;
+    margin: 0;
+    padding-top: 15px;
+}
+div.header h1 a {
+    font-weight: normal;
+    color: #0c3762;
+}
+div.header h2 {
+    font-size: 1.3em;
+    font-weight: normal;
+    letter-spacing: 1px;
+    text-transform: uppercase;
+    color: #aaa;
+    border: 0;
+    margin-top: -3px;
+    padding: 0;
+}
+
+div.header img.rightlogo {
+    float: right;
+}
+
+
+div.title {
+    font-size: 1.3em;
+    font-weight: bold;
+    color: #0c3762;
+    border-bottom: dotted thin #e0e0e0;
+    margin-bottom: 25px;
+}
+div.topnav {
+    /* background: #e0e0e0; */
+}
+div.topnav p {
+    margin-top: 0;
+    margin-left: 40px;
+    margin-right: 40px;
+    margin-bottom: 0px;
+    text-align: right;
+    font-size: 0.8em;
+}
+div.bottomnav {
+    background: #eeeeee;
+}
+div.bottomnav p {
+    margin-right: 40px;
+    text-align: right;
+    font-size: 0.8em;
+}
+
+a.uplink {
+    font-weight: normal;
+}
+
+
+/* contents box */
+
+table.index {
+    margin: 0px 0px 30px 30px;
+    padding: 1px;
+    border-width: 1px;
+    border-style: dotted;
+    border-color: #e0e0e0;
+}
+table.index tr.heading {
+    background-color: #e0e0e0;
+    text-align: center;
+    font-weight: bold;
+    font-size: 1.1em;
+}
+table.index tr.index {
+    background-color: #eeeeee;
+}
+table.index td {
+    padding: 5px 20px;
+}
+
+table.index a:link, table.index a:visited {
+    font-weight: normal;
+    text-decoration: none;
+    color: #dc3c01;
+}
+table.index a:hover, table.index a:active {
+    text-decoration: underline;
+    color: #ff4500;
+}
+
+
+/* Haiku User Guide styles and layout */
+
+/* Rounded corner boxes */
+/* Common declarations */
+div.admonition {
+    -webkit-border-radius: 10px;
+    -khtml-border-radius: 10px;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+    border-style: dotted;
+    border-width: thin;
+    border-color: #dcdcdc;
+    padding: 10px 15px 10px 15px;
+    margin-bottom: 15px;
+    margin-top: 15px;
+}
+div.note {
+    padding: 10px 15px 10px 80px;
+    background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;
+    min-height: 42px;
+}
+div.warning {
+    padding: 10px 15px 10px 80px;
+    background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;
+    min-height: 42px;
+}
+div.seealso {
+    background: #e4ffde;
+}
+
+/* More layout and styles */
+h1 {
+    font-size: 1.3em;
+    font-weight: bold;
+    color: #0c3762;
+    border-bottom: dotted thin #e0e0e0;
+    margin-top: 30px;
+}
+
+h2 {
+    font-size: 1.2em;
+    font-weight: normal;
+    color: #0c3762;
+    border-bottom: dotted thin #e0e0e0;
+    margin-top: 30px;
+}
+
+h3 {
+    font-size: 1.1em;
+    font-weight: normal;
+    color: #0c3762;
+    margin-top: 30px;
+}
+
+h4 {
+    font-size: 1.0em;
+    font-weight: normal;
+    color: #0c3762;
+    margin-top: 30px;
+}
+
+p {
+    text-align: justify;
+}
+
+p.last {
+    margin-bottom: 0;
+}
+
+ol {
+    padding-left: 20px;
+}
+
+ul {
+    padding-left: 5px;
+    margin-top: 3px;
+}
+
+li {
+    line-height: 1.3;
+}
+
+div.content ul > li {
+    -moz-background-clip:border;
+    -moz-background-inline-policy:continuous;
+    -moz-background-origin:padding;
+    background: transparent url(bullet_orange.png) no-repeat scroll left 
0.45em;
+    list-style-image: none;
+    list-style-type: none;
+    padding: 0 0 0 1.666em;
+    margin-bottom: 3px;
+}
+
+td {
+    vertical-align: top;
+}
+
+tt {
+    background-color: #e2e2e2;
+    font-size: 1.0em;
+    font-family: monospace;
+}
+
+pre {
+    border-color: #0c3762;
+    border-style: dotted;
+    border-width: thin;
+    margin: 0 0 12px 0;
+    padding: 0.8em;
+    background-color: #f0f0f0;
+}
+
+hr {
+    border-top: 1px solid #ccc;
+    border-bottom: 0;
+    border-right: 0;
+    border-left: 0;
+    margin-bottom: 10px;
+    margin-top: 20px;
+}
+
+/* printer only pretty stuff */
+@media print {
+    .noprint {
+        display: none;
+    }
+    /* for acronyms we want their definitions inlined at print time */
+    acronym[title]:after {
+        font-size: small;
+        content: " (" attr(title) ")";
+        font-style: italic;
+    }
+    /* and not have mozilla dotted underline */
+    acronym {
+        border: none;
+    }
+    div.topnav, div.bottomnav, div.header, table.index {
+        display: none;
+    }
+    div.content {
+        margin: 0px;
+        padding: 0px;
+    }
+    html {
+        background: #FFF;
+    }
+}
+
+.viewcode-back {
+    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+    margin: -1px -12px;
+    padding: 0 12px;
+}
\ No newline at end of file


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

Reply via email to