http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/dashboard.html ---------------------------------------------------------------------- diff --git a/content/dashboard.html b/content/dashboard.html index 7117a35..98e76a9 100644 --- a/content/dashboard.html +++ b/content/dashboard.html @@ -172,16 +172,22 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/> <tr> <td><a href="/components/jms/index.html">JMS</a></td> <td><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20QPIDJMS%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20priority%20DESC">Open issues</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12314524&issuetype=1&summary=[Enter%20a%20brief%20description]&priority=3">New bug</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12314524&issuetype=4&summary=[Enter%20a%20brief%20description]&priority=3">New improvement</a></td> - <td><a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-JMS-Test-JDK7/">Java 7</a>, <a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-JMS-Test-JDK8/">Java 8</a></td> + <td><a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-JMS-Test-JDK8/">Java 8</a></td> <td><a href="https://git-wip-us.apache.org/repos/asf/qpid-jms.git">Git</a>, <a href="https://github.com/apache/qpid-jms">GitHub mirror</a></td> </tr> <tr> <td><a href="/proton/index.html">Proton</a></td> <td><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20PROTON%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20priority%20DESC">Open issues</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12313720&issuetype=1&summary=[Enter%20a%20brief%20description]&priority=3">New bug</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12313720&issuetype=4&summary=[Enter%20a%20brief%20description]&priority=3">New improvement</a></td> - <td><a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-c/">C</a>, <a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-j/">Java</a></td> + <td><a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-c/">Linux</a></td> <td><a href="https://git-wip-us.apache.org/repos/asf/qpid-proton.git">Git</a>, <a href="https://github.com/apache/qpid-proton">GitHub mirror</a></td> </tr> <tr> + <td><a href="/proton/index.html">Proton-J</a></td> + <td><a href="https://issues.apache.org/jira/browse/?jql=project%20%3D%20PROTON%20AND%20resolution%20%3D%20Unresolved%20AND%20component%20%3D%20proton-j%20ORDER%20BY%20priority%20DESC">Open issues</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12313720&issuetype=1&summary=[Enter%20a%20brief%20description]&priority=3">New bug</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12313720&issuetype=4&summary=[Enter%20a%20brief%20description]&priority=3">New improvement</a></td> + <td><a href="https://builds.apache.org/view/M-R/view/Qpid/job/Qpid-proton-j/">Java 7</a></td> + <td><a href="https://git-wip-us.apache.org/repos/asf/qpid-proton-j.git">Git</a>, <a href="https://github.com/apache/qpid-proton-j">GitHub mirror</a></td> +</tr> +<tr> <td><a href="https://git-wip-us.apache.org/repos/asf?p=qpid-site.git;a=blob_plain;f=README.md;hb=HEAD">Website</a></td> <td><a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20QPID%20AND%20resolution%20%3D%20Unresolved%20AND%20component%20%3D%20Website%20ORDER%20BY%20priority%20DESC">Open issues</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12310520&issuetype=1&components=12312307&summary=[Enter%20a%20brief%20description]&priority=3">New bug</a> — <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12310520&issuetype=4&components=12312307&summary=[Enter%20a%20brief%20description]&priority=3">New improvement</a></td> <td>-</td>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/documentation.html ---------------------------------------------------------------------- diff --git a/content/documentation.html b/content/documentation.html index 3c3e1b4..2d277ef 100644 --- a/content/documentation.html +++ b/content/documentation.html @@ -133,10 +133,10 @@ You can find older versions with our <ul> <li><a href="/proton/index.html">Overview</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/c/api/files.html">C API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/cpp/api/annotated.html">C++ API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/java/api/index.html">Java API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/python/api/index.html">Python API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/c/api/files.html">C API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/cpp/api/annotated.html">C++ API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/python/api/index.html">Python API reference</a></li> +<li><a href="/releases/qpid-proton-j-0.17.0/api/index.html">Java API reference</a></li> </ul> </section> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/download.html ---------------------------------------------------------------------- diff --git a/content/download.html b/content/download.html index a952bd8..997afd3 100644 --- a/content/download.html +++ b/content/download.html @@ -138,8 +138,13 @@ process. The downloads on this page are from our <tbody> <tr> <td><a href="/proton/index.html">Qpid Proton</a></td> - <td><a href="http://www.apache.org/dyn/closer.lua/qpid/proton/0.16.0/qpid-proton-0.16.0.tar.gz">qpid-proton-0.16.0.tar.gz</a></td> - <td><a href="http://www.apache.org/dist/qpid/proton/0.16.0/qpid-proton-0.16.0.tar.gz.asc">ASC</a>, <a href="http://www.apache.org/dist/qpid/proton/0.16.0/qpid-proton-0.16.0.tar.gz.md5">MD5</a>, <a href="http://www.apache.org/dist/qpid/proton/0.16.0/qpid-proton-0.16.0.tar.gz.sha1">SHA1</a></td> + <td><a href="http://www.apache.org/dyn/closer.lua/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz">qpid-proton-0.17.0.tar.gz</a></td> + <td><a href="http://www.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz.asc">ASC</a>, <a href="http://www.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz.md5">MD5</a>, <a href="http://www.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz.sha1">SHA1</a></td> +</tr> +<tr> + <td><a href="/proton/index.html">Qpid Proton-J</a></td> + <td><a href="http://www.apache.org/dyn/closer.lua/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-bin.tar.gz">apache-qpid-proton-j-0.17.0-bin.tar.gz</a>*</td> + <td><a href="http://www.apache.org/dist/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-bin.tar.gz.asc">ASC</a>, <a href="http://www.apache.org/dist/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-bin.tar.gz.md5">MD5</a>, <a href="http://www.apache.org/dist/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-bin.tar.gz.sha1">SHA1</a></td> </tr> <tr> <td><a href="/components/jms/index.html">Qpid JMS</a> (AMQP 1.0)</td> @@ -193,8 +198,13 @@ process. The downloads on this page are from our </tbody> </table> -<p>*These Java artefacts are released as compiled bytecode. We also +<p>*These Java artefacts are presented as compiled bytecode. We also offer the source as part of our +<a href="http://www.apache.org/dyn/closer.lua/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-src.tar.gz">Qpid Proton-J source release</a> +[<a href="http://www.apache.org/dist/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-src.tar.gz.asc">ASC</a>, +<a href="http://www.apache.org/dist/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-src.tar.gz.md5">MD5</a>, +<a href="http://www.apache.org/dist/qpid/proton-j/0.17.0/apache-qpid-proton-j-0.17.0-src.tar.gz.sha1">SHA1</a>] +and <a href="http://www.apache.org/dyn/closer.lua/qpid/jms/0.20.0/apache-qpid-jms-0.20.0-src.tar.gz">Qpid JMS source release</a> [<a href="http://www.apache.org/dist/qpid/jms/0.20.0/apache-qpid-jms-0.20.0-src.tar.gz.asc">ASC</a>, <a href="http://www.apache.org/dist/qpid/jms/0.20.0/apache-qpid-jms-0.20.0-src.tar.gz.md5">MD5</a>, http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/maven.html ---------------------------------------------------------------------- diff --git a/content/maven.html b/content/maven.html index 6e60375..6cce2a5 100644 --- a/content/maven.html +++ b/content/maven.html @@ -149,7 +149,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/> <span class="nt"><dependency></span> <span class="nt"><groupId></span>org.apache.qpid<span class="nt"></groupId></span> <span class="nt"><artifactId></span>proton-j<span class="nt"></artifactId></span> - <span class="nt"><version></span>0.16.0<span class="nt"></version></span> + <span class="nt"><version></span>0.17.0<span class="nt"></version></span> <span class="nt"></dependency></span> </pre></div> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/proton/contributing.html ---------------------------------------------------------------------- diff --git a/content/proton/contributing.html b/content/proton/contributing.html index f063ea3..14cd8ca 100644 --- a/content/proton/contributing.html +++ b/content/proton/contributing.html @@ -118,7 +118,6 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/> <ul> <li><a href="submitting-patches.html">Submitting Patches</a></li> -<li><a href="proton-j-proton-c.html">Proton-J/Proton-C</a></li> </ul> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/proton/index.html ---------------------------------------------------------------------- diff --git a/content/proton/index.html b/content/proton/index.html index f692392..98110dc 100644 --- a/content/proton/index.html +++ b/content/proton/index.html @@ -147,17 +147,17 @@ platform, environment, or language. More about <div class="two-column"> <ul> -<li><a href="/releases/qpid-proton-0.16.0/proton/c/api/files.html">C API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/cpp/api/index.html">C++ introduction</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/cpp/api/tutorial.html">C++ tutorial</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/cpp/examples/index.html">C++ examples</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/cpp/api/annotated.html">C++ API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/java/api/index.html">Java API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/python/book/overview.html">Python overview</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/python/book/tutorial.html">Python tutorial</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/python/examples/index.html">Python examples</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/python/api/index.html">Python API reference</a></li> -<li><a href="https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob_plain;f=INSTALL.md;hb=0.16.0">Installing Qpid Proton</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/c/api/files.html">C API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/cpp/api/index.html">C++ introduction</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/cpp/api/tutorial.html">C++ tutorial</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/cpp/examples/index.html">C++ examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/cpp/api/annotated.html">C++ API reference</a></li> +<li><a href="/releases/qpid-proton-j-0.17.0/api/index.html">Java API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/python/book/overview.html">Python overview</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/python/book/tutorial.html">Python tutorial</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/python/examples/index.html">Python examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/python/api/index.html">Python API reference</a></li> +<li><a href="https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob_plain;f=INSTALL.md;hb=0.17.0">Installing Qpid Proton</a></li> </ul> </div> @@ -169,7 +169,8 @@ platform, environment, or language. More about <h2 id="releases">Releases</h2> <ul> -<li><a href="/releases/qpid-proton-0.16.0">Qpid Proton 0.16.0</a></li> +<li><a href="/releases/qpid-proton-0.17.0">Qpid Proton 0.17.0</a></li> +<li><a href="/releases/qpid-proton-j-0.17.0">Qpid Proton-J 0.17.0</a></li> <li><a href="/releases/index.html#past-releases">Past releases</a></li> <li><a href="/releases/qpid-proton-master/index.html">Work in progress</a> </li> </ul> @@ -186,14 +187,22 @@ platform, environment, or language. More about <h2 id="source-code">Source code</h2> <ul> +<li>Proton +<ul> <li><a href="https://github.com/apache/qpid-proton">Browse via GitHub</a></li> <li><a href="https://git-wip-us.apache.org/repos/asf/qpid-proton.git">Git clone URL</a></li> +</ul></li> +<li>Proton-J +<ul> +<li><a href="https://github.com/apache/qpid-proton-j">Browse via GitHub</a></li> +<li><a href="https://git-wip-us.apache.org/repos/asf/qpid-proton-j.git">Git clone URL</a></li> +</ul></li> </ul> <h2 id="resources">Resources</h2> <ul> -<li><a href="contributing.html">Contributing to Proton</a></li> +<li><a href="submitting-patches.html">Contributing to Proton</a></li> <li><a href="messenger.html">Proton Messenger</a></li> <li><a href="https://cwiki.apache.org/confluence/display/qpid/proton">Proton wiki pages</a></li> </ul> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/proton/messenger.html ---------------------------------------------------------------------- diff --git a/content/proton/messenger.html b/content/proton/messenger.html index 9a2dda1..c34c3be 100644 --- a/content/proton/messenger.html +++ b/content/proton/messenger.html @@ -129,14 +129,13 @@ find previous versions with our <div class="two-column"> <ul> -<li><a href="/releases/qpid-proton-0.16.0/proton/c/api/messenger_8h.html">C API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/messenger/c/examples/index.html">C examples</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/java/api/org/apache/qpid/proton/messenger/Messenger.html">Java API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/messenger/perl/examples/index.html">Perl examples</a></li> -<li><a href="/releases/qpid-proton-0.16.0/messenger/php/examples/index.html">PHP examples</a></li> -<li><a href="/releases/qpid-proton-0.16.0/proton/python/api/proton.Messenger-class.html">Python API reference</a></li> -<li><a href="/releases/qpid-proton-0.16.0/messenger/python/examples/index.html">Python examples</a></li> -<li><a href="/releases/qpid-proton-0.16.0/messenger/ruby/examples/index.html">Ruby examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/c/api/messenger_8h.html">C API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/messenger/c/examples/index.html">C examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/messenger/perl/examples/index.html">Perl examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/messenger/php/examples/index.html">PHP examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/proton/python/api/proton.Messenger-class.html">Python API reference</a></li> +<li><a href="/releases/qpid-proton-0.17.0/messenger/python/examples/index.html">Python examples</a></li> +<li><a href="/releases/qpid-proton-0.17.0/messenger/ruby/examples/index.html">Ruby examples</a></li> </ul> </div> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/index.html ---------------------------------------------------------------------- diff --git a/content/releases/index.html b/content/releases/index.html index 4315492..e103bdd 100644 --- a/content/releases/index.html +++ b/content/releases/index.html @@ -124,10 +124,11 @@ the <h2 id="current-releases">Current releases</h2> <ul> +<li><a href="qpid-proton-0.17.0/index.html">Qpid Proton 0.17.0</a>, January 2017</li> +<li><a href="qpid-proton-j-0.17.0/index.html">Qpid Proton-J 0.17.0</a>, January 2017</li> <li><a href="qpid-jms-0.20.0/index.html">Qpid JMS 0.20.0</a>, January 2017</li> <li><a href="qpid-java-6.1.1/index.html">Qpid for Java 6.1.1</a>, December 2016</li> <li><a href="qpid-cpp-1.36.0/index.html">Qpid C++ 1.36.0</a>, December 2016</li> -<li><a href="qpid-proton-0.16.0/index.html">Qpid Proton 0.16.0</a>, December 2016</li> <li><a href="qpid-dispatch-0.7.0/index.html">Qpid Dispatch 0.7.0</a>, November 2016</li> <li><a href="qpid-python-1.35.0/index.html">Qpid Python 1.35.0</a>, August 2016</li> </ul> @@ -137,6 +138,7 @@ the <div class="two-column"> <ul> +<li><a href="qpid-proton-0.16.0/index.html">Qpid Proton 0.16.0</a>, December 2016</li> <li><a href="qpid-java-6.0.6/index.html">Qpid for Java 6.0.6</a>, December 2016</li> <li><a href="qpid-java-6.1.0/index.html">Qpid for Java 6.1.0</a>, November 2016</li> <li><a href="qpid-java-6.0.5/index.html">Qpid for Java 6.0.5</a>, November 2016</li> http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.10/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.10/index.html b/content/releases/qpid-proton-0.10/index.html index a83d5f1..5b8405b 100644 --- a/content/releases/qpid-proton-0.10/index.html +++ b/content/releases/qpid-proton-0.10/index.html @@ -116,7 +116,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/> <div id="-middle-content"> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.10" === "0.16.0") { + if ("0.10" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.11.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.11.0/index.html b/content/releases/qpid-proton-0.11.0/index.html index b49c2ef..582614c 100644 --- a/content/releases/qpid-proton-0.11.0/index.html +++ b/content/releases/qpid-proton-0.11.0/index.html @@ -172,7 +172,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.11.0" === "0.16.0") { + if ("0.11.0" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.11.1/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.11.1/index.html b/content/releases/qpid-proton-0.11.1/index.html index f50950a..d7f7c4e 100644 --- a/content/releases/qpid-proton-0.11.1/index.html +++ b/content/releases/qpid-proton-0.11.1/index.html @@ -172,7 +172,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.11.1" === "0.16.0") { + if ("0.11.1" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.12.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.12.0/index.html b/content/releases/qpid-proton-0.12.0/index.html index 5644158..8c92aea 100644 --- a/content/releases/qpid-proton-0.12.0/index.html +++ b/content/releases/qpid-proton-0.12.0/index.html @@ -175,7 +175,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.12.0" === "0.16.0") { + if ("0.12.0" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.12.1/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.12.1/index.html b/content/releases/qpid-proton-0.12.1/index.html index 2cdbd74..47c32ff 100644 --- a/content/releases/qpid-proton-0.12.1/index.html +++ b/content/releases/qpid-proton-0.12.1/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.12.1" === "0.16.0") { + if ("0.12.1" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.12.2/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.12.2/index.html b/content/releases/qpid-proton-0.12.2/index.html index 2b8b6e5..5204300 100644 --- a/content/releases/qpid-proton-0.12.2/index.html +++ b/content/releases/qpid-proton-0.12.2/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.12.2" === "0.16.0") { + if ("0.12.2" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.13.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.13.0/index.html b/content/releases/qpid-proton-0.13.0/index.html index 56af669..4665b71 100644 --- a/content/releases/qpid-proton-0.13.0/index.html +++ b/content/releases/qpid-proton-0.13.0/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.13.0" === "0.16.0") { + if ("0.13.0" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.13.1/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.13.1/index.html b/content/releases/qpid-proton-0.13.1/index.html index 6e6ece6..9340418 100644 --- a/content/releases/qpid-proton-0.13.1/index.html +++ b/content/releases/qpid-proton-0.13.1/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.13.1" === "0.16.0") { + if ("0.13.1" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.14.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.14.0/index.html b/content/releases/qpid-proton-0.14.0/index.html index 4940e1f..b8e5279 100644 --- a/content/releases/qpid-proton-0.14.0/index.html +++ b/content/releases/qpid-proton-0.14.0/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.14.0" === "0.16.0") { + if ("0.14.0" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.15.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.15.0/index.html b/content/releases/qpid-proton-0.15.0/index.html index 132d635..1af07b6 100644 --- a/content/releases/qpid-proton-0.15.0/index.html +++ b/content/releases/qpid-proton-0.15.0/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.15.0" === "0.16.0") { + if ("0.15.0" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.16.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.16.0/index.html b/content/releases/qpid-proton-0.16.0/index.html index 8638804..4938797 100644 --- a/content/releases/qpid-proton-0.16.0/index.html +++ b/content/releases/qpid-proton-0.16.0/index.html @@ -176,7 +176,7 @@ the files you download.</p> <script type="text/javascript"> _deferredFunctions.push(function() { - if ("0.16.0" === "0.16.0") { + if ("0.16.0" === "0.17.0") { _modifyCurrentReleaseLinks(); } }); http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.17.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.17.0/index.html b/content/releases/qpid-proton-0.17.0/index.html new file mode 100644 index 0000000..934024d --- /dev/null +++ b/content/releases/qpid-proton-0.17.0/index.html @@ -0,0 +1,209 @@ +<!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>Qpid Proton 0.17.0 - Apache Qpid™</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>™</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>Qpid Proton 0.17.0</li></ul> + + <div id="-middle-content"> + <h1 id="qpid-proton-0170">Qpid Proton 0.17.0</h1> + +<p>Qpid Proton is a high-performance, lightweight messaging library. More +about <a href="/proton/index.html">Qpid Proton</a>.</p> + +<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release +notes</a>.</p> + +<h2 id="download">Download</h2> + +<p>It's important to <a href="/download.html#verify-what-you-download">verify the +integrity</a> of +the files you download.</p> + +<table> +<thead> +<tr> + <th>Content</th> + <th>Download</th> + <th>Verify</th> +</tr> +</thead> +<tbody> +<tr> + <td>Qpid Proton</td> + <td><a href="http://archive.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz">qpid-proton-0.17.0.tar.gz</a></td> + <td><a href="http://archive.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz.asc">ASC</a>, <a href="http://archive.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz.md5">MD5</a>, <a href="http://archive.apache.org/dist/qpid/proton/0.17.0/qpid-proton-0.17.0.tar.gz.sha1">SHA1</a></td> +</tr> +</tbody> +</table> + +<h2 id="documentation">Documentation</h2> + +<div class="two-column"> + +<ul> +<li><a href="proton/c/api/files.html">C API reference</a></li> +<li><a href="proton/cpp/api/index.html">C++ introduction</a></li> +<li><a href="proton/cpp/api/tutorial.html">C++ tutorial</a></li> +<li><a href="proton/cpp/examples/index.html">C++ examples</a></li> +<li><a href="proton/cpp/api/annotated.html">C++ API reference</a></li> +<li><a href="proton/python/book/overview.html">Python overview</a></li> +<li><a href="proton/python/book/tutorial.html">Python tutorial</a></li> +<li><a href="proton/python/examples/index.html">Python examples</a></li> +<li><a href="proton/python/api/index.html">Python API reference</a></li> +<li><a href="https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob;f=INSTALL.md;hb=0.17.0">Installing Qpid Proton</a></li> +</ul> + +</div> + +<h2 id="more-information">More information</h2> + +<ul> +<li><a href="http://archive.apache.org/dist/qpid/proton/0.17.0">All release artefacts</a></li> +<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+PROTON+AND+fixVersion+%3D+%270.17.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li> +<li><a href="https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=tag;h=0.17.0">Source repository tag</a></li> +</ul> + +<script type="text/javascript"> + _deferredFunctions.push(function() { + if ("0.17.0" === "0.17.0") { + _modifyCurrentReleaseLinks(); + } + }); +</script> + + + <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 © 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/f180d00b/content/releases/qpid-proton-0.17.0/messenger/c/examples/index.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.17.0/messenger/c/examples/index.html b/content/releases/qpid-proton-0.17.0/messenger/c/examples/index.html new file mode 100644 index 0000000..1dd0897 --- /dev/null +++ b/content/releases/qpid-proton-0.17.0/messenger/c/examples/index.html @@ -0,0 +1,160 @@ +<!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>C AMQP Messenger Examples - Apache Qpid™</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>™</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.17.0/index.html">Qpid Proton 0.17.0</a></li><li>C AMQP Messenger Examples</li></ul> + + <div id="-middle-content"> + <h1 id="c-amqp-messenger-examples">C AMQP Messenger Examples</h1> + +<h2 id="example-files">Example files</h2> + +<ul> +<li><a href="recv-async.c.html">recv-async.c</a></li> +<li><a href="recv.c.html">recv.c</a></li> +<li><a href="send-async.c.html">send-async.c</a></li> +<li><a href="send.c.html">send.c</a></li> +</ul> + +<h2 id="more-information">More information</h2> + +<ul> +<li><a href="https://github.com/apache/qpid-proton/tree/0.17.0/examples/c/messenger">Source location</a></li> +</ul> + + + <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 © 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/f180d00b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c new file mode 100755 index 0000000..1f49166 --- /dev/null +++ b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c @@ -0,0 +1,193 @@ +/* + * 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 recv.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 <ctype.h> + +#if EMSCRIPTEN +#include <emscripten.h> +#endif + +pn_message_t * message; +pn_messenger_t * messenger; + +#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: recv [options] <addr>\n"); + printf("-c \tPath to the certificate file.\n"); + printf("-k \tPath to the private key file.\n"); + printf("-p \tPassword for the private key.\n"); + printf("<addr>\tAn address.\n"); + exit(0); +} + +void process(void) { + while(pn_messenger_incoming(messenger)) + { + pn_messenger_get(messenger, message); + check(messenger); + + { + pn_tracker_t tracker = pn_messenger_incoming_tracker(messenger); + char buffer[1024]; + size_t buffsize = sizeof(buffer); + const char* subject = pn_message_get_subject(message); + pn_data_t* body = pn_message_body(message); + pn_data_format(body, buffer, &buffsize); + + printf("Address: %s\n", pn_message_get_address(message)); + printf("Subject: %s\n", subject ? subject : "(no subject)"); + printf("Content: %s\n", buffer); + + pn_messenger_accept(messenger, tracker, 0); + } + } +} + +#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) +{ + char* certificate = NULL; + char* privatekey = NULL; + char* password = NULL; + char* address = (char *) "amqp://~0.0.0.0"; + int c; + + message = pn_message(); + messenger = pn_messenger(NULL); + pn_messenger_set_blocking(messenger, false); // Needs to be set non-blocking to behave asynchronously. + + opterr = 0; + + while((c = getopt(argc, argv, "hc:k:p:")) != -1) + { + switch(c) + { + case 'h': + usage(); + break; + + case 'c': certificate = optarg; break; + case 'k': privatekey = optarg; break; + case 'p': password = optarg; break; + + case '?': + if (optopt == 'c' || + optopt == 'k' || + optopt == 'p') + { + 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) + { + address = argv[optind]; + } + + /* load the various command line options if they're set */ + if(certificate) + { + pn_messenger_set_certificate(messenger, certificate); + } + + if(privatekey) + { + pn_messenger_set_private_key(messenger, privatekey); + } + + if(password) + { + pn_messenger_set_password(messenger, password); + } + + pn_messenger_start(messenger); + check(messenger); + + pn_messenger_subscribe(messenger, address); + check(messenger); + + pn_messenger_recv(messenger, -1); // Set to receive as many messages as messenger can buffer. + +#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 (1) { + pn_messenger_work(messenger, -1); // Block indefinitely until there has been socket activity. + process(); + } +#endif + + return 0; +} + http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f180d00b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c.html ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c.html b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c.html new file mode 100644 index 0000000..8c255d4 --- /dev/null +++ b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv-async.c.html @@ -0,0 +1,321 @@ +<!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-async.c - Apache Qpid™</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>™</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.17.0/index.html">Qpid Proton 0.17.0</a></li><li><a href="/releases/qpid-proton-0.17.0/messenger/c/examples/index.html">C AMQP Messenger Examples</a></li><li>recv-async.c</li></ul> + + <div id="-middle-content"> + +<h1>recv-async.c</h1> +<div class="highlight"><pre><span class="c1">// This is a re-implementation of recv.c using non-blocking/asynchronous calls.</span> + +<span class="cp">#include "proton/message.h"</span> +<span class="cp">#include "proton/messenger.h"</span> + +<span class="cp">#include "pncompat/misc_funcs.inc"</span> +<span class="cp">#include <stdio.h></span> +<span class="cp">#include <stdlib.h></span> +<span class="cp">#include <ctype.h></span> + +<span class="cp">#if EMSCRIPTEN</span> +<span class="cp">#include <emscripten.h></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="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">"%s:%i: %s</span><span class="se">\n</span><span class="s">"</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">"Usage: recv [options] <addr></span><span class="se">\n</span><span class="s">"</span><span class="p">);</span> + <span class="n">printf</span><span class="p">(</span><span class="s">"-c </span><span class="se">\t</span><span class="s">Path to the certificate file.</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span> + <span class="n">printf</span><span class="p">(</span><span class="s">"-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">"</span><span class="p">);</span> + <span class="n">printf</span><span class="p">(</span><span class="s">"-p </span><span class="se">\t</span><span class="s">Password for the private key.</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span> + <span class="n">printf</span><span class="p">(</span><span class="s">"<addr></span><span class="se">\t</span><span class="s">An address.</span><span class="se">\n</span><span class="s">"</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="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">pn_tracker_t</span> <span class="n">tracker</span> <span class="o">=</span> <span class="n">pn_messenger_incoming_tracker</span><span class="p">(</span><span class="n">messenger</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">&</span><span class="n">buffsize</span><span class="p">);</span> + + <span class="n">printf</span><span class="p">(</span><span class="s">"Address: %s</span><span class="se">\n</span><span class="s">"</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">"Subject: %s</span><span class="se">\n</span><span class="s">"</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">"(no subject)"</span><span class="p">);</span> + <span class="n">printf</span><span class="p">(</span><span class="s">"Content: %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">buffer</span><span class="p">);</span> + + <span class="n">pn_messenger_accept</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="mi">0</span><span class="p">);</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">>=</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">"error callback fd = %d, errno = %d, msg = %s</span><span class="se">\n</span><span class="s">"</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">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">"amqp://~0.0.0.0"</span><span class="p">;</span> + <span class="kt">int</span> <span class="n">c</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">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">"hc:k:p:"</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">'h'</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">'c'</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">'k'</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">'p'</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">'?'</span>: + <span class="k">if</span> <span class="p">(</span><span class="n">optopt</span> <span class="o">==</span> <span class="sc">'c'</span> <span class="o">||</span> + <span class="n">optopt</span> <span class="o">==</span> <span class="sc">'k'</span> <span class="o">||</span> + <span class="n">optopt</span> <span class="o">==</span> <span class="sc">'p'</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">"Option -%c requires an argument.</span><span class="se">\n</span><span class="s">"</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">"Unknown option `-%c'.</span><span class="se">\n</span><span class="s">"</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">"Unknown option character `</span><span class="se">\\</span><span class="s">x%x'.</span><span class="se">\n</span><span class="s">"</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"><</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="n">pn_messenger_recv</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">// Set to receive as many messages as messenger can buffer.</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="mi">1</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="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="recv-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 © 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/f180d00b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv.c ---------------------------------------------------------------------- diff --git a/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv.c b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv.c new file mode 100755 index 0000000..16e8321 --- /dev/null +++ b/content/releases/qpid-proton-0.17.0/messenger/c/examples/recv.c @@ -0,0 +1,154 @@ +/* + * 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 <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: recv [options] <addr>\n"); + printf("-c \tPath to the certificate file.\n"); + printf("-k \tPath to the private key file.\n"); + printf("-p \tPassword for the private key.\n"); + printf("<addr>\tAn address.\n"); + exit(0); +} + +int main(int argc, char** argv) +{ + char* certificate = NULL; + char* privatekey = NULL; + char* password = NULL; + char* address = (char *) "amqp://~0.0.0.0"; + int c; + + pn_message_t * message; + pn_messenger_t * messenger; + + message = pn_message(); + messenger = pn_messenger(NULL); + + opterr = 0; + + while((c = getopt(argc, argv, "hc:k:p:")) != -1) + { + switch(c) + { + case 'h': + usage(); + break; + + case 'c': certificate = optarg; break; + case 'k': privatekey = optarg; break; + case 'p': password = optarg; break; + + case '?': + if(optopt == 'c' || + optopt == 'k' || + optopt == 'p') + { + 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) + { + address = argv[optind]; + } + + /* load the various command line options if they're set */ + if(certificate) + { + pn_messenger_set_certificate(messenger, certificate); + } + + if(privatekey) + { + pn_messenger_set_private_key(messenger, privatekey); + } + + if(password) + { + pn_messenger_set_password(messenger, password); + } + + pn_messenger_start(messenger); + check(messenger); + + pn_messenger_subscribe(messenger, address); + check(messenger); + + for(;;) + { + pn_messenger_recv(messenger, 1024); + check(messenger); + + while(pn_messenger_incoming(messenger)) + { + pn_messenger_get(messenger, message); + check(messenger); + + { + char buffer[1024]; + size_t buffsize = sizeof(buffer); + const char* subject = pn_message_get_subject(message); + pn_data_t *body = pn_message_body(message); + pn_data_format(body, buffer, &buffsize); + + printf("Address: %s\n", pn_message_get_address(message)); + printf("Subject: %s\n", subject ? subject : "(no subject)"); + printf("Content: %s\n", buffer); + } + } + } + + return 0; +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org