You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2016/10/14 16:30:54 UTC

[49/51] [partial] qpid-site git commit: add files for Proton 0.15.0 release

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/c/examples/recv.c.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/c/examples/recv.c.html b/content/releases/qpid-proton-0.15.0/messenger/c/examples/recv.c.html
new file mode 100644
index 0000000..3793ee4
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/c/examples/recv.c.html
@@ -0,0 +1,283 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>recv.c - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/java-broker/index.html">Broker for Java</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-proton-0.15.0/index.html">Qpid Proton 0.15.0</a></li><li><a href="/releases/qpid-proton-0.15.0/messenger/c/examples/index.html">C AMQP Messenger Examples</a></li><li>recv.c</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>recv.c</h1>
+<div class="highlight"><pre><span class="cp">#include &quot;proton/message.h&quot;</span>
+<span class="cp">#include &quot;proton/messenger.h&quot;</span>
+
+<span class="cp">#include &quot;pncompat/misc_funcs.inc&quot;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;ctype.h&gt;</span>
+
+<span class="cp">#define check(messenger)                                                     \</span>
+<span class="cp">  {                                                                          \</span>
+<span class="cp">    if(pn_messenger_errno(messenger))                                        \</span>
+<span class="cp">    {                                                                        \</span>
+<span class="cp">      die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \</span>
+<span class="cp">    }                                                                        \</span>
+<span class="cp">  }                                                                          \</span>
+
+<span class="kt">void</span> <span class="nf">die</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">file</span><span class="p">,</span> <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s:%i: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Usage: recv [options] &lt;addr&gt;</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;-c    </span><span class="se">\t</span><span class="s">Path to the certificate file.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;-k    </span><span class="se">\t</span><span class="s">Path to the private key file.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;-p    </span><span class="se">\t</span><span class="s">Password for the private key.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;&lt;addr&gt;</span><span class="se">\t</span><span class="s">An address.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">char</span><span class="o">*</span> <span class="n">certificate</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span><span class="o">*</span> <span class="n">privatekey</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span><span class="o">*</span> <span class="n">password</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+  <span class="kt">char</span><span class="o">*</span> <span class="n">address</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span> <span class="s">&quot;amqp://~0.0.0.0&quot;</span><span class="p">;</span>
+  <span class="kt">int</span> <span class="n">c</span><span class="p">;</span>
+
+  <span class="kt">pn_message_t</span> <span class="o">*</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">pn_messenger_t</span> <span class="o">*</span> <span class="n">messenger</span><span class="p">;</span>
+
+  <span class="n">message</span> <span class="o">=</span> <span class="n">pn_message</span><span class="p">();</span>
+  <span class="n">messenger</span> <span class="o">=</span> <span class="n">pn_messenger</span><span class="p">(</span><span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">opterr</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">while</span><span class="p">((</span><span class="n">c</span> <span class="o">=</span> <span class="n">getopt</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">,</span> <span class="s">&quot;hc:k:p:&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+  <span class="p">{</span>
+    <span class="k">switch</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
+    <span class="p">{</span>
+    <span class="k">case</span> <span class="sc">&#39;h&#39;</span>:
+      <span class="n">usage</span><span class="p">();</span>
+      <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">case</span> <span class="sc">&#39;c&#39;</span>: <span class="n">certificate</span> <span class="o">=</span> <span class="n">optarg</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="sc">&#39;k&#39;</span>: <span class="n">privatekey</span> <span class="o">=</span> <span class="n">optarg</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="sc">&#39;p&#39;</span>: <span class="n">password</span> <span class="o">=</span> <span class="n">optarg</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">case</span> <span class="sc">&#39;?&#39;</span>:
+      <span class="k">if</span><span class="p">(</span><span class="n">optopt</span> <span class="o">==</span> <span class="sc">&#39;c&#39;</span> <span class="o">||</span>
+         <span class="n">optopt</span> <span class="o">==</span> <span class="sc">&#39;k&#39;</span> <span class="o">||</span>
+         <span class="n">optopt</span> <span class="o">==</span> <span class="sc">&#39;p&#39;</span><span class="p">)</span>
+      <span class="p">{</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Option -%c requires an argument.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+      <span class="p">}</span>
+      <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="n">isprint</span><span class="p">(</span><span class="n">optopt</span><span class="p">))</span>
+      <span class="p">{</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unknown option `-%c&#39;.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+      <span class="p">}</span>
+      <span class="k">else</span>
+      <span class="p">{</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unknown option character `</span><span class="se">\\</span><span class="s">x%x&#39;.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+      <span class="p">}</span>
+      <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">abort</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">optind</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">)</span>
+  <span class="p">{</span>
+    <span class="n">address</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">optind</span><span class="p">];</span>
+  <span class="p">}</span>
+
+  
+  <span class="k">if</span><span class="p">(</span><span class="n">certificate</span><span class="p">)</span>
+  <span class="p">{</span>
+    <span class="n">pn_messenger_set_certificate</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">certificate</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">privatekey</span><span class="p">)</span>
+  <span class="p">{</span>
+    <span class="n">pn_messenger_set_private_key</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">privatekey</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span><span class="p">(</span><span class="n">password</span><span class="p">)</span>
+  <span class="p">{</span>
+    <span class="n">pn_messenger_set_password</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">password</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">pn_messenger_start</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+  <span class="n">pn_messenger_subscribe</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">address</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+  <span class="k">for</span><span class="p">(;;)</span>
+  <span class="p">{</span>
+    <span class="n">pn_messenger_recv</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="mi">1024</span><span class="p">);</span>
+    <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+    <span class="k">while</span><span class="p">(</span><span class="n">pn_messenger_incoming</span><span class="p">(</span><span class="n">messenger</span><span class="p">))</span>
+    <span class="p">{</span>
+      <span class="n">pn_messenger_get</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+      <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+      <span class="p">{</span>
+      <span class="kt">char</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">1024</span><span class="p">];</span>
+      <span class="kt">size_t</span> <span class="n">buffsize</span> <span class="o">=</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
+      <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">subject</span> <span class="o">=</span> <span class="n">pn_message_get_subject</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
+      <span class="kt">pn_data_t</span> <span class="o">*</span><span class="n">body</span> <span class="o">=</span> <span class="n">pn_message_body</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
+      <span class="n">pn_data_format</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">buffsize</span><span class="p">);</span>
+
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Address: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">pn_message_get_address</span><span class="p">(</span><span class="n">message</span><span class="p">));</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Subject: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">subject</span> <span class="o">?</span> <span class="n">subject</span> <span class="o">:</span> <span class="s">&quot;(no subject)&quot;</span><span class="p">);</span>
+      <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Content: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span>
+      <span class="p">}</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="recv.c">Download this file</a></p>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c
new file mode 100755
index 0000000..de9b023
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c
@@ -0,0 +1,170 @@
+/*
+ * 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.
+ *
+ */
+
+// This is a re-implementation of send.c using non-blocking/asynchronous calls.
+
+#include "proton/message.h"
+#include "proton/messenger.h"
+
+#include "pncompat/misc_funcs.inc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#if EMSCRIPTEN
+#include <emscripten.h>
+#endif
+
+pn_message_t * message;
+pn_messenger_t * messenger;
+pn_tracker_t tracker;
+int running = 1;
+
+#define check(messenger)                                                     \
+  {                                                                          \
+    if(pn_messenger_errno(messenger))                                        \
+    {                                                                        \
+      die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \
+    }                                                                        \
+  }                                                                          \
+
+void die(const char *file, int line, const char *message)
+{
+    fprintf(stderr, "%s:%i: %s\n", file, line, message);
+    exit(1);
+}
+
+void usage(void)
+{
+    printf("Usage: send [-a addr] [message]\n");
+    printf("-a     \tThe target address [amqp[s]://domain[/name]]\n");
+    printf("message\tA text string to send.\n");
+    exit(0);
+}
+
+void process(void) {
+    pn_status_t status = pn_messenger_status(messenger, tracker);
+    if (status != PN_STATUS_PENDING) {
+        if (running) {
+            pn_messenger_stop(messenger);
+            running = 0;
+        } 
+    }
+
+    if (pn_messenger_stopped(messenger)) {
+        pn_message_free(message);
+        pn_messenger_free(messenger);
+        message = NULL;
+        messenger = NULL;
+    }
+}
+
+#if EMSCRIPTEN // For emscripten C/C++ to JavaScript compiler.
+void pump(int fd, void* userData) {
+    while (pn_messenger_work(messenger, 0) >= 0) {
+        process();
+    }
+}
+
+void onclose(int fd, void* userData) {
+    process();
+}
+
+void onerror(int fd, int errno, const char* msg, void* userData) {
+    printf("error callback fd = %d, errno = %d, msg = %s\n", fd, errno, msg);
+}
+#endif
+
+int main(int argc, char** argv)
+{
+    int c;
+    char * address = (char *) "amqp://0.0.0.0";
+    char * msgtext = (char *) "Hello World!";
+    pn_data_t* body;
+
+    opterr = 0;
+
+    while((c = getopt(argc, argv, "ha:b:c:")) != -1)
+    {
+        switch(c)
+        {
+            case 'a': address = optarg; break;
+            case 'h': usage(); break;
+
+            case '?':
+                if(optopt == 'a')
+                {
+                    fprintf(stderr, "Option -%c requires an argument.\n", optopt);
+                }
+                else if(isprint(optopt))
+                {
+                    fprintf(stderr, "Unknown option `-%c'.\n", optopt);
+                }
+                else
+                {
+                    fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt);
+                }
+                return 1;
+            default:
+                abort();
+        }
+    }
+
+    if (optind < argc) msgtext = argv[optind];
+
+    message = pn_message();
+    messenger = pn_messenger(NULL);
+    pn_messenger_set_blocking(messenger, false); // Needs to be set non-blocking to behave asynchronously.
+    pn_messenger_set_outgoing_window(messenger, 1024); 
+
+    pn_messenger_start(messenger);
+
+    pn_message_set_address(message, address);
+    body = pn_message_body(message);
+    pn_data_put_string(body, pn_bytes(strlen(msgtext), msgtext));
+
+    pn_messenger_put(messenger, message);
+    check(messenger);
+
+    tracker = pn_messenger_outgoing_tracker(messenger);
+
+#if EMSCRIPTEN // For emscripten C/C++ to JavaScript compiler.
+    emscripten_set_socket_error_callback(NULL, onerror);
+
+    emscripten_set_socket_open_callback(NULL, pump);
+    emscripten_set_socket_connection_callback(NULL, pump);
+    emscripten_set_socket_message_callback(NULL, pump);
+    emscripten_set_socket_close_callback(NULL, onclose);
+#else // For native compiler.
+    while (running) {
+        pn_messenger_work(messenger, -1); // Block indefinitely until there has been socket activity.
+        process();
+    }
+
+    while (messenger && !pn_messenger_stopped(messenger)) {
+        pn_messenger_work(messenger, 0);
+        process();
+    }
+#endif
+
+    return 0;
+}
+

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c.html b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c.html
new file mode 100644
index 0000000..67f7975
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send-async.c.html
@@ -0,0 +1,298 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>send-async.c - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/java-broker/index.html">Broker for Java</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-proton-0.15.0/index.html">Qpid Proton 0.15.0</a></li><li><a href="/releases/qpid-proton-0.15.0/messenger/c/examples/index.html">C AMQP Messenger Examples</a></li><li>send-async.c</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>send-async.c</h1>
+<div class="highlight"><pre><span class="c1">// This is a re-implementation of send.c using non-blocking/asynchronous calls.</span>
+
+<span class="cp">#include &quot;proton/message.h&quot;</span>
+<span class="cp">#include &quot;proton/messenger.h&quot;</span>
+
+<span class="cp">#include &quot;pncompat/misc_funcs.inc&quot;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;ctype.h&gt;</span>
+
+<span class="cp">#if EMSCRIPTEN</span>
+<span class="cp">#include &lt;emscripten.h&gt;</span>
+<span class="cp">#endif</span>
+
+<span class="kt">pn_message_t</span> <span class="o">*</span> <span class="n">message</span><span class="p">;</span>
+<span class="kt">pn_messenger_t</span> <span class="o">*</span> <span class="n">messenger</span><span class="p">;</span>
+<span class="kt">pn_tracker_t</span> <span class="n">tracker</span><span class="p">;</span>
+<span class="kt">int</span> <span class="n">running</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+
+<span class="cp">#define check(messenger)                                                     \</span>
+<span class="cp">  {                                                                          \</span>
+<span class="cp">    if(pn_messenger_errno(messenger))                                        \</span>
+<span class="cp">    {                                                                        \</span>
+<span class="cp">      die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \</span>
+<span class="cp">    }                                                                        \</span>
+<span class="cp">  }                                                                          \</span>
+
+<span class="kt">void</span> <span class="nf">die</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">file</span><span class="p">,</span> <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s:%i: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Usage: send [-a addr] [message]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;-a     </span><span class="se">\t</span><span class="s">The target address [amqp[s]://domain[/name]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;message</span><span class="se">\t</span><span class="s">A text string to send.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+    <span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">process</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kt">pn_status_t</span> <span class="n">status</span> <span class="o">=</span> <span class="n">pn_messenger_status</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">tracker</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span class="n">status</span> <span class="o">!=</span> <span class="n">PN_STATUS_PENDING</span><span class="p">)</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span class="n">running</span><span class="p">)</span> <span class="p">{</span>
+            <span class="n">pn_messenger_stop</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+            <span class="n">running</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+        <span class="p">}</span> 
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">pn_messenger_stopped</span><span class="p">(</span><span class="n">messenger</span><span class="p">))</span> <span class="p">{</span>
+        <span class="n">pn_message_free</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
+        <span class="n">pn_messenger_free</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+        <span class="n">message</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+        <span class="n">messenger</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="cp">#if EMSCRIPTEN </span><span class="c1">// For emscripten C/C++ to JavaScript compiler.</span>
+<span class="kt">void</span> <span class="nf">pump</span><span class="p">(</span><span class="kt">int</span> <span class="n">fd</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span> <span class="n">userData</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">pn_messenger_work</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">process</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">onclose</span><span class="p">(</span><span class="kt">int</span> <span class="n">fd</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span> <span class="n">userData</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">process</span><span class="p">();</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">onerror</span><span class="p">(</span><span class="kt">int</span> <span class="n">fd</span><span class="p">,</span> <span class="kt">int</span> <span class="n">errno</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">msg</span><span class="p">,</span> <span class="kt">void</span><span class="o">*</span> <span class="n">userData</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">printf</span><span class="p">(</span><span class="s">&quot;error callback fd = %d, errno = %d, msg = %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">fd</span><span class="p">,</span> <span class="n">errno</span><span class="p">,</span> <span class="n">msg</span><span class="p">);</span>
+<span class="p">}</span>
+<span class="cp">#endif</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+    <span class="kt">int</span> <span class="n">c</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span> <span class="n">address</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span> <span class="s">&quot;amqp://0.0.0.0&quot;</span><span class="p">;</span>
+    <span class="kt">char</span> <span class="o">*</span> <span class="n">msgtext</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span> <span class="s">&quot;Hello World!&quot;</span><span class="p">;</span>
+    <span class="kt">pn_data_t</span><span class="o">*</span> <span class="n">body</span><span class="p">;</span>
+
+    <span class="n">opterr</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+    <span class="k">while</span><span class="p">((</span><span class="n">c</span> <span class="o">=</span> <span class="n">getopt</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">,</span> <span class="s">&quot;ha:b:c:&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+    <span class="p">{</span>
+        <span class="k">switch</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
+        <span class="p">{</span>
+            <span class="k">case</span> <span class="sc">&#39;a&#39;</span>: <span class="n">address</span> <span class="o">=</span> <span class="n">optarg</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+            <span class="k">case</span> <span class="sc">&#39;h&#39;</span>: <span class="n">usage</span><span class="p">();</span> <span class="k">break</span><span class="p">;</span>
+
+            <span class="k">case</span> <span class="sc">&#39;?&#39;</span>:
+                <span class="k">if</span><span class="p">(</span><span class="n">optopt</span> <span class="o">==</span> <span class="sc">&#39;a&#39;</span><span class="p">)</span>
+                <span class="p">{</span>
+                    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Option -%c requires an argument.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+                <span class="p">}</span>
+                <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="n">isprint</span><span class="p">(</span><span class="n">optopt</span><span class="p">))</span>
+                <span class="p">{</span>
+                    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unknown option `-%c&#39;.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+                <span class="p">}</span>
+                <span class="k">else</span>
+                <span class="p">{</span>
+                    <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unknown option character `</span><span class="se">\\</span><span class="s">x%x&#39;.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+                <span class="p">}</span>
+                <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+            <span class="nl">default:</span>
+                <span class="n">abort</span><span class="p">();</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="k">if</span> <span class="p">(</span><span class="n">optind</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">)</span> <span class="n">msgtext</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">optind</span><span class="p">];</span>
+
+    <span class="n">message</span> <span class="o">=</span> <span class="n">pn_message</span><span class="p">();</span>
+    <span class="n">messenger</span> <span class="o">=</span> <span class="n">pn_messenger</span><span class="p">(</span><span class="nb">NULL</span><span class="p">);</span>
+    <span class="n">pn_messenger_set_blocking</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span> <span class="c1">// Needs to be set non-blocking to behave asynchronously.</span>
+    <span class="n">pn_messenger_set_outgoing_window</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="mi">1024</span><span class="p">);</span> 
+
+    <span class="n">pn_messenger_start</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+    <span class="n">pn_message_set_address</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">address</span><span class="p">);</span>
+    <span class="n">body</span> <span class="o">=</span> <span class="n">pn_message_body</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
+    <span class="n">pn_data_put_string</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">pn_bytes</span><span class="p">(</span><span class="n">strlen</span><span class="p">(</span><span class="n">msgtext</span><span class="p">),</span> <span class="n">msgtext</span><span class="p">));</span>
+
+    <span class="n">pn_messenger_put</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+    <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+    <span class="n">tracker</span> <span class="o">=</span> <span class="n">pn_messenger_outgoing_tracker</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+<span class="cp">#if EMSCRIPTEN </span><span class="c1">// For emscripten C/C++ to JavaScript compiler.</span>
+    <span class="n">emscripten_set_socket_error_callback</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="n">onerror</span><span class="p">);</span>
+
+    <span class="n">emscripten_set_socket_open_callback</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="n">pump</span><span class="p">);</span>
+    <span class="n">emscripten_set_socket_connection_callback</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="n">pump</span><span class="p">);</span>
+    <span class="n">emscripten_set_socket_message_callback</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="n">pump</span><span class="p">);</span>
+    <span class="n">emscripten_set_socket_close_callback</span><span class="p">(</span><span class="nb">NULL</span><span class="p">,</span> <span class="n">onclose</span><span class="p">);</span>
+<span class="cp">#else </span><span class="c1">// For native compiler.</span>
+    <span class="k">while</span> <span class="p">(</span><span class="n">running</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">pn_messenger_work</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span> <span class="c1">// Block indefinitely until there has been socket activity.</span>
+        <span class="n">process</span><span class="p">();</span>
+    <span class="p">}</span>
+
+    <span class="k">while</span> <span class="p">(</span><span class="n">messenger</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">pn_messenger_stopped</span><span class="p">(</span><span class="n">messenger</span><span class="p">))</span> <span class="p">{</span>
+        <span class="n">pn_messenger_work</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
+        <span class="n">process</span><span class="p">();</span>
+    <span class="p">}</span>
+<span class="cp">#endif</span>
+
+    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="send-async.c">Download this file</a></p>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c
new file mode 100755
index 0000000..11b47ff
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ *
+ */
+
+#include "proton/message.h"
+#include "proton/messenger.h"
+
+#include "pncompat/misc_funcs.inc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#define check(messenger)                                                     \
+  {                                                                          \
+    if(pn_messenger_errno(messenger))                                        \
+    {                                                                        \
+      die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \
+    }                                                                        \
+  }                                                                          \
+
+void die(const char *file, int line, const char *message)
+{
+  fprintf(stderr, "%s:%i: %s\n", file, line, message);
+  exit(1);
+}
+
+void usage(void)
+{
+  printf("Usage: send [-a addr] [message]\n");
+  printf("-a     \tThe target address [amqp[s]://domain[/name]]\n");
+  printf("message\tA text string to send.\n");
+  exit(0);
+}
+
+int main(int argc, char** argv)
+{
+  int c;
+  char * address = (char *) "amqp://0.0.0.0";
+  char * msgtext = (char *) "Hello World!";
+  opterr = 0;
+
+  while((c = getopt(argc, argv, "ha:b:c:")) != -1)
+  {
+    switch(c)
+    {
+    case 'a': address = optarg; break;
+    case 'h': usage(); break;
+
+    case '?':
+      if(optopt == 'a')
+      {
+        fprintf(stderr, "Option -%c requires an argument.\n", optopt);
+      }
+      else if(isprint(optopt))
+      {
+        fprintf(stderr, "Unknown option `-%c'.\n", optopt);
+      }
+      else
+      {
+        fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt);
+      }
+      return 1;
+    default:
+      abort();
+    }
+  }
+
+  if (optind < argc) msgtext = argv[optind];
+
+  {
+  pn_message_t * message;
+  pn_messenger_t * messenger;
+  pn_data_t * body;
+
+  message = pn_message();
+  messenger = pn_messenger(NULL);
+
+  pn_messenger_start(messenger);
+
+  pn_message_set_address(message, address);
+  body = pn_message_body(message);
+  pn_data_put_string(body, pn_bytes(strlen(msgtext), msgtext));
+  pn_messenger_put(messenger, message);
+  check(messenger);
+  pn_messenger_send(messenger, -1);
+  check(messenger);
+
+  pn_messenger_stop(messenger);
+  pn_messenger_free(messenger);
+  pn_message_free(message);
+  }
+
+  return 0;
+}

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c.html b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c.html
new file mode 100644
index 0000000..f9af90b
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/c/examples/send.c.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>send.c - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/java-broker/index.html">Broker for Java</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-proton-0.15.0/index.html">Qpid Proton 0.15.0</a></li><li><a href="/releases/qpid-proton-0.15.0/messenger/c/examples/index.html">C AMQP Messenger Examples</a></li><li>send.c</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>send.c</h1>
+<div class="highlight"><pre><span class="cp">#include &quot;proton/message.h&quot;</span>
+<span class="cp">#include &quot;proton/messenger.h&quot;</span>
+
+<span class="cp">#include &quot;pncompat/misc_funcs.inc&quot;</span>
+<span class="cp">#include &lt;stdio.h&gt;</span>
+<span class="cp">#include &lt;stdlib.h&gt;</span>
+<span class="cp">#include &lt;string.h&gt;</span>
+<span class="cp">#include &lt;ctype.h&gt;</span>
+
+<span class="cp">#define check(messenger)                                                     \</span>
+<span class="cp">  {                                                                          \</span>
+<span class="cp">    if(pn_messenger_errno(messenger))                                        \</span>
+<span class="cp">    {                                                                        \</span>
+<span class="cp">      die(__FILE__, __LINE__, pn_error_text(pn_messenger_error(messenger))); \</span>
+<span class="cp">    }                                                                        \</span>
+<span class="cp">  }                                                                          \</span>
+
+<span class="kt">void</span> <span class="nf">die</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">file</span><span class="p">,</span> <span class="kt">int</span> <span class="n">line</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">message</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;%s:%i: %s</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">file</span><span class="p">,</span> <span class="n">line</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;Usage: send [-a addr] [message]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;-a     </span><span class="se">\t</span><span class="s">The target address [amqp[s]://domain[/name]]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">printf</span><span class="p">(</span><span class="s">&quot;message</span><span class="se">\t</span><span class="s">A text string to send.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span>
+  <span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span><span class="o">**</span> <span class="n">argv</span><span class="p">)</span>
+<span class="p">{</span>
+  <span class="kt">int</span> <span class="n">c</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span> <span class="n">address</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span> <span class="s">&quot;amqp://0.0.0.0&quot;</span><span class="p">;</span>
+  <span class="kt">char</span> <span class="o">*</span> <span class="n">msgtext</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span> <span class="s">&quot;Hello World!&quot;</span><span class="p">;</span>
+  <span class="n">opterr</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+  <span class="k">while</span><span class="p">((</span><span class="n">c</span> <span class="o">=</span> <span class="n">getopt</span><span class="p">(</span><span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">,</span> <span class="s">&quot;ha:b:c:&quot;</span><span class="p">))</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+  <span class="p">{</span>
+    <span class="k">switch</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
+    <span class="p">{</span>
+    <span class="k">case</span> <span class="sc">&#39;a&#39;</span>: <span class="n">address</span> <span class="o">=</span> <span class="n">optarg</span><span class="p">;</span> <span class="k">break</span><span class="p">;</span>
+    <span class="k">case</span> <span class="sc">&#39;h&#39;</span>: <span class="n">usage</span><span class="p">();</span> <span class="k">break</span><span class="p">;</span>
+
+    <span class="k">case</span> <span class="sc">&#39;?&#39;</span>:
+      <span class="k">if</span><span class="p">(</span><span class="n">optopt</span> <span class="o">==</span> <span class="sc">&#39;a&#39;</span><span class="p">)</span>
+      <span class="p">{</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Option -%c requires an argument.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+      <span class="p">}</span>
+      <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="n">isprint</span><span class="p">(</span><span class="n">optopt</span><span class="p">))</span>
+      <span class="p">{</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unknown option `-%c&#39;.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+      <span class="p">}</span>
+      <span class="k">else</span>
+      <span class="p">{</span>
+        <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">&quot;Unknown option character `</span><span class="se">\\</span><span class="s">x%x&#39;.</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span> <span class="n">optopt</span><span class="p">);</span>
+      <span class="p">}</span>
+      <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+    <span class="nl">default:</span>
+      <span class="n">abort</span><span class="p">();</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="k">if</span> <span class="p">(</span><span class="n">optind</span> <span class="o">&lt;</span> <span class="n">argc</span><span class="p">)</span> <span class="n">msgtext</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">optind</span><span class="p">];</span>
+
+  <span class="p">{</span>
+  <span class="kt">pn_message_t</span> <span class="o">*</span> <span class="n">message</span><span class="p">;</span>
+  <span class="kt">pn_messenger_t</span> <span class="o">*</span> <span class="n">messenger</span><span class="p">;</span>
+  <span class="kt">pn_data_t</span> <span class="o">*</span> <span class="n">body</span><span class="p">;</span>
+
+  <span class="n">message</span> <span class="o">=</span> <span class="n">pn_message</span><span class="p">();</span>
+  <span class="n">messenger</span> <span class="o">=</span> <span class="n">pn_messenger</span><span class="p">(</span><span class="nb">NULL</span><span class="p">);</span>
+
+  <span class="n">pn_messenger_start</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+  <span class="n">pn_message_set_address</span><span class="p">(</span><span class="n">message</span><span class="p">,</span> <span class="n">address</span><span class="p">);</span>
+  <span class="n">body</span> <span class="o">=</span> <span class="n">pn_message_body</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
+  <span class="n">pn_data_put_string</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">pn_bytes</span><span class="p">(</span><span class="n">strlen</span><span class="p">(</span><span class="n">msgtext</span><span class="p">),</span> <span class="n">msgtext</span><span class="p">));</span>
+  <span class="n">pn_messenger_put</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+  <span class="n">pn_messenger_send</span><span class="p">(</span><span class="n">messenger</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+  <span class="n">check</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+
+  <span class="n">pn_messenger_stop</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+  <span class="n">pn_messenger_free</span><span class="p">(</span><span class="n">messenger</span><span class="p">);</span>
+  <span class="n">pn_message_free</span><span class="p">(</span><span class="n">message</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+<p><a href="send.c">Download this file</a></p>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl b/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl
new file mode 100755
index 0000000..a6d8378
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl
@@ -0,0 +1,105 @@
+#!/usr/bin/env perl
+#
+# 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.
+#
+
+use strict;
+use warnings;
+use Getopt::Long;
+use Pod::Usage;
+
+use qpid_proton;
+
+my $reply_to = "~/replies";
+my $help = 0;
+my $man = 0;
+
+GetOptions(
+    "reply_to=s", \$reply_to,
+    man => \$man,
+    "help|?" => \$help
+    ) or pod2usage(2);
+pod2usage(1) if $help;
+pod2usage(-exitval => 0, -verbose => 2) if $man;
+
+# get the address to use and show help if it's missing
+my $address = $ARGV[0];
+pod2usage(1) if !$address;
+
+my $messenger = new qpid::proton::Messenger();
+$messenger->start;
+
+my $message = new qpid::proton::Message();
+$message->set_address($address);
+$message->set_reply_to($reply_to);
+$message->set_subject("Subject");
+$message->set_content("Yo!");
+
+print "Sending to: $address\n";
+
+$messenger->put($message);
+$messenger->send;
+
+if($reply_to =~ /^~\//) {
+    print "Waiting on returned message.\n";
+    $messenger->receive(1);
+
+    $messenger->get($message);
+    print $message->get_address . " " . $message->get_subject . "\n";
+}
+
+$messenger->stop;
+
+__END__
+
+=head1 NAME
+
+client - Proton example application for Perl.
+
+=head1 SYNOPSIS
+
+client.pl [OPTIONS] <address> <subject>
+
+ Options:
+   --reply_to - The reply to address to be used. (default: ~/replies)
+   --help     - This help message.
+   --man      - Show the full docementation.
+
+=over 8
+
+=item B<--reply_to>
+
+Specifies the reply address to be used for responses from the server.
+
+=item B<--help>
+
+Prints a brief help message and exits.
+
+=item B<--man>
+
+Prints the man page and exits.
+
+=back
+
+=head2 ADDRESS
+
+The form an address takes is:
+
+[amqp://]<domain>[/name]
+
+=cut

http://git-wip-us.apache.org/repos/asf/qpid-site/blob/de3c3488/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl.html b/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl.html
new file mode 100644
index 0000000..ee9d39c
--- /dev/null
+++ b/content/releases/qpid-proton-0.15.0/messenger/perl/examples/client.pl.html
@@ -0,0 +1,234 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+    <title>client.pl - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git https://git-wip-us.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/java-broker/index.html">Broker for Java</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search" method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-proton-0.15.0/index.html">Qpid Proton 0.15.0</a></li><li><a href="/releases/qpid-proton-0.15.0/messenger/perl/examples/index.html">Perl AMQP Messenger Examples</a></li><li>client.pl</li></ul>
+
+        <div id="-middle-content">
+          
+<h1>client.pl</h1>
+<div class="highlight"><pre><span class="k">use</span> <span class="n">strict</span><span class="p">;</span>
+<span class="k">use</span> <span class="n">warnings</span><span class="p">;</span>
+<span class="k">use</span> <span class="nn">Getopt::</span><span class="n">Long</span><span class="p">;</span>
+<span class="k">use</span> <span class="nn">Pod::</span><span class="n">Usage</span><span class="p">;</span>
+
+<span class="k">use</span> <span class="n">qpid_proton</span><span class="p">;</span>
+
+<span class="k">my</span> <span class="nv">$reply_to</span> <span class="o">=</span> <span class="s">&quot;~/replies&quot;</span><span class="p">;</span>
+<span class="k">my</span> <span class="nv">$help</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="k">my</span> <span class="nv">$man</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+
+<span class="n">GetOptions</span><span class="p">(</span>
+    <span class="s">&quot;reply_to=s&quot;</span><span class="p">,</span> <span class="o">\</span><span class="nv">$reply_to</span><span class="p">,</span>
+    <span class="n">man</span> <span class="o">=&gt;</span> <span class="o">\</span><span class="nv">$man</span><span class="p">,</span>
+    <span class="s">&quot;help|?&quot;</span> <span class="o">=&gt;</span> <span class="o">\</span><span class="nv">$help</span>
+    <span class="p">)</span> <span class="ow">or</span> <span class="n">pod2usage</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
+<span class="n">pod2usage</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">if</span> <span class="nv">$help</span><span class="p">;</span>
+<span class="n">pod2usage</span><span class="p">(</span><span class="o">-</span><span class="n">exitval</span> <span class="o">=&gt;</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="n">verbose</span> <span class="o">=&gt;</span> <span class="mi">2</span><span class="p">)</span> <span class="k">if</span> <span class="nv">$man</span><span class="p">;</span>
+
+<span class="c1"># get the address to use and show help if it&#39;s missing</span>
+<span class="k">my</span> <span class="nv">$address</span> <span class="o">=</span> <span class="nv">$ARGV</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
+<span class="n">pod2usage</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">if</span> <span class="o">!</span><span class="nv">$address</span><span class="p">;</span>
+
+<span class="k">my</span> <span class="nv">$messenger</span> <span class="o">=</span> <span class="k">new</span> <span class="nn">qpid::proton::</span><span class="n">Messenger</span><span class="p">();</span>
+<span class="nv">$messenger</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">;</span>
+
+<span class="k">my</span> <span class="nv">$message</span> <span class="o">=</span> <span class="k">new</span> <span class="nn">qpid::proton::</span><span class="n">Message</span><span class="p">();</span>
+<span class="nv">$message</span><span class="o">-&gt;</span><span class="n">set_address</span><span class="p">(</span><span class="nv">$address</span><span class="p">);</span>
+<span class="nv">$message</span><span class="o">-&gt;</span><span class="n">set_reply_to</span><span class="p">(</span><span class="nv">$reply_to</span><span class="p">);</span>
+<span class="nv">$message</span><span class="o">-&gt;</span><span class="n">set_subject</span><span class="p">(</span><span class="s">&quot;Subject&quot;</span><span class="p">);</span>
+<span class="nv">$message</span><span class="o">-&gt;</span><span class="n">set_content</span><span class="p">(</span><span class="s">&quot;Yo!&quot;</span><span class="p">);</span>
+
+<span class="k">print</span> <span class="s">&quot;Sending to: $address\n&quot;</span><span class="p">;</span>
+
+<span class="nv">$messenger</span><span class="o">-&gt;</span><span class="n">put</span><span class="p">(</span><span class="nv">$message</span><span class="p">);</span>
+<span class="nv">$messenger</span><span class="o">-&gt;</span><span class="nb">send</span><span class="p">;</span>
+
+<span class="k">if</span><span class="p">(</span><span class="nv">$reply_to</span> <span class="o">=~</span><span class="sr"> /^~\//</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">print</span> <span class="s">&quot;Waiting on returned message.\n&quot;</span><span class="p">;</span>
+    <span class="nv">$messenger</span><span class="o">-&gt;</span><span class="n">receive</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+
+    <span class="nv">$messenger</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span><span class="nv">$message</span><span class="p">);</span>
+    <span class="k">print</span> <span class="nv">$message</span><span class="o">-&gt;</span><span class="n">get_address</span> <span class="o">.</span> <span class="s">&quot; &quot;</span> <span class="o">.</span> <span class="nv">$message</span><span class="o">-&gt;</span><span class="n">get_subject</span> <span class="o">.</span> <span class="s">&quot;\n&quot;</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="nv">$messenger</span><span class="o">-&gt;</span><span class="n">stop</span><span class="p">;</span>
+
+<span class="cp">__END__</span>
+
+<span class="cp">=head1 NAME</span>
+
+<span class="cp">client - Proton example application for Perl.</span>
+
+<span class="cp">=head1 SYNOPSIS</span>
+
+<span class="cp">client.pl [OPTIONS] &lt;address&gt; &lt;subject&gt;</span>
+
+<span class="cp"> Options:</span>
+<span class="cp">   --reply_to - The reply to address to be used. (default: ~/replies)</span>
+<span class="cp">   --help     - This help message.</span>
+<span class="cp">   --man      - Show the full docementation.</span>
+
+<span class="cp">=over 8</span>
+
+<span class="cp">=item B&lt;--reply_to&gt;</span>
+
+<span class="cp">Specifies the reply address to be used for responses from the server.</span>
+
+<span class="cp">=item B&lt;--help&gt;</span>
+
+<span class="cp">Prints a brief help message and exits.</span>
+
+<span class="cp">=item B&lt;--man&gt;</span>
+
+<span class="cp">Prints the man page and exits.</span>
+
+<span class="cp">=back</span>
+
+<span class="cp">=head2 ADDRESS</span>
+
+<span class="cp">The form an address takes is:</span>
+
+<span class="cp">[amqp://]&lt;domain&gt;[/name]</span>
+
+<span class="cp">=cut</span>
+</pre></div>
+
+<p><a href="client.pl">Download this file</a></p>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/">Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/">License</a></li>
+            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org