You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jr...@apache.org on 2018/03/14 20:50:35 UTC

[01/14] qpid-cpp git commit: QPID-8131: Fix a legacytest build failure and make sure the right tools are on the path for its tests

Repository: qpid-cpp
Updated Branches:
  refs/heads/master 2cafedd9b -> 58c0d3631


QPID-8131: Fix a legacytest build failure and make sure the right tools are on the path for its tests


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

Branch: refs/heads/master
Commit: 646c3b1b501d5ec701c72d4d34b7caea733a97fa
Parents: 1866578
Author: Justin Ross <jr...@apache.org>
Authored: Wed Mar 14 10:46:12 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/tests/legacystore/jrnl/jtt/_ut_read_arg.cpp | 4 ++--
 src/tests/legacystore/run_python_tests          | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/646c3b1b/src/tests/legacystore/jrnl/jtt/_ut_read_arg.cpp
----------------------------------------------------------------------
diff --git a/src/tests/legacystore/jrnl/jtt/_ut_read_arg.cpp b/src/tests/legacystore/jrnl/jtt/_ut_read_arg.cpp
index 0d20252..deb68a5 100644
--- a/src/tests/legacystore/jrnl/jtt/_ut_read_arg.cpp
+++ b/src/tests/legacystore/jrnl/jtt/_ut_read_arg.cpp
@@ -83,10 +83,10 @@ QPID_AUTO_TEST_CASE(parse)
     ra.parse("ALL");
     BOOST_CHECK_EQUAL(ra.val(), read_arg::ALL);
     BOOST_CHECK_EQUAL(ra.str(), "ALL");
-    BOOST_CHECK_THROW(ra.parse(""), po::invalid_option_value)
+    BOOST_CHECK_THROW(ra.parse(""), po::invalid_option_value);
     BOOST_CHECK_EQUAL(ra.val(), read_arg::ALL);
     BOOST_CHECK_EQUAL(ra.str(), "ALL");
-    BOOST_CHECK_THROW(ra.parse("abc123"), po::invalid_option_value)
+    BOOST_CHECK_THROW(ra.parse("abc123"), po::invalid_option_value);
     BOOST_CHECK_EQUAL(ra.val(), read_arg::ALL);
     BOOST_CHECK_EQUAL(ra.str(), "ALL");
     ra.parse("NONE");

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/646c3b1b/src/tests/legacystore/run_python_tests
----------------------------------------------------------------------
diff --git a/src/tests/legacystore/run_python_tests b/src/tests/legacystore/run_python_tests
index 4d8baec..bffead8 100755
--- a/src/tests/legacystore/run_python_tests
+++ b/src/tests/legacystore/run_python_tests
@@ -37,6 +37,10 @@ from common import *
 
 ENV["PYTHONPATH"] = "{0}:{1}".format(store_tests_dir, ENV["PYTHONPATH"])
 
+# Add location of qpid-store-resize to the executable path
+
+ENV["PATH"] = "{0}:{1}".format(join(SOURCE_DIR, "management", "python", "bin"), ENV["PATH"])
+
 # To debug a test, add the following options to the end of the following line:
 # -v DEBUG -c qpid.messaging.io.ops [*.testName]
 


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


[13/14] qpid-cpp git commit: QPID-7054: Fix crash when closing a sender after the connection has been closed. Thanks to Håkan Johansson for the patch.

Posted by jr...@apache.org.
QPID-7054: Fix crash when closing a sender after the connection has been closed.  Thanks to Håkan Johansson for the patch.


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

Branch: refs/heads/master
Commit: b2bfd9b2a46d4d4529d9588df762c4a524a3f6a7
Parents: 3b6f718
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 18:08:20 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/qpid/messaging/amqp/ConnectionContext.cpp | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b2bfd9b2/src/qpid/messaging/amqp/ConnectionContext.cpp
----------------------------------------------------------------------
diff --git a/src/qpid/messaging/amqp/ConnectionContext.cpp b/src/qpid/messaging/amqp/ConnectionContext.cpp
index 097e8f8..5d3a1e3 100644
--- a/src/qpid/messaging/amqp/ConnectionContext.cpp
+++ b/src/qpid/messaging/amqp/ConnectionContext.cpp
@@ -377,14 +377,20 @@ void ConnectionContext::nack(boost::shared_ptr<SessionContext> ssn, qpid::messag
 void ConnectionContext::detach(boost::shared_ptr<SessionContext> ssn, boost::shared_ptr<SenderContext> lnk)
 {
     sys::Monitor::ScopedLock l(lock);
+
     if (pn_link_state(lnk->sender) & PN_LOCAL_ACTIVE) {
         lnk->close();
     }
-    wakeupDriver();
-    while (pn_link_state(lnk->sender) & PN_REMOTE_ACTIVE) {
-        wait(ssn);
+
+    if (state == CONNECTED) {
+        wakeupDriver();
+        while (pn_link_state(lnk->sender) & PN_REMOTE_ACTIVE) {
+            wait(ssn);
+        }
     }
+
     ssn->removeSender(lnk->getName());
+    lnk->reset(0);
 }
 
 void ConnectionContext::drain_and_release_messages(boost::shared_ptr<SessionContext> ssn, boost::shared_ptr<ReceiverContext> lnk)


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


[07/14] qpid-cpp git commit: QPID-7051: Fix crash after reconnect with transactional session. This is a patch from Håkan Johansson

Posted by jr...@apache.org.
QPID-7051: Fix crash after reconnect with transactional session.  This is a patch from Håkan Johansson


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

Branch: refs/heads/master
Commit: 2fda1139ae93018d4a3c2bd5571c02512ad7ebe8
Parents: b569b4d
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 13:15:04 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/qpid/messaging/amqp/ConnectionContext.cpp | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/2fda1139/src/qpid/messaging/amqp/ConnectionContext.cpp
----------------------------------------------------------------------
diff --git a/src/qpid/messaging/amqp/ConnectionContext.cpp b/src/qpid/messaging/amqp/ConnectionContext.cpp
index 85408de..097e8f8 100644
--- a/src/qpid/messaging/amqp/ConnectionContext.cpp
+++ b/src/qpid/messaging/amqp/ConnectionContext.cpp
@@ -207,7 +207,12 @@ void ConnectionContext::close()
                 syncLH(i->second, l);
             } catch (const MessageRejected& e) {
                 QPID_LOG(error, "Could not sync session on connection close due to message rejection (use explicit sync to handle exception): " << e.what());
+            } catch (const SessionClosed& e) {
+                continue;
+            } catch (const TransactionAborted& e) {
+                continue;
             }
+
             if (!(pn_session_state(i->second->session) & PN_LOCAL_CLOSED)) {
                 pn_session_close(i->second->session);
             }


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


[11/14] qpid-cpp git commit: QPID-7499: Copy test scripts in a way that preserves dependencies

Posted by jr...@apache.org.
QPID-7499: Copy test scripts in a way that preserves dependencies


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

Branch: refs/heads/master
Commit: 8ceb65eb9c7e6e1c988d9edea5b5539a7559c3d0
Parents: b2bfd9b
Author: Justin Ross <jr...@apache.org>
Authored: Tue Mar 13 06:43:16 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/tests/CMakeLists.txt | 39 +++++++++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/8ceb65eb/src/tests/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 5d92fbc..4122d9c 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -107,14 +107,14 @@ if (BUILD_TESTING)
 
 if (CMAKE_SYSTEM_NAME STREQUAL Windows)
     # Windows
-  
+
     set(ENV{OUTDIR} ${EXECUTABLE_OUTPUT_PATH})
 
     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/env.ps1.in
                    ${CMAKE_CURRENT_BINARY_DIR}/env.ps1 @ONLY)
 else (CMAKE_SYSTEM_NAME STREQUAL Windows)
     # Posix
-  
+
     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/env.sh.in
                    ${CMAKE_CURRENT_BINARY_DIR}/env.sh @ONLY)
 endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
@@ -124,14 +124,33 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/check_dependencies.py.in
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/env.py.in
                ${CMAKE_CURRENT_BINARY_DIR}/env.py @ONLY)
 
-file(COPY .
-     DESTINATION .
-     PATTERN "*.cmake" EXCLUDE
-     PATTERN "*.in" EXCLUDE
-     PATTERN "*.c" EXCLUDE
-     PATTERN "*.h" EXCLUDE
-     PATTERN "*.cpp" EXCLUDE)
-       
+file(GLOB_RECURSE copied_files "*.ps1", "*.py" "*.sh" "*.xml" "run_*")
+
+foreach (copied_file ${copied_files})
+  file (RELATIVE_PATH file_name ${CMAKE_CURRENT_SOURCE_DIR} ${copied_file})
+  configure_file (${copied_file} ${file_name} COPYONLY)
+endforeach ()
+
+configure_file(.valgrind.supp .valgrind.supp COPYONLY)
+configure_file(dynamic_log_hires_timestamp dynamic_log_hires_timestamp COPYONLY)
+configure_file(dynamic_log_level_test dynamic_log_level_test COPYONLY)
+configure_file(failing-amqp0-10-python-tests failing-amqp0-10-python-tests COPYONLY)
+configure_file(failing-amqp1.0-python-tests failing-amqp1.0-python-tests COPYONLY)
+configure_file(federated_topic_test federated_topic_test COPYONLY)
+configure_file(perfdist perfdist COPYONLY)
+configure_file(ping_broker ping_broker COPYONLY)
+configure_file(policy.acl policy.acl COPYONLY)
+configure_file(qpid-analyze-trace qpid-analyze-trace COPYONLY)
+configure_file(qpid-cpp-benchmark qpid-cpp-benchmark COPYONLY)
+configure_file(qpid-ctrl qpid-ctrl COPYONLY)
+configure_file(qpidd-empty.conf qpidd-empty.conf COPYONLY)
+configure_file(qpidd-p0 qpidd-p0 COPYONLY)
+configure_file(ring_queue_test ring_queue_test COPYONLY)
+configure_file(sasl_fed sasl_fed COPYONLY)
+configure_file(sasl_fed_ex sasl_fed_ex COPYONLY)
+configure_file(sasl_no_dir sasl_no_dir COPYONLY)
+configure_file(topictest topictest COPYONLY)
+
 if (BUILD_TESTING_UNITTESTS)
 
 # Unit test program


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


[12/14] qpid-cpp git commit: QPID-7821: Add man pages for all executables. Adapted from a patch from Irina Boverman.

Posted by jr...@apache.org.
QPID-7821: Add man pages for all executables.  Adapted from a patch from Irina Boverman.


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

Branch: refs/heads/master
Commit: cd6cad7364afd2ed78a21c2cad42c85304d8080e
Parents: 26b6c37
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 15:37:45 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 docs/man/CMakeLists.txt        |   4 +-
 docs/man/generate-manpages.sh  |  40 +++
 docs/man/generate_manpage      |  27 --
 docs/man/groffify_options.sed  |  25 --
 docs/man/groffify_template.sed |  21 --
 docs/man/qmf-gen.1             |  51 ++++
 docs/man/qmf-gen.x             |  38 +++
 docs/man/qpid-config.1         | 204 +++++++++++++
 docs/man/qpid-config.x         |  89 ++++++
 docs/man/qpid-ha.1             |  35 +++
 docs/man/qpid-ha.x             |  38 +++
 docs/man/qpid-printevents.1    |  57 ++++
 docs/man/qpid-printevents.x    |  44 +++
 docs/man/qpid-queue-stats.1    |  41 +++
 docs/man/qpid-queue-stats.x    |  38 +++
 docs/man/qpid-receive.1        | 223 ++++++++++++++
 docs/man/qpid-receive.x        |  38 +++
 docs/man/qpid-route.1          |  99 ++++++
 docs/man/qpid-route.x          |  38 +++
 docs/man/qpid-send.1           | 255 ++++++++++++++++
 docs/man/qpid-send.x           |  38 +++
 docs/man/qpid-stat.1           |  88 ++++++
 docs/man/qpid-stat.x           |  47 +++
 docs/man/qpid-tool.1           |  37 +++
 docs/man/qpid-tool.x           |  38 +++
 docs/man/qpidd.1               | 590 ++++++++++++++++++++++--------------
 docs/man/qpidd.x               |   2 +-
 27 files changed, 1944 insertions(+), 301 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/docs/man/CMakeLists.txt b/docs/man/CMakeLists.txt
index fe94dc2..3146421 100644
--- a/docs/man/CMakeLists.txt
+++ b/docs/man/CMakeLists.txt
@@ -17,6 +17,6 @@
 # under the License.
 #
 
-INSTALL (FILES qpidd.1
+install (FILES qpidd.1 qmf-gen.1 qpid-printevents.1 qpid-receive.1 qpid-send.1 qpid-tool.1
+               qpid-config.1 qpid-ha.1 qpid-queue-stats.1 qpid-route.1 qpid-stat.1
          DESTINATION ${QPID_INSTALL_MANDIR}/man1)
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/generate-manpages.sh
----------------------------------------------------------------------
diff --git a/docs/man/generate-manpages.sh b/docs/man/generate-manpages.sh
new file mode 100755
index 0000000..3d47376
--- /dev/null
+++ b/docs/man/generate-manpages.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# 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.
+#
+#
+# Assumes all tools are installed
+#
+ver="($(qpidd --version | cut -d"(" -f2)"
+#
+help2man --no-info --include=qpidd.x --output=qpidd.1 --version-option="--version" qpidd
+#
+man_pages="qpid-tool qmf-gen qpid-config qpid-ha qpid-printevents qpid-queue-stats qpid-route qpid-stat"
+for page in ${man_pages} 
+do
+  help2man --no-info --include=${page}.x --output=${page}.1 --version-string=" $ver" $page
+done
+#
+man_pages="qpid-receive qpid-send"
+for page in ${man_pages} 
+do
+  help2man --no-info --include=${page}.x --output=${page}.1 --version-string=" $ver" --no-discard-stderr $page
+done
+
+exit
+

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/generate_manpage
----------------------------------------------------------------------
diff --git a/docs/man/generate_manpage b/docs/man/generate_manpage
deleted file mode 100755
index 2d6c146..0000000
--- a/docs/man/generate_manpage
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-#
-# 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.
-#
-
-test -n "$3" || { echo "Usage: $0 <source> <qpidd> <output>"; exit 1; }
-
-$2 --help --no-module-dir | grep -v 'Usage: ' | sed -f $(dirname $0)/groffify_options.sed > .temp.options.groff
-cat $1 | sed -f $(dirname $0)/groffify_template.sed | sed -e '/^\.PP$/ r .temp.options.groff' -e "/^.SH NAME/ i\
-.TH QPIDD \"1\" \"$(date +'%B %Y')\" \"$($2 -v)\" \"User Commands\"
-" > $3
-rm .temp.options.groff

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/groffify_options.sed
----------------------------------------------------------------------
diff --git a/docs/man/groffify_options.sed b/docs/man/groffify_options.sed
deleted file mode 100644
index c0f295e..0000000
--- a/docs/man/groffify_options.sed
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-s/^\( \{2\}\)\(.*)\)\( \{2,\}\)/.TP\n\2\n/
-s/^\( \{2\}\)\(.*\]\)\( \{2,\}\)/.TP\n\2\n/
-s/^\( \{2\}\)\(.*\b\)\( \{2,\}\)/.TP\n\2\n/
-s/^\([A-Z].*\):$/.SS \1/
-s/-/\\-/g
-s/^ \{2,\}//
-s/\('.*'\)/\\\&\1/

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/groffify_template.sed
----------------------------------------------------------------------
diff --git a/docs/man/groffify_template.sed b/docs/man/groffify_template.sed
deleted file mode 100644
index 74aaed3..0000000
--- a/docs/man/groffify_template.sed
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# 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.
-#
-/\[FILES\]/ i\
-.PP
-s/^\[\([A-Z ]*\)\]/.SH \1/

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qmf-gen.1
----------------------------------------------------------------------
diff --git a/docs/man/qmf-gen.1 b/docs/man/qmf-gen.1
new file mode 100644
index 0000000..1373986
--- /dev/null
+++ b/docs/man/qmf-gen.1
@@ -0,0 +1,51 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QMF-GEN "1" "March 2018" "qmf-gen  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qmf-gen \- QMF Tool
+.SH SYNOPSIS
+
+qmf-gen [options] schema-document...
+.SH DESCRIPTION
+
+QPID management framework tool.
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.TP
+\fB\-o\fR DIR, \fB\-\-outputdir\fR=\fI\,DIR\/\fR
+Output directory
+.TP
+\fB\-c\fR FILE, \fB\-\-cmakelists\fR=\fI\,FILE\/\fR
+CMakeLists fragment
+.TP
+\fB\-m\fR FILE, \fB\-\-makefile\fR=\fI\,FILE\/\fR
+Makefile fragment
+.TP
+\fB\-t\fR FILE, \fB\-\-typefile\fR=\fI\,FILE\/\fR
+Override type descriptor file
+.TP
+\fB\-d\fR DIR, \fB\-\-templatedir\fR=\fI\,DIR\/\fR
+Override template directory
+.TP
+\fB\-p\fR GENPREFIX, \fB\-\-gen\-prefix\fR=\fI\,GENPREFIX\/\fR
+Prefix for generated files in make dependencies
+.TP
+\fB\-q\fR, \fB\-\-qpid\-broker\fR
+Generate makefile for Qpid broker
+.TP
+\fB\-b\fR, \fB\-\-broker\-plugin\fR
+Generate code for use in a qpid broker plugin
+.TP
+\fB\-2\fR, \fB\-\-v2\-style\fR
+Generate code for use with the QMFv2 Agent API
+.TP
+\fB\-l\fR, \fB\-\-qpid\-logs\fR
+Generate code for QPID_LOG statements in classes constructor/destructor
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qmf-gen.x
----------------------------------------------------------------------
diff --git a/docs/man/qmf-gen.x b/docs/man/qmf-gen.x
new file mode 100644
index 0000000..955529a
--- /dev/null
+++ b/docs/man/qmf-gen.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qmf-gen \- QMF Tool
+
+[SYNOPSIS]
+
+qmf-gen [options] schema-document...
+
+[DESCRIPTION]
+
+QPID management framework tool.
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-config.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-config.1 b/docs/man/qpid-config.1
new file mode 100644
index 0000000..1736712
--- /dev/null
+++ b/docs/man/qpid-config.1
@@ -0,0 +1,204 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-CONFIG "1" "March 2018" "qpid-config  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-config \-  QPID Broker Configuration Tool
+.SH SYNOPSIS
+
+qpid-config [OPTIONS] commands
+.SH DESCRIPTION
+
+Usage:  qpid-config [OPTIONS]
+        qpid-config [OPTIONS] exchanges [filter-string]
+        qpid-config [OPTIONS] queues    [filter-string]
+        qpid-config [OPTIONS] add exchange <type> <name> [AddExchangeOptions]
+        qpid-config [OPTIONS] del exchange <name>
+        qpid-config [OPTIONS] add queue <name> [AddQueueOptions]
+        qpid-config [OPTIONS] del queue <name> [DelQueueOptions]
+        qpid-config [OPTIONS] bind   <exchange-name> <queue-name> [binding-key]
+                  <for type xml>     [-f -|filename]
+                  <for type header>  [all|any] k1=v1 [, k2=v2...]
+        qpid-config [OPTIONS] unbind <exchange-name> <queue-name> [binding-key]
+        qpid-config [OPTIONS] reload-acl
+        qpid-config [OPTIONS] add <type> <name> [--argument <property-name>=<property-value>]
+        qpid-config [OPTIONS] del <type> <name>
+        qpid-config [OPTIONS] list <type> [--show-property <property-name>]
+        qpid-config [OPTIONS] log [<logstring>]
+        qpid-config [OPTIONS] shutdown"""
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.IP
+General Options:
+.TP
+\fB\-t\fR <secs>, \fB\-\-timeout=\fR<secs>
+Maximum time to wait for broker connection (in seconds)
+.TP
+\fB\-r\fR, \fB\-\-recursive\fR
+Show bindings in queue or exchange list
+.TP
+\fB\-b\fR <address>, \fB\-\-broker=\fR<address>
+Address of qpidd broker with syntax: [username/password@] hostname | ip\-address [:<port>]
+.HP
+\fB\-a\fR <address>, \fB\-\-broker\-addr=\fR<address>
+.TP
+\fB\-\-sasl\-mechanism=\fR<mech>
+SASL mechanism for authentication (e.g. EXTERNAL, ANONYMOUS, PLAIN, CRAM\-MD5, DIGEST\-MD5, GSSAPI). SASL
+automatically picks the most secure available mechanism \- use this option to override.
+.TP
+\fB\-\-sasl\-service\-name\fR=\fI\,SASL_SERVICE_NAME\/\fR
+SASL service name to use
+.TP
+\fB\-\-ssl\-certificate=\fR<cert>
+Client SSL certificate (PEM Format)
+.TP
+\fB\-\-ssl\-key=\fR<key>
+Client SSL private key (PEM Format)
+.TP
+\fB\-\-ha\-admin\fR
+Allow connection to a HA backup broker.
+.IP
+Options for Listing Exchanges and Queues:
+.TP
+\fB\-\-ignore\-default\fR
+Ignore the default exchange in exchange or queue list
+.IP
+Options for Adding Exchanges and Queues:
+.TP
+\fB\-\-alternate\-exchange=\fR<aexname>
+Name of the alternate\-exchange for the new queue or exchange. Exchanges route messages to the alternate
+exchange if they are unable to route them elsewhere. Queues route messages to the alternate exchange if they
+are rejected by a subscriber or orphaned by queue deletion.
+.TP
+\fB\-\-durable\fR
+The new queue or exchange is durable.
+.TP
+\fB\-\-replicate=\fR<level>
+Enable automatic replication in a HA cluster. <level> is 'none', 'configuration' or 'all').
+.IP
+Options for Adding Queues:
+.TP
+\fB\-\-file\-count=\fR<n>
+[legacystore] Number of files in queue's persistence journal
+.TP
+\fB\-\-file\-size=\fR<n>
+[legactystore] File size in pages (64KiB/page)
+.TP
+\fB\-\-efp\-partition\-num=\fR<n>
+[linearstore] EFP partition number
+.TP
+\fB\-\-efp\-pool\-file\-size=\fR<n>
+[linearstore] EFP file size (KiB)
+.TP
+\fB\-\-wcache\-page\-size=\fR<n>
+[linearstore] Per\-queue buffer page size (kiB), value may be powers of 2 starting at 4 (4, 8, 16, 32...)
+.TP
+\fB\-\-wcache\-num\-pages=\fR<n>
+[linearstore] Per\-queue num buffer pages
+.TP
+\fB\-\-max\-queue\-size=\fR<n>
+Maximum in\-memory queue size as bytes
+.TP
+\fB\-\-max\-queue\-count=\fR<n>
+Maximum in\-memory queue size as a number of messages
+.TP
+\fB\-\-limit\-policy=\fR<policy>
+Action to take when queue limit is reached
+.TP
+\fB\-\-lvq\-key=\fR<key>
+Last Value Queue key
+.TP
+\fB\-\-flow\-stop\-size=\fR<n>
+Turn on sender flow control when the number of queued bytes exceeds this value.
+.TP
+\fB\-\-flow\-resume\-size=\fR<n>
+Turn off sender flow control when the number of queued bytes drops below this value.
+.TP
+\fB\-\-flow\-stop\-count=\fR<n>
+Turn on sender flow control when the number of queued messages exceeds this value.
+.TP
+\fB\-\-flow\-resume\-count=\fR<n>
+Turn off sender flow control when the number of queued messages drops below this value.
+.TP
+\fB\-\-group\-header=\fR<header\-name>
+Enable message groups. Specify name of header that holds group identifier.
+.TP
+\fB\-\-shared\-groups\fR
+Allow message group consumption across multiple consumers.
+.TP
+\fB\-\-argument=\fR<NAME=VALUE>
+Specify a key\-value pair to add to queue arguments
+.TP
+\fB\-\-start\-replica=\fR<broker\-url>
+Start replication from the same\-named queue at <broker\-url>
+.IP
+Options for Adding Exchanges:
+.TP
+\fB\-\-sequence\fR
+Exchange will insert a 'qpid.msg_sequence' field in the message header
+.TP
+\fB\-\-ive\fR
+Exchange will behave as an 'initial\-value\-exchange', keeping a reference  to the last message forwarded and
+enqueuing that message to newly bound queues.
+.IP
+Options for Deleting Queues:
+.TP
+\fB\-\-force\fR
+Force delete of queue even if it's currently used or it's not empty
+.TP
+\fB\-\-force\-if\-not\-empty\fR
+Force delete of queue even if it's not empty
+.TP
+\fB\-\-force\-if\-used\fR
+Force delete of queue even if it's currently used
+.IP
+Options for Declaring Bindings:
+.TP
+\fB\-f\fR <file.xq>, \fB\-\-file=\fR<file.xq>
+For XML Exchange bindings \- specifies the name of a file containing an XQuery.
+.IP
+Formatting options for 'list' action:
+.TP
+\fB\-\-show\-property=\fR<property\-name>
+Specify a property of an object to be included in output
+.SH EXAMPLES
+
+$ qpid-config add queue q
+
+$ qpid-config add exchange direct d -a localhost:5672
+
+$ qpid-config exchanges -b 10.1.1.7:10000
+
+$ qpid-config queues -b guest/guest@broker-host:10000
+
+Add Exchange <type> values:
+
+    direct     Direct exchange for point-to-point communication
+    fanout     Fanout exchange for broadcast communication
+    topic      Topic exchange that routes messages using binding keys with wildcards
+    headers    Headers exchange that matches header fields against the binding keys
+    xml        XML Exchange - allows content filtering using an XQuery
+
+
+Queue Limit Actions:
+
+    none (default) - Use broker's default policy
+    reject         - Reject enqueued messages
+    ring           - Replace oldest unacquired message with new
+
+Replication levels:
+
+    none           - no replication
+    configuration  - replicate queue and exchange existence and bindings, but not messages.
+    all            - replicate configuration and messages
+
+Log <logstring> value:
+
+    Comma separated <module>:<level> pairs, e.g. 'info+,debug+:Broker,trace+:Queue'
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-config.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-config.x b/docs/man/qpid-config.x
new file mode 100644
index 0000000..07297a9
--- /dev/null
+++ b/docs/man/qpid-config.x
@@ -0,0 +1,89 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-config \-  QPID Broker Configuration Tool
+
+[SYNOPSIS]
+
+qpid-config [OPTIONS] commands
+
+[=DESCRIPTION]
+
+Usage:  qpid-config [OPTIONS]
+        qpid-config [OPTIONS] exchanges [filter-string]
+        qpid-config [OPTIONS] queues    [filter-string]
+        qpid-config [OPTIONS] add exchange <type> <name> [AddExchangeOptions]
+        qpid-config [OPTIONS] del exchange <name>
+        qpid-config [OPTIONS] add queue <name> [AddQueueOptions]
+        qpid-config [OPTIONS] del queue <name> [DelQueueOptions]
+        qpid-config [OPTIONS] bind   <exchange-name> <queue-name> [binding-key]
+                  <for type xml>     [-f -|filename]
+                  <for type header>  [all|any] k1=v1 [, k2=v2...]
+        qpid-config [OPTIONS] unbind <exchange-name> <queue-name> [binding-key]
+        qpid-config [OPTIONS] reload-acl
+        qpid-config [OPTIONS] add <type> <name> [--argument <property-name>=<property-value>]
+        qpid-config [OPTIONS] del <type> <name>
+        qpid-config [OPTIONS] list <type> [--show-property <property-name>]
+        qpid-config [OPTIONS] log [<logstring>]
+        qpid-config [OPTIONS] shutdown"""
+
+[=EXAMPLES]
+
+$ qpid-config add queue q
+
+$ qpid-config add exchange direct d -a localhost:5672
+
+$ qpid-config exchanges -b 10.1.1.7:10000
+
+$ qpid-config queues -b guest/guest@broker-host:10000
+
+Add Exchange <type> values:
+
+    direct     Direct exchange for point-to-point communication
+    fanout     Fanout exchange for broadcast communication
+    topic      Topic exchange that routes messages using binding keys with wildcards
+    headers    Headers exchange that matches header fields against the binding keys
+    xml        XML Exchange - allows content filtering using an XQuery
+
+
+Queue Limit Actions:
+
+    none (default) - Use broker's default policy
+    reject         - Reject enqueued messages
+    ring           - Replace oldest unacquired message with new
+
+Replication levels:
+
+    none           - no replication
+    configuration  - replicate queue and exchange existence and bindings, but not messages.
+    all            - replicate configuration and messages
+
+Log <logstring> value:
+
+    Comma separated <module>:<level> pairs, e.g. 'info+,debug+:Broker,trace+:Queue'
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-ha.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-ha.1 b/docs/man/qpid-ha.1
new file mode 100644
index 0000000..48fbcb6
--- /dev/null
+++ b/docs/man/qpid-ha.1
@@ -0,0 +1,35 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-HA "1" "March 2018" "qpid-ha  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-ha \- Tool for QPID HA
+.SH SYNOPSIS
+
+qpid-ha <command> [<arguments>]
+.SH DESCRIPTION
+
+Shows broker and HA status, HA configuration and sets up replication.
+.PP
+usage: qpid\-ha <command> [<arguments>]
+.PP
+Commands are:
+.TP
+ping
+Check if the broker is alive and responding.
+.TP
+status
+Print HA status.
+.TP
+replicate
+Set up replication from <queue> on <remote\-broker> to <queue> on the current broker.
+.TP
+query
+Print HA configuration and status.
+.PP
+For help with a command type: qpid\-ha <command> \fB\-\-help\fR
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-ha.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-ha.x b/docs/man/qpid-ha.x
new file mode 100644
index 0000000..8434e46
--- /dev/null
+++ b/docs/man/qpid-ha.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-ha \- Tool for QPID HA
+
+[SYNOPSIS]
+
+qpid-ha <command> [<arguments>]
+
+[DESCRIPTION]
+
+Shows broker and HA status, HA configuration and sets up replication.
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-printevents.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-printevents.1 b/docs/man/qpid-printevents.1
new file mode 100644
index 0000000..1acb6ce
--- /dev/null
+++ b/docs/man/qpid-printevents.1
@@ -0,0 +1,57 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-PRINTEVENTS "1" "March 2018" "qpid-printevents  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-printevents \- Collect and Print Events.
+.SH SYNOPSIS
+
+qpid-printevents [options] [broker-addr]...
+.SH DESCRIPTION
+qpid\-printevents [options] [broker\-addr]...
+.PP
+Collect and print events from one or more Qpid message brokers.
+.PP
+If no broker\-addr is supplied, qpid\-printevents connects to 'localhost:5672'.
+.PP
+[broker\-addr] syntax:
+.IP
+[username/password@] hostname
+ip\-address [:<port>]
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.TP
+\fB\-\-heartbeats\fR
+Use heartbeats.
+.TP
+\fB\-\-sasl\-mechanism=\fR<mech>
+SASL mechanism for authentication (e.g. EXTERNAL, ANONYMOUS, PLAIN, CRAM\-MD5, DIGEST\-MD5, GSSAPI). SASL
+automatically picks the most secure available mechanism \- use this option to override.
+.TP
+\fB\-\-sasl\-service\-name\fR=\fI\,SASL_SERVICE_NAME\/\fR
+SASL service name to use
+.TP
+\fB\-\-ssl\-certificate=\fR<cert>
+Client SSL certificate (PEM Format)
+.TP
+\fB\-\-ssl\-key=\fR<key>
+Client SSL private key (PEM Format)
+.TP
+\fB\-\-ha\-admin\fR
+Allow connection to a HA backup broker.
+.SH EXAMPLES
+
+Examples:
+
+$ qpid-printevents localhost:5672
+
+$ qpid-printevents 10.1.1.7:10000
+
+$ qpid-printevents guest/guest@broker-host:10000
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-printevents.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-printevents.x b/docs/man/qpid-printevents.x
new file mode 100644
index 0000000..f601a41
--- /dev/null
+++ b/docs/man/qpid-printevents.x
@@ -0,0 +1,44 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-printevents \- Collect and Print Events.
+
+[SYNOPSIS]
+
+qpid-printevents [options] [broker-addr]...
+
+[=EXAMPLES]
+
+Examples:
+
+$ qpid-printevents localhost:5672
+
+$ qpid-printevents 10.1.1.7:10000
+
+$ qpid-printevents guest/guest@broker-host:10000
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-queue-stats.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-queue-stats.1 b/docs/man/qpid-queue-stats.1
new file mode 100644
index 0000000..c4dfd6f
--- /dev/null
+++ b/docs/man/qpid-queue-stats.1
@@ -0,0 +1,41 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-QUEUE-STATS "1" "March 2018" "qpid-queue-stats  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-queue-stats \- View QPID Broker Queue Stats
+.SH SYNOPSIS
+
+qpid-queue-stats [options]
+.SH DESCRIPTION
+
+Shows information about QPID broker queues. 
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.TP
+\fB\-a\fR BROKER_ADDRESS, \fB\-\-broker\-address\fR=\fI\,BROKER_ADDRESS\/\fR
+broker\-addr is in the form:  [username/password@] hostname | ip\-address [:<port>]   ex:  localhost,
+10.1.1.7:10000, broker\-host:10000, guest/guest@localhost
+.TP
+\fB\-f\fR FILTER, \fB\-\-filter\fR=\fI\,FILTER\/\fR
+a list of comma separated queue names (regex are accepted) to show
+.TP
+\fB\-\-sasl\-mechanism=\fR<mech>
+SASL mechanism for authentication (e.g. EXTERNAL, ANONYMOUS, PLAIN, CRAM\-MD5, DIGEST\-MD5, GSSAPI). SASL
+automatically picks the most secure available mechanism \- use this option to override.
+.TP
+\fB\-\-sasl\-service\-name\fR=\fI\,SASL_SERVICE_NAME\/\fR
+SASL service name to use
+.TP
+\fB\-\-ssl\-certificate=\fR<cert>
+Client SSL certificate (PEM Format)
+.TP
+\fB\-\-ssl\-key=\fR<key>
+Client SSL private key (PEM Format)
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-queue-stats.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-queue-stats.x b/docs/man/qpid-queue-stats.x
new file mode 100644
index 0000000..f0031fa
--- /dev/null
+++ b/docs/man/qpid-queue-stats.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-queue-stats \- View QPID Broker Queue Stats
+
+[SYNOPSIS]
+
+qpid-queue-stats [options]
+
+[DESCRIPTION]
+
+Shows information about QPID broker queues. 
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-receive.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-receive.1 b/docs/man/qpid-receive.1
new file mode 100644
index 0000000..22e8d5d
--- /dev/null
+++ b/docs/man/qpid-receive.1
@@ -0,0 +1,223 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-RECEIVE "1" "March 2018" "qpid-receive  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-receive \- AMQP Message Receiver
+.SH SYNOPSIS
+
+qpid-receive [OPTIONS] -a [ --address ] ADDRESS
+.SH DESCRIPTION
+
+Receives AMQP messages from AMQP sources.
+.SH OPTIONS
+.TP
+\fB\-b\fR [ \fB\-\-broker\fR ] URL (127.0.0.1)
+url of broker to connect to
+.TP
+\fB\-a\fR [ \fB\-\-address\fR ] ADDRESS
+address to receive from
+.TP
+\fB\-\-connection\-options\fR OPTIONS
+options for the connection
+.TP
+\fB\-\-timeout\fR TIMEOUT (0)
+timeout in seconds to wait before
+exiting
+.TP
+\fB\-f\fR [ \fB\-\-forever\fR ]
+ignore timeout and wait forever
+.TP
+\fB\-m\fR [ \fB\-\-messages\fR ] N (0)
+Number of messages to receive; 0 means
+receive indefinitely
+.TP
+\fB\-\-ignore\-duplicates\fR
+Detect and ignore duplicates (by
+checking 'sn' header)
+.TP
+\fB\-\-verify\-sequence\fR
+Verify there are no gaps in the message
+sequence (by checking 'sn' header)
+.TP
+\fB\-\-check\-redelivered\fR
+Fails with exception if a duplicate is
+not marked as redelivered (only
+relevant when ignore\-duplicates is
+selected)
+.TP
+\fB\-\-capacity\fR N (1000)
+Pre\-fetch window (0 implies no
+pre\-fetch)
+.TP
+\fB\-\-ack\-frequency\fR N (100)
+Ack frequency (0 implies none of the
+messages will get accepted)
+.TP
+\fB\-\-tx\fR N (0)
+batch size for transactions (0 implies
+transaction are not used)
+.TP
+\fB\-\-rollback\-frequency\fR N (0)
+rollback frequency (0 implies no
+transaction will be rolledback)
+.TP
+\fB\-\-print\-content\fR yes|no (1)
+print out message content
+.TP
+\fB\-\-print\-object\-type\fR yes|no (0)
+print a description of the content's
+object type if relevant
+.TP
+\fB\-\-print\-headers\fR yes|no (0)
+print out message headers
+.TP
+\fB\-\-failover\-updates\fR
+Listen for membership updates
+distributed via amq.failover
+.TP
+\fB\-\-report\-total\fR
+Report total throughput and latency
+statistics
+.TP
+\fB\-\-report\-every\fR N (0)
+Report throughput and latency
+statistics every N messages.
+.TP
+\fB\-\-report\-header\fR yes|no (1)
+Headers on report.
+.TP
+\fB\-\-ready\-address\fR ADDRESS
+send a message to this address when
+ready to receive
+.TP
+\fB\-\-receive\-rate\fR N (0)
+Receive at rate of N messages/second. 0
+means receive as fast as possible.
+.TP
+\fB\-\-reply\-to\fR REPLY\-TO
+specify reply\-to address on response
+messages
+.TP
+\fB\-\-ignore\-reply\-to\fR
+Do not send replies even if reply\-to is
+set
+.TP
+\fB\-\-help\fR
+print this usage statement
+.SS "Logging options:"
+.TP
+\fB\-t\fR [ \fB\-\-trace\fR ]
+Enables all logging
+.TP
+\fB\-\-log\-enable\fR RULE (notice+)
+Enables logging for selected levels and
+components. RULE is in the form
+\&'LEVEL[+\-][:PATTERN]'
+LEVEL is one of:
+.TP
+trace debug info notice warning error
+critical
+PATTERN is a logging category name, or
+a namespace\-qualified function name or
+name fragment. Logging category names
+are:
+.TP
+Security Broker Management Protocol
+System HA Messaging Store Network Test
+Client Application Model Unspecified
+For example:
+\&'\-\-log\-enable warning+'
+logs all warning, error and critical
+messages.
+\&'\-\-log\-enable trace+:Broker'
+logs all category 'Broker' messages.
+\&'\-\-log\-enable debug:framing'
+logs debug messages from all functions
+with 'framing' in the namespace or
+function name.
+This option can be used multiple times
+.TP
+\fB\-\-log\-disable\fR RULE
+Disables logging for selected levels
+and components. RULE is in the form
+\&'LEVEL[+\-][:PATTERN]'
+LEVEL is one of:
+.TP
+trace debug info notice warning error
+critical
+PATTERN is a logging category name, or
+a namespace\-qualified function name or
+name fragment. Logging category names
+are:
+.TP
+Security Broker Management Protocol
+System HA Messaging Store Network Test
+Client Application Model Unspecified
+For example:
+\&'\-\-log\-disable warning\-'
+disables logging all warning, notice,
+info, debug, and trace messages.
+\&'\-\-log\-disable trace:Broker'
+disables all category 'Broker' trace
+messages.
+\&'\-\-log\-disable debug\-:qmf::'
+disables logging debug and trace
+messages from all functions with
+\&'qmf::' in the namespace.
+This option can be used multiple times
+.TP
+\fB\-\-log\-time\fR yes|no (1)
+Include time in log messages
+.TP
+\fB\-\-log\-level\fR yes|no (1)
+Include severity level in log messages
+.TP
+\fB\-\-log\-source\fR yes|no (0)
+Include source file:line in log
+messages
+.TP
+\fB\-\-log\-thread\fR yes|no (0)
+Include thread ID in log messages
+.TP
+\fB\-\-log\-function\fR yes|no (0)
+Include function signature in log
+messages
+.TP
+\fB\-\-log\-hires\-timestamp\fR yes|no (0)
+Use hi\-resolution timestamps in log
+messages
+.TP
+\fB\-\-log\-category\fR yes|no (1)
+Include category in log messages
+.TP
+\fB\-\-log\-prefix\fR STRING
+Prefix to prepend to all log messages
+.SS "Logging sink options:"
+.TP
+\fB\-\-log\-to\-stderr\fR yes|no (1)
+Send logging output to stderr
+.TP
+\fB\-\-log\-to\-stdout\fR yes|no (0)
+Send logging output to stdout
+.TP
+\fB\-\-log\-to\-file\fR FILE
+Send log output to FILE.
+.TP
+\fB\-\-log\-to\-syslog\fR yes|no (0)
+Send logging output to syslog;
+customize using \fB\-\-syslog\-name\fR and
+\fB\-\-syslog\-facility\fR
+.TP
+\fB\-\-syslog\-name\fR NAME
+Name to use in syslog messages
+.TP
+\fB\-\-syslog\-facility\fR LOG_XXX (LOG_DAEMON)
+Facility to use in syslog messages
+.PP
+Address must be specified!
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-receive.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-receive.x b/docs/man/qpid-receive.x
new file mode 100644
index 0000000..6608eb1
--- /dev/null
+++ b/docs/man/qpid-receive.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-receive \- AMQP Message Receiver
+
+[SYNOPSIS]
+
+qpid-receive [OPTIONS] -a [ --address ] ADDRESS
+
+[DESCRIPTION]
+
+Receives AMQP messages from AMQP sources.
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-route.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-route.1 b/docs/man/qpid-route.1
new file mode 100644
index 0000000..4f7674b
--- /dev/null
+++ b/docs/man/qpid-route.1
@@ -0,0 +1,99 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-ROUTE "1" "March 2018" "qpid-route  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-route \- Management Tool for QPID Routes
+.SH SYNOPSIS
+
+qpid-route [OPTIONS] <commands> 
+.SH DESCRIPTION
+
+Manages QPID routes.
+.IP
+qpid\-route [OPTIONS] dynamic del <dest\-broker> <src\-broker> <exchange>
+.TP
+qpid\-route [OPTIONS] route add
+<dest\-broker> <src\-broker> <exchange> <routing\-key> [tag] [exclude\-list] [mechanism]
+.TP
+qpid\-route [OPTIONS] route del
+<dest\-broker> <src\-broker> <exchange> <routing\-key>
+.TP
+qpid\-route [OPTIONS] queue add
+<dest\-broker> <src\-broker> <exchange> <queue> [mechanism]
+.TP
+qpid\-route [OPTIONS] queue del
+<dest\-broker> <src\-broker> <exchange> <queue>
+.TP
+qpid\-route [OPTIONS] route list
+[<dest\-broker>]
+.IP
+qpid\-route [OPTIONS] route flush [<dest\-broker>]
+qpid\-route [OPTIONS] route map   [<broker>]
+.TP
+qpid\-route [OPTIONS] link add
+<dest\-broker> <src\-broker> [mechanism]
+.TP
+qpid\-route [OPTIONS] link del
+<dest\-broker> <src\-broker>
+.IP
+qpid\-route [OPTIONS] link list [<dest\-broker>]
+.PP
+ADDRESS syntax:
+.IP
+[username/password@] hostname
+ip\-address [:<port>]
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.TP
+\fB\-\-timeout=\fR<secs>
+Maximum time to wait for broker connection (in seconds)
+.TP
+\fB\-v\fR, \fB\-\-verbose\fR
+Verbose output
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR
+Quiet output, don't print duplicate warnings
+.TP
+\fB\-d\fR, \fB\-\-durable\fR
+Added configuration shall be durable
+.TP
+\fB\-e\fR, \fB\-\-del\-empty\-link\fR
+Delete link after deleting last route on the link
+.TP
+\fB\-s\fR, \fB\-\-src\-local\fR
+Make connection to source broker (push route)
+.TP
+\fB\-\-ack=\fR<n>
+Acknowledge transfers over the bridge in batches of N
+.TP
+\fB\-\-credit=\fR<msgs>
+Maximum number of messages a sender can have outstanding (0=unlimited)
+.TP
+\fB\-t\fR <transport>, \fB\-\-transport=\fR<transport>
+Transport to use for links, defaults to tcp
+.TP
+\fB\-\-client\-sasl\-mechanism=\fR<mech>
+SASL mechanism for authentication (e.g. EXTERNAL, ANONYMOUS, PLAIN, CRAM\-MD5, DIGEST\-MD5, GSSAPI). Used when
+the client connects to the destination broker (not for authentication between the source and destination
+brokers \- that is specified using the [mechanisms] argument to 'add route'). SASL automatically picks the most
+secure available mechanism \- use this option to override.
+.TP
+\fB\-\-sasl\-service\-name\fR=\fI\,SASL_SERVICE_NAME\/\fR
+SASL service name to use
+.TP
+\fB\-\-ssl\-certificate=\fR<cert>
+Client SSL certificate (PEM Format)
+.TP
+\fB\-\-ssl\-key=\fR<key>
+Client SSL private key (PEM Format)
+.TP
+\fB\-\-ha\-admin\fR
+Allow connection to a HA backup broker.
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-route.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-route.x b/docs/man/qpid-route.x
new file mode 100644
index 0000000..6ca5cea
--- /dev/null
+++ b/docs/man/qpid-route.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-route \- Management Tool for QPID Routes
+
+[SYNOPSIS]
+
+qpid-route [OPTIONS] <commands> 
+
+[DESCRIPTION]
+
+Manages QPID routes.
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-send.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-send.1 b/docs/man/qpid-send.1
new file mode 100644
index 0000000..c50988c
--- /dev/null
+++ b/docs/man/qpid-send.1
@@ -0,0 +1,255 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-SEND "1" "March 2018" "qpid-send  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-send \- AMQP Message Sender
+.SH SYNOPSIS
+
+qpid-send [OPTIONS] -a [ --address ] ADDRESS
+.SH DESCRIPTION
+
+Sends AMQP messages to AMQP sources.
+.SH OPTIONS
+.TP
+\fB\-b\fR [ \fB\-\-broker\fR ] URL (127.0.0.1)
+url of broker to connect to
+.TP
+\fB\-a\fR [ \fB\-\-address\fR ] ADDRESS
+address to send to
+.TP
+\fB\-\-connection\-options\fR OPTIONS
+options for the connection
+.TP
+\fB\-m\fR [ \fB\-\-messages\fR ] N (1)
+stop after N messages have been sent, 0
+means no limit
+.TP
+\fB\-i\fR [ \fB\-\-id\fR ] ID
+use the supplied id instead of
+generating one
+.TP
+\fB\-\-reply\-to\fR REPLY\-TO
+specify reply\-to address
+.TP
+\fB\-\-send\-eos\fR N (0)
+Send N EOS messages to mark end of
+input
+.TP
+\fB\-\-durable\fR yes|no (0)
+Mark messages as durable.
+.TP
+\fB\-\-ttl\fR msecs (0)
+Time\-to\-live for messages, in
+milliseconds
+.TP
+\fB\-\-priority\fR PRIORITY (0)
+Priority for messages (higher value
+implies higher priority)
+.TP
+\fB\-P\fR [ \fB\-\-property\fR ] NAME=VALUE
+specify message property
+.TP
+\fB\-\-correlation\-id\fR ID
+correlation\-id for message
+.TP
+\fB\-\-user\-id\fR USERID
+userid for message
+.TP
+\fB\-\-auto\-user\-id\fR yes| no (0)
+set userid for message based on
+authenticated identity
+.TP
+\fB\-\-content\-string\fR CONTENT
+use CONTENT as message content
+.TP
+\fB\-\-content\-size\fR N (0)
+create an N\-byte message content
+.TP
+\fB\-M\fR [ \fB\-\-content\-map\fR ] NAME=VALUE
+specify entry for map content
+.TP
+\fB\-\-content\-stdin\fR
+read message content from stdin, one
+line per message
+.TP
+\fB\-\-capacity\fR N (1000)
+size of the senders outgoing message
+queue
+.TP
+\fB\-\-tx\fR N (0)
+batch size for transactions (0 implies
+transaction are not used)
+.TP
+\fB\-\-rollback\-frequency\fR N (0)
+rollback frequency (0 implies no
+transaction will be rolledback)
+.TP
+\fB\-\-failover\-updates\fR
+Listen for membership updates
+distributed via amq.failover
+.TP
+\fB\-\-report\-total\fR
+Report total throughput statistics
+.TP
+\fB\-\-report\-every\fR N (0)
+Report throughput statistics every N
+messages
+.TP
+\fB\-\-report\-header\fR yes|no (1)
+Headers on report.
+.TP
+\fB\-\-send\-rate\fR N (0)
+Send at rate of N messages/second. 0
+means send as fast as possible.
+.TP
+\fB\-\-sequence\fR yes|no (1)
+Add a sequence number messages property
+(required for duplicate/lost message
+detection)
+.TP
+\fB\-\-timestamp\fR yes|no (1)
+Add a time stamp messages property
+(required for latency measurement)
+.TP
+\fB\-\-group\-key\fR KEY
+Generate groups of messages using
+message header 'KEY' to hold the group
+identifier
+.TP
+\fB\-\-group\-prefix\fR STRING (GROUP\-)
+Generate group identifers with 'STRING'
+prefix (if group\-key specified)
+.TP
+\fB\-\-group\-size\fR N (10)
+Number of messages per a group (if
+group\-key specified)
+.TP
+\fB\-\-group\-randomize\-size\fR
+Randomize the number of messages per
+group to [1...group\-size] (if group\-key
+specified)
+.TP
+\fB\-\-group\-interleave\fR N (1)
+Simultaineously interleave messages
+from N different groups (if group\-key
+specified)
+.TP
+\fB\-\-help\fR
+print this usage statement
+.SS "Logging options:"
+.TP
+\fB\-t\fR [ \fB\-\-trace\fR ]
+Enables all logging
+.TP
+\fB\-\-log\-enable\fR RULE (notice+)
+Enables logging for selected levels and
+components. RULE is in the form
+\&'LEVEL[+\-][:PATTERN]'
+LEVEL is one of:
+.TP
+trace debug info notice warning error
+critical
+PATTERN is a logging category name, or
+a namespace\-qualified function name or
+name fragment. Logging category names
+are:
+.TP
+Security Broker Management Protocol
+System HA Messaging Store Network Test
+Client Application Model Unspecified
+For example:
+\&'\-\-log\-enable warning+'
+logs all warning, error and critical
+messages.
+\&'\-\-log\-enable trace+:Broker'
+logs all category 'Broker' messages.
+\&'\-\-log\-enable debug:framing'
+logs debug messages from all functions
+with 'framing' in the namespace or
+function name.
+This option can be used multiple times
+.TP
+\fB\-\-log\-disable\fR RULE
+Disables logging for selected levels
+and components. RULE is in the form
+\&'LEVEL[+\-][:PATTERN]'
+LEVEL is one of:
+.TP
+trace debug info notice warning error
+critical
+PATTERN is a logging category name, or
+a namespace\-qualified function name or
+name fragment. Logging category names
+are:
+.TP
+Security Broker Management Protocol
+System HA Messaging Store Network Test
+Client Application Model Unspecified
+For example:
+\&'\-\-log\-disable warning\-'
+disables logging all warning, notice,
+info, debug, and trace messages.
+\&'\-\-log\-disable trace:Broker'
+disables all category 'Broker' trace
+messages.
+\&'\-\-log\-disable debug\-:qmf::'
+disables logging debug and trace
+messages from all functions with
+\&'qmf::' in the namespace.
+This option can be used multiple times
+.TP
+\fB\-\-log\-time\fR yes|no (1)
+Include time in log messages
+.TP
+\fB\-\-log\-level\fR yes|no (1)
+Include severity level in log messages
+.TP
+\fB\-\-log\-source\fR yes|no (0)
+Include source file:line in log
+messages
+.TP
+\fB\-\-log\-thread\fR yes|no (0)
+Include thread ID in log messages
+.TP
+\fB\-\-log\-function\fR yes|no (0)
+Include function signature in log
+messages
+.TP
+\fB\-\-log\-hires\-timestamp\fR yes|no (0)
+Use hi\-resolution timestamps in log
+messages
+.TP
+\fB\-\-log\-category\fR yes|no (1)
+Include category in log messages
+.TP
+\fB\-\-log\-prefix\fR STRING
+Prefix to prepend to all log messages
+.SS "Logging sink options:"
+.TP
+\fB\-\-log\-to\-stderr\fR yes|no (1)
+Send logging output to stderr
+.TP
+\fB\-\-log\-to\-stdout\fR yes|no (0)
+Send logging output to stdout
+.TP
+\fB\-\-log\-to\-file\fR FILE
+Send log output to FILE.
+.TP
+\fB\-\-log\-to\-syslog\fR yes|no (0)
+Send logging output to syslog;
+customize using \fB\-\-syslog\-name\fR and
+\fB\-\-syslog\-facility\fR
+.TP
+\fB\-\-syslog\-name\fR NAME
+Name to use in syslog messages
+.TP
+\fB\-\-syslog\-facility\fR LOG_XXX (LOG_DAEMON)
+Facility to use in syslog messages
+.PP
+Address must be specified!
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-send.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-send.x b/docs/man/qpid-send.x
new file mode 100644
index 0000000..60723a7
--- /dev/null
+++ b/docs/man/qpid-send.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-send \- AMQP Message Sender
+
+[SYNOPSIS]
+
+qpid-send [OPTIONS] -a [ --address ] ADDRESS
+
+[DESCRIPTION]
+
+Sends AMQP messages to AMQP sources.
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-stat.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-stat.1 b/docs/man/qpid-stat.1
new file mode 100644
index 0000000..24551a2
--- /dev/null
+++ b/docs/man/qpid-stat.1
@@ -0,0 +1,88 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-STAT "1" "March 2018" "qpid-stat  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-stat \- Show QPID Broker Stats
+.SH SYNOPSIS
+
+qpid-stat <commands> [OPTIONS]
+.SH DESCRIPTION
+
+Shows general broker stats, connections, exchanges, queues, 
+subsriptions, access control list stats and broker memory stats. 
+
+Usage: qpid-stat -g [options]
+       qpid-stat -c [options]
+       qpid-stat -e [options]
+       qpid-stat -q [options] [queue-name]
+       qpid-stat -u [options]
+       qpid-stat -m [options]
+       qpid-stat --acl [options]
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.IP
+General Options:
+.TP
+\fB\-b\fR <url>, \fB\-\-broker=\fR<url>
+URL of the broker to query
+.TP
+\fB\-t\fR <secs>, \fB\-\-timeout=\fR<secs>
+Maximum time to wait for broker connection (in seconds)
+.TP
+\fB\-\-sasl\-mechanism=\fR<mech>
+SASL mechanism for authentication (e.g. EXTERNAL, ANONYMOUS, PLAIN, CRAM\-MD5, DIGEST\-MD5, GSSAPI). SASL
+automatically picks the most secure available mechanism \- use this option to override.
+.TP
+\fB\-\-sasl\-service\-name\fR=\fI\,SASL_SERVICE_NAME\/\fR
+SASL service name to use
+.TP
+\fB\-\-ssl\-certificate=\fR<cert>
+Client SSL certificate (PEM Format)
+.TP
+\fB\-\-ssl\-key=\fR<key>
+Client SSL private key (PEM Format)
+.TP
+\fB\-\-ha\-admin\fR
+Allow connection to a HA backup broker.
+.IP
+Command Options:
+.TP
+\fB\-g\fR, \fB\-\-general\fR
+Show General Broker Stats
+.TP
+\fB\-c\fR, \fB\-\-connections\fR
+Show Connections
+.TP
+\fB\-e\fR, \fB\-\-exchanges\fR
+Show Exchanges
+.TP
+\fB\-q\fR, \fB\-\-queues\fR
+Show Queues
+.TP
+\fB\-u\fR, \fB\-\-subscriptions\fR
+Show Subscriptions
+.TP
+\fB\-m\fR, \fB\-\-memory\fR
+Show Broker Memory Stats
+.TP
+\fB\-\-acl\fR
+Show Access Control List Stats
+.IP
+Display Options:
+.TP
+\fB\-S\fR <colname>, \fB\-\-sort\-by=\fR<colname>
+Sort by column name
+.TP
+\fB\-I\fR, \fB\-\-increasing\fR
+Sort by increasing value (default = decreasing)
+.TP
+\fB\-L\fR <n>, \fB\-\-limit=\fR<n>
+Limit output to n rows
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-stat.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-stat.x b/docs/man/qpid-stat.x
new file mode 100644
index 0000000..09e8fea
--- /dev/null
+++ b/docs/man/qpid-stat.x
@@ -0,0 +1,47 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-stat \- Show QPID Broker Stats
+
+[SYNOPSIS]
+
+qpid-stat <commands> [OPTIONS]
+
+[=DESCRIPTION]
+
+Shows general broker stats, connections, exchanges, queues, 
+subsriptions, access control list stats and broker memory stats. 
+
+Usage: qpid-stat -g [options]
+       qpid-stat -c [options]
+       qpid-stat -e [options]
+       qpid-stat -q [options] [queue-name]
+       qpid-stat -u [options]
+       qpid-stat -m [options]
+       qpid-stat --acl [options]
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-tool.1
----------------------------------------------------------------------
diff --git a/docs/man/qpid-tool.1 b/docs/man/qpid-tool.1
new file mode 100644
index 0000000..21ab702
--- /dev/null
+++ b/docs/man/qpid-tool.1
@@ -0,0 +1,37 @@
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPID-TOOL "1" "March 2018" "qpid-tool  (qpid-cpp) version 1.38.0" "User Commands"
+.SH NAME
+
+qpid-tool \- Management Tool for QPID
+.SH SYNOPSIS
+
+qpid-tool [OPTIONS] [[<username>/<password>@]<target-host>[:<tcp-port>]]
+.SH DESCRIPTION
+
+Prints lists of objects, object's content and sets timestamp format. 
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+show this help message and exit
+.TP
+\fB\-b\fR <address>, \fB\-\-broker=\fR<address>
+Address of qpidd broker with syntax: [username/password@] hostname | ip\-address [:<port>]
+.TP
+\fB\-\-sasl\-mechanism=\fR<mech>
+SASL mechanism for authentication (e.g. EXTERNAL, ANONYMOUS, PLAIN, CRAM\-MD5, DIGEST\-MD5, GSSAPI). SASL
+automatically picks the most secure available mechanism \- use this option to override.
+.TP
+\fB\-\-sasl\-service\-name\fR=\fI\,SASL_SERVICE_NAME\/\fR
+SASL service name to use
+.TP
+\fB\-\-ssl\-certificate=\fR<path>
+SSL certificate for client authentication
+.TP
+\fB\-\-ssl\-key=\fR<path>
+Private key (if not contained in certificate)
+.SH AUTHOR
+
+The Apache Qpid Project, dev@qpid.apache.org
+.SH "REPORTING BUGS"
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpid-tool.x
----------------------------------------------------------------------
diff --git a/docs/man/qpid-tool.x b/docs/man/qpid-tool.x
new file mode 100644
index 0000000..8f60c2f
--- /dev/null
+++ b/docs/man/qpid-tool.x
@@ -0,0 +1,38 @@
+.\"
+.\" 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.
+.\"
+
+[NAME]
+
+qpid-tool \- Management Tool for QPID
+
+[SYNOPSIS]
+
+qpid-tool [OPTIONS] [[<username>/<password>@]<target-host>[:<tcp-port>]]
+
+[DESCRIPTION]
+
+Prints lists of objects, object's content and sets timestamp format. 
+
+[AUTHOR]
+
+The Apache Qpid Project, dev@qpid.apache.org
+
+[REPORTING BUGS]
+
+Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpidd.1
----------------------------------------------------------------------
diff --git a/docs/man/qpidd.1 b/docs/man/qpidd.1
index 58234b0..26e1c19 100644
--- a/docs/man/qpidd.1
+++ b/docs/man/qpidd.1
@@ -1,369 +1,523 @@
-.\"
-.\" 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.
-.\"
-
-.TH QPIDD "1" "November 2017" "qpidd (qpid-cpp) version 1.38.0" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.47.5.
+.TH QPIDD "1" "March 2018" "qpidd (qpid-cpp) version 1.38.0" "User Commands"
 .SH NAME
 
 qpidd \- the Qpid AMQP Message Broker Daemon
-
 .SH SYNOPSIS
 
-qpidd [-p port] [--config config_file] [--data-dir directory]
-
+qpidd [OPTIONS]
 .SH DESCRIPTION
 
 An AMQP message broker daemon that stores, routes and forwards
 messages using the Advanced Message Queueing Protocol (AMQP).
-
 .SH OPTIONS
 
 The options below are built-in to qpidd. Installing add-on modules provides additional options. To see the full set of options available type "qpidd --help"
 
 Options may be specified via command line, environment variable or configuration file. See FILES and ENVIRONMENT below for details.
-
-.PP
-
-.SS Options
-
 .TP
-\-h [ \-\-help ]
+\fB\-h\fR [ \fB\-\-help\fR ]
 Displays the help message
 .TP
-\-v [ \-\-version ]
+\fB\-v\fR [ \fB\-\-version\fR ]
 Displays version information
 .TP
-\-\-config FILE (/etc/qpid/qpidd.conf)
+\fB\-\-config\fR FILE (/etc/qpid/qpidd.conf)
 Reads configuration from FILE
-\-\-client\-config FILE (/etc/qpid/qpidc.conf) 
-Reads client configuration from FILE 
+.TP
+\fB\-\-client\-config\fR FILE (/etc/qpid/qpidc.conf)
+Reads client configuration from FILE
 (for cluster interconnect)
-
-.SS Module options
-\-\-module\-dir DIR (/usr/lib64/qpid/daemon) 
-Load all shareable modules in this 
+.SS "Module options:"
+.TP
+\fB\-\-module\-dir\fR DIR (/usr/lib64/qpid/daemon)
+Load all shareable modules in this
 directory
 .TP
-\-\-load\-module FILE
-Specifies additional module(s) to be 
+\fB\-\-load\-module\fR FILE
+Specifies additional module(s) to be
 loaded
 .TP
-\-\-no\-module\-dir
-Don't load modules from module 
+\fB\-\-no\-module\-dir\fR
+Don't load modules from module
 directory
-
-.SS Broker Options
-\-\-data\-dir DIR (/home/aconway/.qpidd) 
-Directory to contain persistent data 
+.SS "Broker Options:"
+.TP
+\fB\-\-data\-dir\fR DIR ($HOME/.qpidd)
+Directory to contain persistent data
 generated by the broker
 .TP
-\-\-no\-data\-dir
-Don't use a data directory.  No 
+\fB\-\-no\-data\-dir\fR
+Don't use a data directory.  No
 persistent configuration will be loaded
 or stored
 .TP
-\-\-paging\-dir DIR
+\fB\-\-paging\-dir\fR DIR
 Directory in which paging files will be
 created for paged queues
 .TP
-\-p [ \-\-port ] PORT (5672)
+\fB\-p\fR [ \fB\-\-port\fR ] PORT (5672)
 Tells the broker to listen on PORT
-\-\-interface <interface name>|<interface address> 
-Which network interfaces to use to 
+.TP
+\fB\-\-interface\fR <interface name>|<interface address>
+Which network interfaces to use to
 listen for incoming connections
-\-\-listen\-disable <transport name>     Transports to disable listening
 .TP
-\-\-worker\-threads N (5)
+\fB\-\-listen\-disable\fR <transport name>
+Transports to disable listening
+.TP
+\fB\-\-protocols\fR <protocol name+version>
+Which protocol versions to allow
+.TP
+\fB\-\-worker\-threads\fR N (9)
 Sets the broker thread pool size
 .TP
-\-\-connection\-backlog N (10)
-Sets the connection backlog limit for 
+\fB\-\-connection\-backlog\fR N (10)
+Sets the connection backlog limit for
 the server socket
 .TP
-\-m [ \-\-mgmt\-enable ] yes|no (1)
+\fB\-m\fR [ \fB\-\-mgmt\-enable\fR ] yes|no (1)
 Enable Management
 .TP
-\-\-mgmt\-publish yes|no (1)
-Enable Publish of Management Data (\&'no'
+\fB\-\-mgmt\-publish\fR yes|no (1)
+Enable Publish of Management Data ('no'
 implies query\-only)
 .TP
-\-\-mgmt\-qmf2 yes|no (1)
-Enable broadcast of management 
+\fB\-\-mgmt\-qmf2\fR yes|no (1)
+Enable broadcast of management
 information over QMF v2
 .TP
-\-\-mgmt\-qmf1 yes|no (0)
-Enable broadcast of management 
+\fB\-\-mgmt\-qmf1\fR yes|no (0)
+Enable broadcast of management
 information over QMF v1
 .TP
-\-\-mgmt\-pub\-interval SECONDS (10s)
+\fB\-\-mgmt\-pub\-interval\fR SECONDS (10s)
 Management Publish Interval
-\-\-queue\-purge\-interval SECONDS (600s) 
-Interval between attempts to purge any 
+.TP
+\fB\-\-queue\-purge\-interval\fR SECONDS (600s)
+Interval between attempts to purge any
 expired messages from queues
 .TP
-\-\-auth yes|no (1)
-Enable authentication, if disabled all 
+\fB\-\-auth\fR yes|no (1)
+Enable authentication, if disabled all
 incoming connections will be trusted
 .TP
-\-\-realm REALM (QPID)
-Use the given realm when performing 
+\fB\-\-realm\fR REALM (QPID)
+Use the given realm when performing
 authentication
-\-\-default\-queue\-limit BYTES (104857600) 
-Default maximum size for queues (in 
+.TP
+\fB\-\-sasl\-service\-name\fR NAME
+The service name to specify for SASL
+.TP
+\fB\-\-default\-queue\-limit\fR BYTES (104857600)
+Default maximum size for queues (in
 bytes)
 .TP
-\-\-tcp\-nodelay
+\fB\-\-tcp\-nodelay\fR
 Set TCP_NODELAY on TCP connections
 .TP
-\-\-require\-encryption
-Only accept connections that are 
+\fB\-\-require\-encryption\fR
+Only accept connections that are
 encrypted
-\-\-known\-hosts\-url URL or \&'none' (none) 
-URL to send as \&'known\-hosts' to clients
-(\&'none' implies empty list)
-.TP
-\-\-sasl\-config DIR
-Allows SASL config path, if supported 
-by platform, to be overridden.  For 
-default location on Linux, see Cyrus 
-SASL documentation.  There is no SASL 
+.TP
+\fB\-\-known\-hosts\-url\fR URL or 'none' (none)
+URL to send as 'known\-hosts' to clients
+('none' implies empty list)
+.TP
+\fB\-\-sasl\-config\fR DIR
+Allows SASL config path, if supported
+by platform, to be overridden.  For
+default location on Linux, see Cyrus
+SASL documentation.  There is no SASL
 config dir on Windows.
-\-\-default\-flow\-stop\-threshold PERCENT (80) 
-Percent of queue's maximum capacity at 
+.TP
+\fB\-\-default\-flow\-stop\-threshold\fR PERCENT (80)
+Percent of queue's maximum capacity at
 which flow control is activated.
-\-\-default\-flow\-resume\-threshold PERCENT (70) 
-Percent of queue's maximum capacity at 
+.TP
+\fB\-\-default\-flow\-resume\-threshold\fR PERCENT (70)
+Percent of queue's maximum capacity at
 which flow control is de\-activated.
-\-\-default\-event\-threshold\-ratio %age of limit (80) 
-The ratio of any specified queue limit 
+.TP
+\fB\-\-default\-event\-threshold\-ratio\fR %age of limit (80)
+The ratio of any specified queue limit
 at which an event will be raised
-\-\-default\-message\-group GROUP\-IDENTIFER (qpid.no\-group) 
-Group identifier to assign to messages 
+.TP
+\fB\-\-default\-message\-group\fR GROUP\-IDENTIFER (qpid.no\-group)
+Group identifier to assign to messages
 delivered to a message group queue that
 do not contain an identifier.
 .TP
-\-\-enable\-timestamp yes|no (0)
-Add current time to each received 
+\fB\-\-enable\-timestamp\fR yes|no (0)
+Add current time to each received
 message.
-\-\-link\-maintenance\-interval SECONDS (2s) 
-Interval to check link health and 
 .TP
-                                      re\-connect
-if need be
-\-\-link\-heartbeat\-interval SECONDS (120s) 
-Heartbeat interval for a federation 
+\fB\-\-link\-maintenance\-interval\fR SECONDS (2s)
+Interval to check federation link
+health and re\-connect if need be
+.TP
+\fB\-\-link\-heartbeat\-interval\fR SECONDS (120s)
+Heartbeat interval for a federation
 link
-\-\-max\-negotiate\-time MILLISECONDS (10000) 
-Maximum time a connection can take to 
+.TP
+\fB\-\-dtx\-default\-timeout\fR SECONDS (60)
+Default timeout for DTX transaction
+before aborting it
+.TP
+\fB\-\-dtx\-max\-timeout\fR SECONDS (3600)
+Maximum allowed timeout for DTX
+transaction. A value of zero disables
+maximum timeout limit checks and allows
+arbitrarily large timeout settings.
+.TP
+\fB\-\-max\-negotiate\-time\fR MILLISECONDS (10000)
+Maximum time a connection can take to
 send the initial protocol negotiation
 .TP
-\-\-federation\-tag NAME
+\fB\-\-federation\-tag\fR NAME
 Override the federation tag
-
-.SS Logging options
 .TP
-\-t [ \-\-trace ]
+\fB\-\-session\-max\-unacked\fR DELIVERIES (5000)
+Maximum number of un\-acknowledged
+outoing messages per sesssion
+.SS "Logging options:"
+.TP
+\fB\-t\fR [ \fB\-\-trace\fR ]
 Enables all logging
 .TP
-\-\-log\-enable RULE (notice+)
+\fB\-\-log\-enable\fR RULE (notice+)
 Enables logging for selected levels and
-components. RULE is in the form 
+components. RULE is in the form
 \&'LEVEL[+\-][:PATTERN]'
-LEVEL is one of: 
-trace debug info notice warning error 
+LEVEL is one of:
+.TP
+trace debug info notice warning error
 critical
-PATTERN is a logging category name, or 
-a namespace\-qualified function name or 
-name fragment. Logging category names 
-are: 
-Security Broker Management Protocol 
-System HA Messaging Store Network Test 
-Client Model Unspecified
+PATTERN is a logging category name, or
+a namespace\-qualified function name or
+name fragment. Logging category names
+are:
+.TP
+Security Broker Management Protocol
+System HA Messaging Store Network Test
+Client Application Model Unspecified
 For example:
 \&'\-\-log\-enable warning+'
-logs all warning, error and critical 
+logs all warning, error and critical
 messages.
 \&'\-\-log\-enable trace+:Broker'
-logs all category \&'Broker' messages.
+logs all category 'Broker' messages.
 \&'\-\-log\-enable debug:framing'
-logs debug messages from all functions 
-with \&'framing' in the namespace or 
+logs debug messages from all functions
+with 'framing' in the namespace or
 function name.
 This option can be used multiple times
 .TP
-\-\-log\-disable RULE
-Disables logging for selected levels 
-and components. RULE is in the form 
+\fB\-\-log\-disable\fR RULE
+Disables logging for selected levels
+and components. RULE is in the form
 \&'LEVEL[+\-][:PATTERN]'
-LEVEL is one of: 
-trace debug info notice warning error 
+LEVEL is one of:
+.TP
+trace debug info notice warning error
 critical
-PATTERN is a logging category name, or 
-a namespace\-qualified function name or 
-name fragment. Logging category names 
-are: 
-Security Broker Management Protocol 
-System HA Messaging Store Network Test 
-Client Model Unspecified
+PATTERN is a logging category name, or
+a namespace\-qualified function name or
+name fragment. Logging category names
+are:
+.TP
+Security Broker Management Protocol
+System HA Messaging Store Network Test
+Client Application Model Unspecified
 For example:
 \&'\-\-log\-disable warning\-'
-disables logging all warning, notice, 
+disables logging all warning, notice,
 info, debug, and trace messages.
 \&'\-\-log\-disable trace:Broker'
-disables all category \&'Broker' trace 
+disables all category 'Broker' trace
 messages.
 \&'\-\-log\-disable debug\-:qmf::'
-disables logging debug and trace 
-messages from all functions with 
+disables logging debug and trace
+messages from all functions with
 \&'qmf::' in the namespace.
 This option can be used multiple times
 .TP
-\-\-log\-time yes|no (1)
+\fB\-\-log\-time\fR yes|no (1)
 Include time in log messages
 .TP
-\-\-log\-level yes|no (1)
+\fB\-\-log\-level\fR yes|no (1)
 Include severity level in log messages
 .TP
-\-\-log\-source yes|no (0)
-Include source file:line in log 
+\fB\-\-log\-source\fR yes|no (0)
+Include source file:line in log
 messages
 .TP
-\-\-log\-thread yes|no (0)
+\fB\-\-log\-thread\fR yes|no (0)
 Include thread ID in log messages
 .TP
-\-\-log\-function yes|no (0)
-Include function signature in log 
+\fB\-\-log\-function\fR yes|no (0)
+Include function signature in log
 messages
 .TP
-\-\-log\-hires\-timestamp yes|no (0)
-Use hi\-resolution timestamps in log 
+\fB\-\-log\-hires\-timestamp\fR yes|no (0)
+Use hi\-resolution timestamps in log
 messages
 .TP
-\-\-log\-category yes|no (1)
+\fB\-\-log\-category\fR yes|no (1)
 Include category in log messages
 .TP
-\-\-log\-prefix STRING
+\fB\-\-log\-prefix\fR STRING
 Prefix to prepend to all log messages
-
-.SS Logging sink options
+.SS "Logging sink options:"
 .TP
-\-\-log\-to\-stderr yes|no (1)
+\fB\-\-log\-to\-stderr\fR yes|no (1)
 Send logging output to stderr
 .TP
-\-\-log\-to\-stdout yes|no (0)
+\fB\-\-log\-to\-stdout\fR yes|no (0)
 Send logging output to stdout
 .TP
-\-\-log\-to\-file FILE
+\fB\-\-log\-to\-file\fR FILE
 Send log output to FILE.
 .TP
-\-\-log\-to\-syslog yes|no (0)
+\fB\-\-log\-to\-syslog\fR yes|no (0)
 Send logging output to syslog;
-customize using \-\-syslog\-name and 
-\-\-syslog\-facility
+customize using \fB\-\-syslog\-name\fR and
+\fB\-\-syslog\-facility\fR
 .TP
-\-\-syslog\-name NAME (qpidd)
+\fB\-\-syslog\-name\fR NAME (qpidd)
 Name to use in syslog messages
-\-\-syslog\-facility LOG_XXX (LOG_DAEMON) 
+.TP
+\fB\-\-syslog\-facility\fR LOG_XXX (LOG_DAEMON)
 Facility to use in syslog messages
-
-.SS Daemon options
+.SS "Daemon options:"
 .TP
-\-d [ \-\-daemon ]
-Run as a daemon. Logs to syslog by 
+\fB\-d\fR [ \fB\-\-daemon\fR ]
+Run as a daemon. Logs to syslog by
 default in this mode.
 .TP
-\-\-transport TRANSPORT (tcp)
-The transport for which to return the 
+\fB\-\-transport\fR TRANSPORT (tcp)
+The transport for which to return the
 port
 .TP
-\-\-pid\-dir DIR (/home/aconway/.qpidd)
-Directory where port\-specific PID file 
+\fB\-\-pid\-dir\fR DIR ($HOME/.qpidd)
+Directory where port\-specific PID file
 is stored
 .TP
-\-w [ \-\-wait ] SECONDS (600)
-Sets the maximum wait time to 
-initialize or shutdown the daemon. If 
+\fB\-\-pidfile\fR FILE
+File name to store the PID in daemon
+mode. Used as\-is, no directory or
+suffixes added.
+.TP
+\fB\-\-close\-fd\fR FD
+File descriptors that the daemon should
+close
+.TP
+\fB\-w\fR [ \fB\-\-wait\fR ] SECONDS (600)
+Sets the maximum wait time to
+initialize or shutdown the daemon. If
 the daemon fails to initialize/shutdown
 , prints an error and returns 1
 .TP
-\-c [ \-\-check ]
-Prints the daemon's process ID to 
-stdout and returns 0 if the daemon is 
+\fB\-c\fR [ \fB\-\-check\fR ]
+Prints the daemon's process ID to
+stdout and returns 0 if the daemon is
 running, otherwise returns 1
 .TP
-\-q [ \-\-quit ]
-Tells the daemon to shut down
-
+\fB\-q\fR [ \fB\-\-quit\fR ]
+Tells the daemon to shut down with an
+INT signal
 .TP
-\-\-socket\-fd FD
-File descriptor for tcp listening socket
-
-.SS ACL Options
+\fB\-k\fR [ \fB\-\-kill\fR ]
+Kill the daemon with a KILL signal.
 .TP
-\-\-acl\-file FILE
-The policy file to load from, loaded from 
-data dir
+\fB\-\-socket\-fd\fR FD
+File descriptor for tcp listening
+socket
+.SS "ACL Options:"
 .TP
-\-\-connection\-limit\-per\-user N (0)
-The maximum number of connections allowed 
-per user. 0 implies no limit.
+\fB\-\-acl\-file\fR FILE
+The policy file to load from, loaded
+from data dir
 .TP
-\-\-max\-connections N (500)
-The maximum combined number of connections
-allowed. 0 implies no limit.
+\fB\-\-connection\-limit\-per\-user\fR N (0)
+The maximum number of connections
+allowed per user. 0 implies no limit.
 .TP
-\-\-connection\-limit\-per\-ip N (0)
-The maximum number of connections allowed 
-per host IP address. 0 implies no limit.
+\fB\-\-max\-connections\fR N (500)
+The maximum combined number of
+connections allowed. 0 implies no
+limit.
 .TP
-\-\-max\-queues\-per\-user N (0)
-The maximum number of queues allowed per 
-user. 0 implies no limit.
-
-.SS SSL Settings
+\fB\-\-connection\-limit\-per\-ip\fR N (0)
+The maximum number of connections
+allowed per host IP address. 0 implies
+no limit.
+.TP
+\fB\-\-max\-queues\-per\-user\fR N (0)
+The maximum number of queues allowed
+per user. 0 implies no limit.
+.SS "SSL Settings:"
 .TP
-\-\-ssl\-use\-export\-policy
+\fB\-\-ssl\-use\-export\-policy\fR
 Use NSS export policy
 .TP
-\-\-ssl\-cert\-password\-file PATH
-File containing password to use for 
+\fB\-\-ssl\-cert\-password\-file\fR PATH
+File containing password to use for
 accessing certificate database
 .TP
-\-\-ssl\-cert\-db PATH
-Path to directory containing certificate
-database
+\fB\-\-ssl\-cert\-db\fR PATH
+Path to directory containing
+certificate database
 .TP
-\-\-ssl\-cert\-name NAME (gonzo)
+\fB\-\-ssl\-cert\-name\fR NAME (localhost.localdomain)
 Name of the certificate to use
 .TP
-\-\-ssl\-port PORT (5671)
-Port on which to listen for SSL 
+\fB\-\-ssl\-port\fR PORT (5671)
+Port on which to listen for SSL
 connections
 .TP
-\-\-ssl\-require\-client\-authentication
-Forces clients to authenticate in order 
+\fB\-\-ssl\-require\-client\-authentication\fR
+Forces clients to authenticate in order
 to establish an SSL connection
 .TP
-\-\-ssl\-sasl\-no\-dict
-Disables SASL mechanisms that are 
-vulnerable to passive dictionary\-based 
+\fB\-\-ssl\-sasl\-no\-dict\fR
+Disables SASL mechanisms that are
+vulnerable to passive dictionary\-based
 password attacks
+.SS "AMQP 1.0 Options:"
+.TP
+\fB\-\-domain\fR DOMAIN
+Domain of this broker
+.TP
+\fB\-\-queue\-patterns\fR PATTERN
+Pattern for on\-demand queues
+.TP
+\fB\-\-topic\-patterns\fR PATTERN
+Pattern for on\-demand topics
+.SS "HA Options:"
+.TP
+\fB\-\-ha\-cluster\fR yes|no (0)
+Join a HA active/passive cluster.
+.TP
+\fB\-\-ha\-queue\-replication\fR yes|no (0)
+Enable replication of specific queues
+without joining a cluster
+.TP
+\fB\-\-ha\-brokers\-url\fR URL
+URL with address of each broker in the
+cluster.
+.TP
+\fB\-\-ha\-public\-url\fR URL
+URL advertized to clients to connect to
+the cluster.
+.TP
+\fB\-\-ha\-replicate\fR LEVEL (none)
+Replication level for creating queues
+and exchanges if there is no
+qpid.replicate argument supplied. LEVEL
+is 'none', 'configuration' or 'all'
+.TP
+\fB\-\-ha\-username\fR USER
+Username for connections between HA
+brokers
+.TP
+\fB\-\-ha\-password\fR PASS
+Password for connections between HA
+brokers
+.TP
+\fB\-\-ha\-mechanism\fR MECH
+Authentication mechanism for
+connections between HA brokers
+.TP
+\fB\-\-ha\-backup\-timeout\fR SECONDS (10s)
+Maximum time to wait for an expected
+backup to connect and become ready.
+.TP
+\fB\-\-ha\-flow\-messages\fR N (1000)
+Flow control message count limit for
+replication, 0 means no limit
+.TP
+\fB\-\-ha\-flow\-bytes\fR N (0)
+Flow control byte limit for
+replication, 0 means no limit
+.SS "Linear Store Options:"
+.TP
+\fB\-\-store\-dir\fR DIR
+Store directory location for
+persistence (instead of using
+\fB\-\-data\-dir\fR value). Required if
+\fB\-\-no\-data\-dir\fR is also used.
+.TP
+\fB\-\-truncate\fR yes|no (0)
+If yes|true|1, will truncate the store
+(discard any existing records). If
+no|false|0, will preserve the existing
+store files for recovery.
+.TP
+\fB\-\-wcache\-page\-size\fR N (16)
+Size of the pages in the write page
+cache in KiB. Allowable values \- powers
+of 2 starting at 4 (4, 8, 16, 32...)
+Lower values decrease latency at the
+expense of throughput.
+.TP
+\fB\-\-wcache\-num\-pages\fR N (16)
+Number of pages in the write page
+cache. Minimum value: 4.
+.TP
+\fB\-\-tpl\-wcache\-page\-size\fR N (4)
+Size of the pages in the transaction
+prepared list write page cache in KiB.
+Allowable values \- powers of 2 starting
+at: 4 (4, 8, 16, 32...) Lower values
+decrease latency at the expense of
+throughput.
+.TP
+\fB\-\-tpl\-wcache\-num\-pages\fR N (16)
+Number of pages in the transaction
+prepared list write page cache. Minimum
+value: 4.
+.TP
+\fB\-\-efp\-partition\fR N (1)
+Empty File Pool partition to use for
+finding empty journal files
+.TP
+\fB\-\-efp\-file\-size\fR N (2048)
+Empty File Pool file size in KiB to use
+for journal files. Must be a multiple
+of 4 KiB.
+.TP
+\fB\-\-overwrite\-before\-return\fR yes|no (0)
+If yes|true|1, will overwrite each
+store file with zeros before returning
+it to the Empty File Pool. When not in
+use (the default), then old message
+data remains in the file, but is
+overwritten on next use. This option
+should only be used where security
+considerations justify it as it makes
+the store somewhat slower.
+.TP
+\fB\-\-journal\-flush\-timeout\fR SECONDS (500ms)
+Maximum time to wait to flush journal.
+Use ms, us units for small time values
+(eg 10ms) \- no space between value and
+unit.
+.SS "Store Options:"
+.TP
+\fB\-\-storage\-provider\fR PROVIDER
+Name of the storage provider to use.
+.SH ENVIRONMENT
+.I QPID_<option>
+.RS
+There is an environment variable for each option.
+.RE
+
+The environment variable is the option name in uppercase, prefixed with QPID_ and '.' or '-' are replaced with '_'. Environment settings are over-ridden by command line settings. For example:
 
+  export QPID_PORT=6000
+  export QPID_MAX_CONNECTIONS=10
+  export QPID_LOG_TO_FILE=/tmp/qpidd.log
 .SH FILES
 .I /etc/qpidd.conf
 .RS
@@ -378,23 +532,9 @@ Each line is a name=value pair. Blank lines and lines beginning with # are ignor
   port=6000
   max-connections=10
   log-to-file=/tmp/qpidd.log
-
-.SH ENVIRONMENT
-.I QPID_<option>
-.RS
-There is an environment variable for each option.
-.RE
-
-The environment variable is the option name in uppercase, prefixed with QPID_ and '.' or '-' are replaced with '_'. Environment settings are over-ridden by command line settings. For example:
-
-  export QPID_PORT=6000
-  export QPID_MAX_CONNECTIONS=10
-  export QPID_LOG_TO_FILE=/tmp/qpidd.log
-
 .SH AUTHOR
 
 The Apache Qpid Project, dev@qpid.apache.org
-
-.SH REPORTING BUGS
+.SH "REPORTING BUGS"
 
 Please report bugs to users@qpid.apache.org

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/cd6cad73/docs/man/qpidd.x
----------------------------------------------------------------------
diff --git a/docs/man/qpidd.x b/docs/man/qpidd.x
index 6efa5f3..7ad7e71 100644
--- a/docs/man/qpidd.x
+++ b/docs/man/qpidd.x
@@ -23,7 +23,7 @@ qpidd \- the Qpid AMQP Message Broker Daemon
 
 [SYNOPSIS]
 
-qpidd [-p port] [--config config_file] [--data-dir directory]
+qpidd [OPTIONS]
 
 [DESCRIPTION]
 


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


[03/14] qpid-cpp git commit: QPID-7630: Add a CMake switch to allow -Werror to be switched off

Posted by jr...@apache.org.
QPID-7630: Add a CMake switch to allow -Werror to be switched off


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

Branch: refs/heads/master
Commit: 5d28224e6108136284ebef9a23a01d1e226d1404
Parents: cd6cad7
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 16:37:14 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 CMakeLists.txt     | 2 +-
 src/CMakeLists.txt | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/5d28224e/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d0b8b1f..c99bced 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -147,7 +147,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL GNU)
    # -Wunreachable-code -Wpadded -Winline
    # -Wshadow - warns about boost headers.
    set (WARNING_FLAGS
-     "-Werror -pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers -Woverloaded-virtual -Wno-deprecated-declarations")
+     "-pedantic -Wall -Wextra -Wno-shadow -Wpointer-arith -Wcast-qual -Wcast-align -Wno-long-long -Wvolatile-register-var -Winvalid-pch -Wno-system-headers -Woverloaded-virtual -Wno-deprecated-declarations")
 
    if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7)
      set(WARNING_FLAGS "${WARNING_FLAGS} -Wno-implicit-fallthrough")

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/5d28224e/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 44a39b8..f7e69ea 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -151,10 +151,10 @@ if (VALGRIND_FOUND)
   option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
 endif (VALGRIND_FOUND)
 
-option(ENABLE_WARNINGS "Enable lots of compiler warnings (recommended)" ON)
-if (NOT ENABLE_WARNINGS)
-  set (WARNING_FLAGS "")
-endif (NOT ENABLE_WARNINGS)
+option(ENABLE_WARNING_ERROR "Consider compiler warnings to be errors" ON)
+if (ENABLE_WARNING_ERROR)
+  set(WARNING_FLAGS "${WARNING_FLAGS} -Werror")
+endif (ENABLE_WARNING_ERROR)
 
 if (GCC_VERSION AND NOT GCC_VERSION VERSION_LESS 5.1)
   option(ENABLE_GLIBCXX_OLD_ABI "Enable old (pre GCC 5.1) C++ ABI" OFF)


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


[02/14] qpid-cpp git commit: NO-JIRA: Suppress a valgrind warning about an invalid free on exit

Posted by jr...@apache.org.
NO-JIRA: Suppress a valgrind warning about an invalid free on exit


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

Branch: refs/heads/master
Commit: 186657838631cf18c4f5ad9039522fdc2385cb00
Parents: 8ceb65e
Author: Justin Ross <jr...@apache.org>
Authored: Tue Mar 13 06:44:15 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/tests/.valgrind.supp | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/18665783/src/tests/.valgrind.supp
----------------------------------------------------------------------
diff --git a/src/tests/.valgrind.supp b/src/tests/.valgrind.supp
index d881c73..540591e 100644
--- a/src/tests/.valgrind.supp
+++ b/src/tests/.valgrind.supp
@@ -240,3 +240,14 @@
    fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
    ...
 }
+
+{
+   Invalid free on exit
+   Memcheck:Free
+   fun:free
+   fun:__libc_freeres
+   fun:_vgnU_freeres
+   fun:__run_exit_handlers
+   fun:exit
+   fun:(below main)
+}


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


[05/14] qpid-cpp git commit: QPID-8128: Link to libqpid-proton-core, not libqpid-proton; remove an obsolete way to find the proton config

Posted by jr...@apache.org.
QPID-8128: Link to libqpid-proton-core, not libqpid-proton; remove an obsolete way to find the proton config


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

Branch: refs/heads/master
Commit: b18583a6c05d0bb8cb9502f0823d902e17b2410e
Parents: 24c4a37
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 11:32:28 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 CMakeModules/FindProton.cmake | 33 ++++++++++-----------------------
 src/CMakeLists.txt            |  2 +-
 src/amqp.cmake                |  2 +-
 3 files changed, 12 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b18583a6/CMakeModules/FindProton.cmake
----------------------------------------------------------------------
diff --git a/CMakeModules/FindProton.cmake b/CMakeModules/FindProton.cmake
index 71441fe..e1cb0ed 100644
--- a/CMakeModules/FindProton.cmake
+++ b/CMakeModules/FindProton.cmake
@@ -23,20 +23,7 @@ include(FindPackageMessage)
 # First try to find the Installed Proton config (Proton 0.7 and later)
 find_package(Proton QUIET NO_MODULE)
 if (Proton_FOUND)
-    find_package_message(Proton "Found Proton: ${Proton_LIBRARIES} (found version \"${Proton_VERSION}\")" "$Proton_DIR ${Proton_LIBRARIES} $Proton_VERSION")
-    return()
-endif ()
-
-# Now look for the cooky Proton config installed with some earlier
-# versions of Proton
-find_package(proton QUIET NO_MODULE)
-if (proton_FOUND)
-    include("${proton_DIR}/libqpid-proton.cmake")
-    set (Proton_VERSION ${PROTON_VERSION})
-    set (Proton_INCLUDE_DIRS ${PROTON_INCLUDE_DIRS})
-    set (Proton_LIBRARIES ${PROTON_LIBRARIES})
-    set (Proton_FOUND true)
-    find_package_message(Proton "Found Proton: ${Proton_LIBRARIES} (found version \"${Proton_VERSION}\")" "$Proton_DIR ${Proton_LIBRARIES} $Proton_VERSION")
+    find_package_message(Proton "Found Proton: ${Proton_Core_LIBRARIES} (found version \"${Proton_VERSION}\")" "$Proton_DIR ${Proton_Core_LIBRARIES} $Proton_VERSION")
     return()
 endif ()
 
@@ -50,16 +37,16 @@ if (PKG_CONFIG_FOUND)
     endif()
 
     if (NOT Proton_FIND_VERSION)
-        pkg_check_modules(Proton ${FindPkgQUIET} libqpid-proton)
+        pkg_check_modules(Proton ${FindPkgQUIET} libqpid-proton-core)
     elseif(NOT Proton_FIND_VERSION_EXACT)
-        pkg_check_modules(Proton ${FindPkgQUIET} libqpid-proton>=${Proton_FIND_VERSION})
+        pkg_check_modules(Proton ${FindPkgQUIET} libqpid-proton-core>=${Proton_FIND_VERSION})
     else()
-        pkg_check_modules(Proton ${FindPkgQUIET} libqpid-proton=${Proton_FIND_VERSION})
+        pkg_check_modules(Proton ${FindPkgQUIET} libqpid-proton-core=${Proton_FIND_VERSION})
     endif()
     if (Proton_FOUND)
-        find_library(Proton_LIBRARY ${Proton_LIBRARIES} HINTS ${Proton_LIBRARY_DIRS})
-        set (Proton_LIBRARIES ${Proton_LIBRARY})
-        find_package_message(Proton "Found Proton: ${Proton_LIBRARIES} (found version \"${Proton_VERSION}\")" "$Proton_DIR ${Proton_LIBRARIES} $Proton_VERSION")
+        find_library(Proton_LIBRARY ${Proton_Core_LIBRARIES} HINTS ${Proton_LIBRARY_DIRS})
+        set (Proton_Core_LIBRARIES ${Proton_LIBRARY})
+        find_package_message(Proton "Found Proton: ${Proton_Core_LIBRARIES} (found version \"${Proton_VERSION}\")" "$Proton_DIR ${Proton_Core_LIBRARIES} $Proton_VERSION")
         return()
     endif ()
 endif()
@@ -68,11 +55,11 @@ endif()
 # Defaule location is ${HOME}/qpid-proton
 set(Proton_CHECKOUT_DIR "$ENV{HOME}/qpid-proton" CACHE PATH "Proton checkout directory")
 set(Proton_BUILD_DIR_NAME "build" CACHE STRING "Proton build directory name within Proton_CHECKOUT_DIR")
-if (EXISTS ${Proton_CHECKOUT_DIR}/${Proton_BUILD_DIR_NAME}/proton-c/libqpid-proton.so)
+if (EXISTS ${Proton_CHECKOUT_DIR}/${Proton_BUILD_DIR_NAME}/proton-c/libqpid-proton-core.so)
     include("${Proton_CHECKOUT_DIR}/${Proton_BUILD_DIR_NAME}/proton-c/ProtonConfig.cmake")
     set (Proton_INCLUDE_DIRS "${Proton_CHECKOUT_DIR}/proton-c/include" "${Proton_CHECKOUT_DIR}/${Proton_BUILD_DIR_NAME}/proton-c/include")
-    set (Proton_LIBRARIES "${Proton_CHECKOUT_DIR}/${Proton_BUILD_DIR_NAME}/proton-c/libqpid-proton.so")
-    find_package_message(Proton "Found uninstalled Proton: ${Proton_LIBRARIES} (found version \"${Proton_VERSION}\")" "$ProtonX_DIR ${Proton_LIBRARIES} $Proton_VERSION")
+    set (Proton_Core_LIBRARIES "${Proton_CHECKOUT_DIR}/${Proton_BUILD_DIR_NAME}/proton-c/libqpid-proton-core.so")
+    find_package_message(Proton "Found uninstalled Proton: ${Proton_Core_LIBRARIES} (found version \"${Proton_VERSION}\")" "$ProtonX_DIR ${Proton_Core_LIBRARIES} $Proton_VERSION")
     return()
 endif ()
 

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b18583a6/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6ee474f..44a39b8 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1001,7 +1001,7 @@ set (qpidmessaging_SOURCES
 add_msvc_version (qpidmessaging library dll)
 
 add_library (qpidmessaging SHARED ${qpidmessaging_SOURCES})
-target_link_libraries (qpidmessaging qpidtypes qpidclient qpidcommon ${Proton_LIBRARIES})
+target_link_libraries (qpidmessaging qpidtypes qpidclient qpidcommon ${Proton_Core_LIBRARIES})
 set_target_properties (qpidmessaging PROPERTIES
                        LINK_FLAGS "${HIDE_SYMBOL_FLAGS} ${LINK_VERSION_SCRIPT_FLAG}"
                        COMPILE_FLAGS "${HIDE_SYMBOL_FLAGS}"

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b18583a6/src/amqp.cmake
----------------------------------------------------------------------
diff --git a/src/amqp.cmake b/src/amqp.cmake
index 0488340..fc97e22 100644
--- a/src/amqp.cmake
+++ b/src/amqp.cmake
@@ -104,7 +104,7 @@ if (BUILD_AMQP)
     include_directories(${Proton_INCLUDE_DIRS})
 
     add_library (amqp MODULE ${amqp_SOURCES})
-    target_link_libraries (amqp qpidtypes qpidbroker qpidcommon ${Proton_LIBRARIES})
+    target_link_libraries (amqp qpidtypes qpidbroker qpidcommon ${Proton_Core_LIBRARIES})
     set_target_properties (amqp PROPERTIES
                            PREFIX "")
 


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


[09/14] qpid-cpp git commit: QPID-7089: Add a note linking to OS packages

Posted by jr...@apache.org.
QPID-7089: Add a note linking to OS packages


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

Branch: refs/heads/master
Commit: 26b6c3730a3672e39fe436811f417e5b04687858
Parents: 88d08be
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 15:05:50 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 INSTALL.txt | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/26b6c373/INSTALL.txt
----------------------------------------------------------------------
diff --git a/INSTALL.txt b/INSTALL.txt
index e1c4299..fddb78e 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -29,6 +29,11 @@ section 5. below and/or check the output from running cmake for any errors.
 
 As of Qpid 0.26 cmake (versions 2.6 or 2.8) is the only way to build Qpid.
 
+As an alternative to building from source, you can if you like use the
+packages available for some OS distributions.
+
+ * Fedora packages: https://apps.fedoraproject.org/packages/qpid-cpp
+ * Ubuntu packages: https://launchpad.net/~qpid
 
 2. How to Build and Install Qpid from a Source Distribution
 ===========================================================


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


[08/14] qpid-cpp git commit: QPID-7999: Move Fedora-specific init scripts to the fedora dir; disable their installation, but keep them in the build output so packagers can pick them up as needed

Posted by jr...@apache.org.
QPID-7999: Move Fedora-specific init scripts to the fedora dir; disable their installation, but keep them in the build output so packagers can pick them up as needed


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

Branch: refs/heads/master
Commit: 88d08be32de9b6233fcad02539b9dcf303e4b16b
Parents: 2fda113
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 13:49:23 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 etc/CMakeLists.txt                  |  14 +--
 etc/cluster.conf-example.xml.in     |  90 -----------------
 etc/fedora/cluster.conf-example.xml |  90 +++++++++++++++++
 etc/fedora/qpidd-primary.in         | 113 +++++++++++++++++++++
 etc/fedora/qpidd.in                 | 168 +++++++++++++++++++++++++++++++
 etc/qpidd-primary.in                | 113 ---------------------
 etc/qpidd.in                        | 168 -------------------------------
 7 files changed, 375 insertions(+), 381 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/etc/CMakeLists.txt b/etc/CMakeLists.txt
index c39257e..7c4a48b 100644
--- a/etc/CMakeLists.txt
+++ b/etc/CMakeLists.txt
@@ -18,7 +18,6 @@
 #
 
 if (UNIX)
-
   # Use absolute paths as these are substituted into init scripts.
   set_absolute_install_path (bindir ${QPID_INSTALL_BINDIR})
   set_absolute_install_path (sysconfdir ${SYSCONF_INSTALL_DIR})
@@ -26,18 +25,13 @@ if (UNIX)
   set_absolute_install_path (initdir ${QPID_INSTALL_INITDDIR})
   set_absolute_install_path (confdir ${QPID_INSTALL_CONFDIR})
 
-  configure_file(qpidd.in
-    ${CMAKE_CURRENT_BINARY_DIR}/qpidd
+  configure_file(fedora/qpidd.in
+    ${CMAKE_CURRENT_BINARY_DIR}/fedora/qpidd
     @ONLY)
 
-  configure_file(qpidd-primary.in
-    ${CMAKE_CURRENT_BINARY_DIR}/qpidd-primary
+  configure_file(fedora/qpidd-primary.in
+    ${CMAKE_CURRENT_BINARY_DIR}/fedora/qpidd-primary
     @ONLY)
-
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qpidd ${CMAKE_CURRENT_BINARY_DIR}/qpidd-primary
-        PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
-        DESTINATION ${QPID_INSTALL_INITDDIR}
-        COMPONENT ${QPID_COMPONENT_BROKER})
 endif (UNIX)
 
 install(FILES qpidc.conf

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/cluster.conf-example.xml.in
----------------------------------------------------------------------
diff --git a/etc/cluster.conf-example.xml.in b/etc/cluster.conf-example.xml.in
deleted file mode 100644
index d6f0c08..0000000
--- a/etc/cluster.conf-example.xml.in
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-    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 an example of a cluster.conf file to run qpidd HA under rgmanager.
-This example assumes a 3 node cluster, with nodes named node1, node2 and node3.
-
-NOTE: fencing is not shown, it should be configured in a real cluster configuration.
--->
-
-<cluster name="qpid-test" config_version="18">
-  <!-- The cluster has 3 nodes. Each has a unique nodid and one vote
-       for quorum. -->
-  <clusternodes>
-    <clusternode name="node1.example.com" nodeid="1"/>
-    <clusternode name="node2.example.com" nodeid="2"/>
-    <clusternode name="node3.example.com" nodeid="3"/>
-  </clusternodes>
-  <!-- Resouce Manager configuration. -->
-  <rm>
-    <!--
-	There is a failoverdomain for each node containing just that node.
-	This lets us stipulate that the qpidd service should always run on each node.
-    -->
-    <failoverdomains>
-      <failoverdomain name="node1-domain" restricted="1">
-	<failoverdomainnode name="node1.example.com"/>
-      </failoverdomain>
-      <failoverdomain name="node2-domain" restricted="1">
-	<failoverdomainnode name="node2.example.com"/>
-      </failoverdomain>
-      <failoverdomain name="node3-domain" restricted="1">
-	<failoverdomainnode name="node3.example.com"/>
-      </failoverdomain>
-    </failoverdomains>
-
-    <resources>
-      <!-- This script starts a qpidd broker acting as a backup. -->
-      <script file="!!sysconfdir!!/init.d/qpidd" name="qpidd"/>
-
-      <!-- This script promotes the qpidd broker on this node to primary. -->
-      <script file="!!sysconfdir!!/init.d/qpidd-primary" name="qpidd-primary"/>
-
-      <!-- This is a virtual IP address for broker replication traffic. -->
-      <ip address="20.0.10.200" monitor_link="1"/>
-
-      <!-- This is a virtual IP address on a seprate network for client traffic. -->
-      <ip address="20.0.20.200" monitor_link="1"/>
-    </resources>
-
-    <!-- There is a qpidd service on each node, it should be restarted if it fails. -->
-    <service name="node1-qpidd-service" domain="node1-domain" recovery="restart">
-      <script ref="qpidd"/>
-    </service>
-    <service name="node2-qpidd-service" domain="node2-domain" recovery="restart">
-      <script ref="qpidd"/>
-    </service>
-    <service name="node3-qpidd-service" domain="node3-domain"  recovery="restart">
-      <script ref="qpidd"/>
-    </service>
-
-    <!-- There should always be a single qpidd-primary service, it can run on any node. -->
-    <service name="qpidd-primary-service" autostart="1" exclusive="0" recovery="relocate">
-      <script ref="qpidd-primary"/>
-      <!-- The primary has the IP addresses for brokers and clients to connect. -->
-      <ip ref="20.0.10.200"/>
-      <ip ref="20.0.20.200"/>
-    </service>
-  </rm>
-  <fencedevices/>
-  <fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/>
-</cluster>

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/fedora/cluster.conf-example.xml
----------------------------------------------------------------------
diff --git a/etc/fedora/cluster.conf-example.xml b/etc/fedora/cluster.conf-example.xml
new file mode 100644
index 0000000..d6f0c08
--- /dev/null
+++ b/etc/fedora/cluster.conf-example.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+
+<!--
+    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 an example of a cluster.conf file to run qpidd HA under rgmanager.
+This example assumes a 3 node cluster, with nodes named node1, node2 and node3.
+
+NOTE: fencing is not shown, it should be configured in a real cluster configuration.
+-->
+
+<cluster name="qpid-test" config_version="18">
+  <!-- The cluster has 3 nodes. Each has a unique nodid and one vote
+       for quorum. -->
+  <clusternodes>
+    <clusternode name="node1.example.com" nodeid="1"/>
+    <clusternode name="node2.example.com" nodeid="2"/>
+    <clusternode name="node3.example.com" nodeid="3"/>
+  </clusternodes>
+  <!-- Resouce Manager configuration. -->
+  <rm>
+    <!--
+	There is a failoverdomain for each node containing just that node.
+	This lets us stipulate that the qpidd service should always run on each node.
+    -->
+    <failoverdomains>
+      <failoverdomain name="node1-domain" restricted="1">
+	<failoverdomainnode name="node1.example.com"/>
+      </failoverdomain>
+      <failoverdomain name="node2-domain" restricted="1">
+	<failoverdomainnode name="node2.example.com"/>
+      </failoverdomain>
+      <failoverdomain name="node3-domain" restricted="1">
+	<failoverdomainnode name="node3.example.com"/>
+      </failoverdomain>
+    </failoverdomains>
+
+    <resources>
+      <!-- This script starts a qpidd broker acting as a backup. -->
+      <script file="!!sysconfdir!!/init.d/qpidd" name="qpidd"/>
+
+      <!-- This script promotes the qpidd broker on this node to primary. -->
+      <script file="!!sysconfdir!!/init.d/qpidd-primary" name="qpidd-primary"/>
+
+      <!-- This is a virtual IP address for broker replication traffic. -->
+      <ip address="20.0.10.200" monitor_link="1"/>
+
+      <!-- This is a virtual IP address on a seprate network for client traffic. -->
+      <ip address="20.0.20.200" monitor_link="1"/>
+    </resources>
+
+    <!-- There is a qpidd service on each node, it should be restarted if it fails. -->
+    <service name="node1-qpidd-service" domain="node1-domain" recovery="restart">
+      <script ref="qpidd"/>
+    </service>
+    <service name="node2-qpidd-service" domain="node2-domain" recovery="restart">
+      <script ref="qpidd"/>
+    </service>
+    <service name="node3-qpidd-service" domain="node3-domain"  recovery="restart">
+      <script ref="qpidd"/>
+    </service>
+
+    <!-- There should always be a single qpidd-primary service, it can run on any node. -->
+    <service name="qpidd-primary-service" autostart="1" exclusive="0" recovery="relocate">
+      <script ref="qpidd-primary"/>
+      <!-- The primary has the IP addresses for brokers and clients to connect. -->
+      <ip ref="20.0.10.200"/>
+      <ip ref="20.0.20.200"/>
+    </service>
+  </rm>
+  <fencedevices/>
+  <fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/>
+</cluster>

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/fedora/qpidd-primary.in
----------------------------------------------------------------------
diff --git a/etc/fedora/qpidd-primary.in b/etc/fedora/qpidd-primary.in
new file mode 100755
index 0000000..86bc76d
--- /dev/null
+++ b/etc/fedora/qpidd-primary.in
@@ -0,0 +1,113 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+#
+# qpidd        Startup script for the Qpid messaging daemon.
+#
+
+### BEGIN INIT INFO
+# Provides: qpidd-primary
+# Required-Start: $qpidd
+# Required-Stop: $qpidd
+# Default-Start:
+# Default-Stop: 0 1 2 3 4 5 6
+# Short-Description: promote qpidd to cluster primary
+# Description: Qpidd can be run in an active/passive cluster. Promote a running qpidd to primary.
+### END INIT INFO
+
+# chkconfig: - 85 15
+# description: Qpidd can be run in an active/passive cluster. Promote a running qpidd to primary.
+# processname: qpidd
+
+prog=qpidd
+
+# The following variables can be overridden in @sysconfdir@/sysconfig/$prog
+QPID_INIT=@initdir@/$prog
+QPID_CONFIG=@confdir@/qpidd.conf
+QPID_HA=@bindir@/qpid-ha
+QPID_HA_OPTIONS="--config $QPID_CONFIG"
+
+# Source configuration
+test -f @sysconfdir@/sysconfig/$prog && source @sysconfdir@/sysconfig/$prog
+source /etc/rc.d/init.d/functions
+
+# Check presence of executables/scripts
+for f in $QPID_INIT $QPID_HA; do
+    test -x $f || { echo "$f not found or not executable"; exit 5; }
+done
+
+QPID_HA="$QPID_HA $QPID_HA_OPTIONS"
+
+RETVAL=0
+
+status() {
+    if $QPID_HA status --is-primary ; then
+	echo "qpidd is primary"
+    else
+	echo "qpidd is not primary"
+	return 1
+    fi
+}
+
+# Ensure no concurrent start/stop of services.
+lock() {
+    export QPID_HA_LOCK_HELD=1	# For calls to the qpidd script
+    exec 9< $QPID_INIT
+    flock 9
+}
+
+start() {
+    lock
+    $QPID_INIT start primary || return $?
+    echo -n $"Promoting to primary: "
+    err=$($QPID_HA promote --cluster-manager 2>&1)
+    RETVAL=$?
+    [ $RETVAL = 0 ] && success || { echo -n "$err: "; failure; }
+    echo
+    return $RETVAL
+}
+
+stop() {
+    $QPID_INIT stop primary
+}
+
+reload() {
+    echo 1>&2 $"$0: reload not supported"
+    return 3
+}
+
+restart() {
+    stop && start
+}
+
+# See how we were called.
+case "$1" in
+    start|stop|status|restart|reload)
+	$1
+	RETVAL=$?
+	;;
+    force-reload)
+	restart
+	;;
+    *)
+	echo 1>&2 $"Usage: $0 {start|stop|status|restart|force-reload}"
+	exit 2
+esac
+
+exit $RETVAL

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/fedora/qpidd.in
----------------------------------------------------------------------
diff --git a/etc/fedora/qpidd.in b/etc/fedora/qpidd.in
new file mode 100755
index 0000000..d363308
--- /dev/null
+++ b/etc/fedora/qpidd.in
@@ -0,0 +1,168 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+#
+# qpidd        Startup script for the Qpid messaging daemon.
+#
+
+### BEGIN INIT INFO
+# Provides: qpidd
+# Required-Start: $local_fs
+# Required-Stop: $local_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: start or stop qpidd
+# Description: Qpidd is an AMQP broker. It receives, stores, routes and	forwards messages using the AMQP protcol.
+### END INIT INFO
+
+# chkconfig: - 85 15
+# description: Qpidd is an AMQP broker. It receives, stores, routes and forwards messages using the AMQP protcol.
+# processname: qpidd
+
+prog=qpidd
+lockfile=/var/lock/subsys/$prog
+pidfile=/var/run/qpidd.pid
+
+# The following variables can be overridden in @sysconfdir@/sysconfig/$prog
+QPID_INIT=@initdir@/$prog
+QPID_BIN=@sbindir@/$prog
+QPID_DATA_DIR=/var/lib/qpidd
+QPID_CONFIG=@confdir@/qpidd.conf
+QPID_HA=@bindir@/qpid-ha
+QPID_HA_OPTIONS="--config $QPID_CONFIG"
+
+# Source configuration
+test -f @sysconfdir@/sysconfig/$prog && source @sysconfdir@/sysconfig/$prog
+source /etc/rc.d/init.d/functions
+
+# Data dir: respect the config file if set.
+grep -q '^ *data-dir *=' $QPID_CONFIG || QPIDD_OPTIONS="$QPIDD_OPTIONS --data-dir=$QPID_DATA_DIR"
+
+# Check for HA configuration
+if grep -iq '^ *ha-cluster *= *\(true\|on\|1\|yes\)' $QPID_CONFIG; then
+    # HA is configured, do some extra checks.
+    test -x  $QPID_HA || { echo "HA configured but $QPID_HA not found"; return 5; }
+
+    ha_ping() {	$QPID_HA $QPID_HA_OPTIONS ping >/dev/null 2>&1; }
+
+    ha_allow_stop() {
+        # Primary script does not stop backup brokers and vice versa.
+	if $QPID_HA $QPID_HA_OPTIONS status --is-primary 2>&1 > /dev/null; then
+	    [ "$1" = primary ] || { echo -n "stop primary broker with 'qpidd-primary stop'"; return 1; }
+	else
+	    [ "$1" = primary ] && { echo -n "stop backup broker with 'qpidd stop'"; return 1; }
+	fi
+	return 0
+    }
+else
+    # No HA configuration, HA checks are no-ops.
+    ha_ping() { true; }
+    ha_allow_stop() { true; }
+fi
+
+# Check presence of executables/scripts
+for f in $QPID_BIN; do
+    test -x $f || { echo "$f not found or not executable"; exit 5; }
+done
+
+RETVAL=0
+
+# Ensure user has sufficient permissions
+runuser -s /bin/sh qpidd -c "echo x > /dev/null" 2> /dev/null || RETVAL=4
+if [ $RETVAL = 4 ]; then
+    echo "user had insufficient privilege";
+    exit $RETVAL
+fi
+
+do_status() {
+    # Check PID file and ping for liveness
+    MESSAGE=$(status -p $pidfile $prog) && {
+	ha_ping || return 1
+    }
+    RC=$?
+    echo $MESSAGE
+    return $RC
+}
+
+FLOCK_FD=9
+# Ensure no concurrent start/stop of services.
+lock() {
+    [ "$QPID_HA_LOCK_HELD" ] || { # Held by caller
+	exec 9< $QPID_INIT
+	flock $FLOCK_FD
+    }
+}
+
+start() {
+    lock
+    echo -n $"Starting Qpid AMQP daemon: "
+    touch $pidfile
+    chown qpidd.qpidd $pidfile
+    [ -x /sbin/restorecon ] && /sbin/restorecon $pidfile
+    daemon --pidfile $pidfile --check $prog --user qpidd $QPID_BIN --config $QPID_CONFIG --daemon $QPIDD_OPTIONS --close-fd $FLOCK_FD --pidfile $pidfile
+    RETVAL=$?
+    echo
+    [ $RETVAL = 0 ] && touch $lockfile
+    return $RETVAL
+}
+
+stop() {
+    lock
+    if ha_allow_stop $1; then
+	echo -n $"Stopping Qpid AMQP daemon: "
+	killproc -p ${pidfile} $prog
+	RETVAL=$?
+	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
+    fi
+    [ "$RETVAL" = 0 ] && success
+    echo
+    return $RETVAL
+}
+
+
+reload() {
+    echo 1>&2 $"$0: reload not supported"
+    return 3
+}
+
+restart() {
+    stop && start
+}
+
+# See how we were called.
+case "$1" in
+    start|stop|restart|reload)
+	$1 $2
+	;;
+    status)
+	do_status
+	RETVAL=$?
+	;;
+    force-reload)
+	restart
+	;;
+    try-restart|condrestart)
+	[ -e $lockfile ] && restart || :
+	;;
+    *)
+	echo 1>&2 $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|force-reload}"
+	exit 2
+esac
+
+exit $RETVAL

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/qpidd-primary.in
----------------------------------------------------------------------
diff --git a/etc/qpidd-primary.in b/etc/qpidd-primary.in
deleted file mode 100755
index 86bc76d..0000000
--- a/etc/qpidd-primary.in
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-#
-#
-# qpidd        Startup script for the Qpid messaging daemon.
-#
-
-### BEGIN INIT INFO
-# Provides: qpidd-primary
-# Required-Start: $qpidd
-# Required-Stop: $qpidd
-# Default-Start:
-# Default-Stop: 0 1 2 3 4 5 6
-# Short-Description: promote qpidd to cluster primary
-# Description: Qpidd can be run in an active/passive cluster. Promote a running qpidd to primary.
-### END INIT INFO
-
-# chkconfig: - 85 15
-# description: Qpidd can be run in an active/passive cluster. Promote a running qpidd to primary.
-# processname: qpidd
-
-prog=qpidd
-
-# The following variables can be overridden in @sysconfdir@/sysconfig/$prog
-QPID_INIT=@initdir@/$prog
-QPID_CONFIG=@confdir@/qpidd.conf
-QPID_HA=@bindir@/qpid-ha
-QPID_HA_OPTIONS="--config $QPID_CONFIG"
-
-# Source configuration
-test -f @sysconfdir@/sysconfig/$prog && source @sysconfdir@/sysconfig/$prog
-source /etc/rc.d/init.d/functions
-
-# Check presence of executables/scripts
-for f in $QPID_INIT $QPID_HA; do
-    test -x $f || { echo "$f not found or not executable"; exit 5; }
-done
-
-QPID_HA="$QPID_HA $QPID_HA_OPTIONS"
-
-RETVAL=0
-
-status() {
-    if $QPID_HA status --is-primary ; then
-	echo "qpidd is primary"
-    else
-	echo "qpidd is not primary"
-	return 1
-    fi
-}
-
-# Ensure no concurrent start/stop of services.
-lock() {
-    export QPID_HA_LOCK_HELD=1	# For calls to the qpidd script
-    exec 9< $QPID_INIT
-    flock 9
-}
-
-start() {
-    lock
-    $QPID_INIT start primary || return $?
-    echo -n $"Promoting to primary: "
-    err=$($QPID_HA promote --cluster-manager 2>&1)
-    RETVAL=$?
-    [ $RETVAL = 0 ] && success || { echo -n "$err: "; failure; }
-    echo
-    return $RETVAL
-}
-
-stop() {
-    $QPID_INIT stop primary
-}
-
-reload() {
-    echo 1>&2 $"$0: reload not supported"
-    return 3
-}
-
-restart() {
-    stop && start
-}
-
-# See how we were called.
-case "$1" in
-    start|stop|status|restart|reload)
-	$1
-	RETVAL=$?
-	;;
-    force-reload)
-	restart
-	;;
-    *)
-	echo 1>&2 $"Usage: $0 {start|stop|status|restart|force-reload}"
-	exit 2
-esac
-
-exit $RETVAL

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/88d08be3/etc/qpidd.in
----------------------------------------------------------------------
diff --git a/etc/qpidd.in b/etc/qpidd.in
deleted file mode 100755
index d363308..0000000
--- a/etc/qpidd.in
+++ /dev/null
@@ -1,168 +0,0 @@
-#!/usr/bin/env bash
-#
-# 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.
-#
-#
-# qpidd        Startup script for the Qpid messaging daemon.
-#
-
-### BEGIN INIT INFO
-# Provides: qpidd
-# Required-Start: $local_fs
-# Required-Stop: $local_fs
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: start or stop qpidd
-# Description: Qpidd is an AMQP broker. It receives, stores, routes and	forwards messages using the AMQP protcol.
-### END INIT INFO
-
-# chkconfig: - 85 15
-# description: Qpidd is an AMQP broker. It receives, stores, routes and forwards messages using the AMQP protcol.
-# processname: qpidd
-
-prog=qpidd
-lockfile=/var/lock/subsys/$prog
-pidfile=/var/run/qpidd.pid
-
-# The following variables can be overridden in @sysconfdir@/sysconfig/$prog
-QPID_INIT=@initdir@/$prog
-QPID_BIN=@sbindir@/$prog
-QPID_DATA_DIR=/var/lib/qpidd
-QPID_CONFIG=@confdir@/qpidd.conf
-QPID_HA=@bindir@/qpid-ha
-QPID_HA_OPTIONS="--config $QPID_CONFIG"
-
-# Source configuration
-test -f @sysconfdir@/sysconfig/$prog && source @sysconfdir@/sysconfig/$prog
-source /etc/rc.d/init.d/functions
-
-# Data dir: respect the config file if set.
-grep -q '^ *data-dir *=' $QPID_CONFIG || QPIDD_OPTIONS="$QPIDD_OPTIONS --data-dir=$QPID_DATA_DIR"
-
-# Check for HA configuration
-if grep -iq '^ *ha-cluster *= *\(true\|on\|1\|yes\)' $QPID_CONFIG; then
-    # HA is configured, do some extra checks.
-    test -x  $QPID_HA || { echo "HA configured but $QPID_HA not found"; return 5; }
-
-    ha_ping() {	$QPID_HA $QPID_HA_OPTIONS ping >/dev/null 2>&1; }
-
-    ha_allow_stop() {
-        # Primary script does not stop backup brokers and vice versa.
-	if $QPID_HA $QPID_HA_OPTIONS status --is-primary 2>&1 > /dev/null; then
-	    [ "$1" = primary ] || { echo -n "stop primary broker with 'qpidd-primary stop'"; return 1; }
-	else
-	    [ "$1" = primary ] && { echo -n "stop backup broker with 'qpidd stop'"; return 1; }
-	fi
-	return 0
-    }
-else
-    # No HA configuration, HA checks are no-ops.
-    ha_ping() { true; }
-    ha_allow_stop() { true; }
-fi
-
-# Check presence of executables/scripts
-for f in $QPID_BIN; do
-    test -x $f || { echo "$f not found or not executable"; exit 5; }
-done
-
-RETVAL=0
-
-# Ensure user has sufficient permissions
-runuser -s /bin/sh qpidd -c "echo x > /dev/null" 2> /dev/null || RETVAL=4
-if [ $RETVAL = 4 ]; then
-    echo "user had insufficient privilege";
-    exit $RETVAL
-fi
-
-do_status() {
-    # Check PID file and ping for liveness
-    MESSAGE=$(status -p $pidfile $prog) && {
-	ha_ping || return 1
-    }
-    RC=$?
-    echo $MESSAGE
-    return $RC
-}
-
-FLOCK_FD=9
-# Ensure no concurrent start/stop of services.
-lock() {
-    [ "$QPID_HA_LOCK_HELD" ] || { # Held by caller
-	exec 9< $QPID_INIT
-	flock $FLOCK_FD
-    }
-}
-
-start() {
-    lock
-    echo -n $"Starting Qpid AMQP daemon: "
-    touch $pidfile
-    chown qpidd.qpidd $pidfile
-    [ -x /sbin/restorecon ] && /sbin/restorecon $pidfile
-    daemon --pidfile $pidfile --check $prog --user qpidd $QPID_BIN --config $QPID_CONFIG --daemon $QPIDD_OPTIONS --close-fd $FLOCK_FD --pidfile $pidfile
-    RETVAL=$?
-    echo
-    [ $RETVAL = 0 ] && touch $lockfile
-    return $RETVAL
-}
-
-stop() {
-    lock
-    if ha_allow_stop $1; then
-	echo -n $"Stopping Qpid AMQP daemon: "
-	killproc -p ${pidfile} $prog
-	RETVAL=$?
-	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
-    fi
-    [ "$RETVAL" = 0 ] && success
-    echo
-    return $RETVAL
-}
-
-
-reload() {
-    echo 1>&2 $"$0: reload not supported"
-    return 3
-}
-
-restart() {
-    stop && start
-}
-
-# See how we were called.
-case "$1" in
-    start|stop|restart|reload)
-	$1 $2
-	;;
-    status)
-	do_status
-	RETVAL=$?
-	;;
-    force-reload)
-	restart
-	;;
-    try-restart|condrestart)
-	[ -e $lockfile ] && restart || :
-	;;
-    *)
-	echo 1>&2 $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|force-reload}"
-	exit 2
-esac
-
-exit $RETVAL


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


[10/14] qpid-cpp git commit: QPID-8128: Remove the Proton version warning and raise the minimum version

Posted by jr...@apache.org.
QPID-8128: Remove the Proton version warning and raise the minimum version


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

Branch: refs/heads/master
Commit: 3b6f718deb0d71e194e9ccdd276caea854c97d5d
Parents: 5d28224
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 16:52:42 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/amqp.cmake | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/3b6f718d/src/amqp.cmake
----------------------------------------------------------------------
diff --git a/src/amqp.cmake b/src/amqp.cmake
index fc97e22..906119c 100644
--- a/src/amqp.cmake
+++ b/src/amqp.cmake
@@ -19,14 +19,11 @@
 
 # Optional AMQP1.0 support. Requires proton toolkit.
 
-find_package(Proton 0.7)
+find_package(Proton 0.16)
 
 set (amqp_default ${amqp_force})
-set (maximum_version 0.18.1)
+
 if (Proton_FOUND)
-    if (Proton_VERSION VERSION_GREATER ${maximum_version})
-        message(WARNING "Qpid proton ${Proton_VERSION} is not a tested version and might not be compatible, ${maximum_version} is highest tested; build may not work")
-    endif (Proton_VERSION VERSION_GREATER ${maximum_version})
     message(STATUS "Qpid proton found, amqp 1.0 support enabled")
     set (amqp_default ON)
     if (Proton_VERSION VERSION_GREATER 0.7)


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


[14/14] qpid-cpp git commit: QPID-7499: Fix a cmake syntax error

Posted by jr...@apache.org.
QPID-7499: Fix a cmake syntax error


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

Branch: refs/heads/master
Commit: 58c0d36310b4c23a009cdbc7ef7a621976e351a2
Parents: 646c3b1
Author: Justin Ross <jr...@apache.org>
Authored: Wed Mar 14 13:28:08 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 13:28:08 2018 -0700

----------------------------------------------------------------------
 src/tests/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/58c0d363/src/tests/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index 4122d9c..9387f41 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -124,7 +124,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/check_dependencies.py.in
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/env.py.in
                ${CMAKE_CURRENT_BINARY_DIR}/env.py @ONLY)
 
-file(GLOB_RECURSE copied_files "*.ps1", "*.py" "*.sh" "*.xml" "run_*")
+file(GLOB_RECURSE copied_files "*.ps1" "*.py" "*.sh" "*.xml" "run_*")
 
 foreach (copied_file ${copied_files})
   file (RELATIVE_PATH file_name ${CMAKE_CURRENT_SOURCE_DIR} ${copied_file})


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


[06/14] qpid-cpp git commit: QPID-8072, QPID-8129: Remove the long deprecated Ruby and Python bindings to QMF2

Posted by jr...@apache.org.
QPID-8072, QPID-8129: Remove the long deprecated Ruby and Python bindings to QMF2


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

Branch: refs/heads/master
Commit: b569b4d6447408c451fc3167af25c41efce81fd1
Parents: b18583a
Author: Justin Ross <jr...@apache.org>
Authored: Mon Mar 12 12:41:15 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 bindings/CMakeLists.txt                       |   2 -
 bindings/qmf2/examples/python/agent.py        | 196 -----
 bindings/qmf2/examples/python/find_agents.py  |  57 --
 bindings/qmf2/examples/ruby/agent_external.rb |  84 --
 bindings/qmf2/examples/ruby/agent_internal.rb |  77 --
 bindings/qmf2/examples/ruby/find_agents.rb    |  63 --
 bindings/qmf2/python/CMakeLists.txt           |  74 --
 bindings/qmf2/python/cqmf2.i                  |  45 -
 bindings/qmf2/python/qmf2.py                  | 937 ---------------------
 bindings/qmf2/ruby/CMakeLists.txt             |  50 --
 bindings/qmf2/ruby/qmf2.rb                    | 857 -------------------
 bindings/qmf2/ruby/ruby.i                     |  37 -
 12 files changed, 2479 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt
index 0195eb2..2152d1d 100644
--- a/bindings/CMakeLists.txt
+++ b/bindings/CMakeLists.txt
@@ -118,7 +118,6 @@ if (SWIG_FOUND)
                       OUTPUT_STRIP_TRAILING_WHITESPACE)
 
       add_subdirectory(qpid/python)
-      add_subdirectory(qmf2/python)
   endif (BUILD_BINDING_PYTHON)
 
   if (BUILD_BINDING_RUBY)
@@ -131,7 +130,6 @@ if (SWIG_FOUND)
       endif (NOT RUBY_PFX_ARCH_DIR)
 
       add_subdirectory(qpid/ruby)
-      add_subdirectory(qmf2/ruby)
   endif (BUILD_BINDING_RUBY)
 
   if (BUILD_BINDING_PERL)

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/examples/python/agent.py
----------------------------------------------------------------------
diff --git a/bindings/qmf2/examples/python/agent.py b/bindings/qmf2/examples/python/agent.py
deleted file mode 100755
index a9f1a14..0000000
--- a/bindings/qmf2/examples/python/agent.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/usr/bin/env python
-
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-import qpid_messaging
-from qmf2 import *
-
-
-class ExampleAgent(AgentHandler):
-  """
-  This example agent is implemented as a single class that inherits AgentHandler.
-  It does not use a separate thread since once set up, it is driven strictly by
-  incoming method calls.
-  """
-
-  def __init__(self, url):
-    ##
-    ## Create and open a messaging connection to a broker.
-    ##
-    self.connection = qpid_messaging.Connection(url, "{reconnect:True}")
-    self.session = None
-    self.connection.open()
-
-    ##
-    ## Create, configure, and open a QMFv2 agent session using the connection.
-    ##
-    self.session = AgentSession(self.connection, "{interval:30}")
-    self.session.setVendor('profitron.com')
-    self.session.setProduct('blastinator')
-    self.session.setAttribute('attr1', 1000)
-    self.session.open()
-
-    ##
-    ## Initialize the parent class.
-    ##
-    AgentHandler.__init__(self, self.session)
-
-
-  def shutdown(self):
-    """
-    Clean up the session and connection.
-    """
-    if self.session:
-      self.session.close()
-    self.connection.close()
-
-
-  def method(self, handle, methodName, args, subtypes, addr, userId):
-    """
-    Handle incoming method calls.
-    """
-    if addr == self.controlAddr:
-      self.control.methodCount += 1
-
-      try:
-        if methodName == "stop":
-          self.session.methodSuccess(handle)
-          self.cancel()
-
-        elif methodName == "echo":
-          handle.addReturnArgument("sequence", args["sequence"])
-          handle.addReturnArgument("map", args["map"])
-          self.session.methodSuccess(handle)
-
-        elif methodName == "event":
-          ev = Data(self.sch_event)
-          ev.text = args['text']
-          self.session.raiseEvent(ev, args['severity'])
-          self.session.methodSuccess(handle)
-
-        elif methodName == "fail":
-          if args['useString']:
-            self.session.raiseException(handle, args['stringVal'])
-          else:
-            ex = Data(self.sch_exception)
-            ex.whatHappened = "It Failed"
-            ex.howBad = 75
-            ex.details = args['details']
-            self.session.raiseException(handle, ex)
-
-        elif methodName == "create_child":
-          name = args['name']
-          child = Data(self.sch_child)
-          child.name = name
-          addr = self.session.addData(child, name)
-          handle.addReturnArgument("childAddr", addr.asMap())
-          self.session.methodSuccess(handle)
-      except BaseException, e:
-        self.session.raiseException(handle, "%r" % e)
-
-
-  def setupSchema(self):
-    """
-    Create and register the schema for this agent.
-    """
-    package = "com.profitron.bntor"
-
-    ##
-    ## Declare a schema for a structured exception that can be used in failed
-    ## method invocations.
-    ##
-    self.sch_exception = Schema(SCHEMA_TYPE_DATA, package, "exception")
-    self.sch_exception.addProperty(SchemaProperty("whatHappened", SCHEMA_DATA_STRING))
-    self.sch_exception.addProperty(SchemaProperty("howBad", SCHEMA_DATA_INT))
-    self.sch_exception.addProperty(SchemaProperty("details", SCHEMA_DATA_MAP))
-
-    ##
-    ## Declare a control object to test methods against.
-    ##
-    self.sch_control = Schema(SCHEMA_TYPE_DATA, package, "control")
-    self.sch_control.addProperty(SchemaProperty("state", SCHEMA_DATA_STRING))
-    self.sch_control.addProperty(SchemaProperty("methodCount", SCHEMA_DATA_INT))
-
-    stopMethod = SchemaMethod("stop", desc="Stop Agent")
-    stopMethod.addArgument(SchemaProperty("message", SCHEMA_DATA_STRING, direction=DIR_IN))
-    self.sch_control.addMethod(stopMethod)
-
-    echoMethod = SchemaMethod("echo", desc="Echo Arguments")
-    echoMethod.addArgument(SchemaProperty("sequence", SCHEMA_DATA_INT, direction=DIR_IN_OUT))
-    echoMethod.addArgument(SchemaProperty("map", SCHEMA_DATA_MAP, direction=DIR_IN_OUT))
-    self.sch_control.addMethod(echoMethod)
-
-    eventMethod = SchemaMethod("event", desc="Raise an Event")
-    eventMethod.addArgument(SchemaProperty("text", SCHEMA_DATA_STRING, direction=DIR_IN))
-    eventMethod.addArgument(SchemaProperty("severity", SCHEMA_DATA_INT, direction=DIR_IN))
-    self.sch_control.addMethod(eventMethod)
-
-    failMethod = SchemaMethod("fail", desc="Expected to Fail")
-    failMethod.addArgument(SchemaProperty("useString", SCHEMA_DATA_BOOL, direction=DIR_IN))
-    failMethod.addArgument(SchemaProperty("stringVal", SCHEMA_DATA_STRING, direction=DIR_IN))
-    failMethod.addArgument(SchemaProperty("details", SCHEMA_DATA_MAP, direction=DIR_IN))
-    self.sch_control.addMethod(failMethod)
-
-    createMethod = SchemaMethod("create_child", desc="Create Child Object")
-    createMethod.addArgument(SchemaProperty("name", SCHEMA_DATA_STRING, direction=DIR_IN))
-    createMethod.addArgument(SchemaProperty("childAddr", SCHEMA_DATA_MAP, direction=DIR_OUT))
-    self.sch_control.addMethod(createMethod)
-
-    ##
-    ## Declare a child object
-    ##
-    self.sch_child = Schema(SCHEMA_TYPE_DATA, package, "child")
-    self.sch_child.addProperty(SchemaProperty("name", SCHEMA_DATA_STRING))
-
-    ##
-    ## Declare the event class
-    ##
-    self.sch_event = Schema(SCHEMA_TYPE_EVENT, package, "event")
-    self.sch_event.addProperty(SchemaProperty("text", SCHEMA_DATA_STRING))
-
-    ##
-    ## Register our schemata with the agent session.
-    ##
-    self.session.registerSchema(self.sch_exception)
-    self.session.registerSchema(self.sch_control)
-    self.session.registerSchema(self.sch_child)
-    self.session.registerSchema(self.sch_event)
-
-
-  def populateData(self):
-    """
-    Create a control object and give it to the agent session to manage.
-    """
-    self.control = Data(self.sch_control)
-    self.control.state = "OPERATIONAL"
-    self.control.methodCount = 0
-    self.controlAddr = self.session.addData(self.control, "singleton")
-
-
-try:
-  agent = ExampleAgent("localhost")
-  agent.setupSchema()
-  agent.populateData()
-  agent.run()  # Use agent.start() to launch the agent in a separate thread
-  agent.shutdown()
-except Exception, e:
-  print "Exception Caught:", e
-
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/examples/python/find_agents.py
----------------------------------------------------------------------
diff --git a/bindings/qmf2/examples/python/find_agents.py b/bindings/qmf2/examples/python/find_agents.py
deleted file mode 100644
index 852f23f..0000000
--- a/bindings/qmf2/examples/python/find_agents.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-import qpid_messaging
-import qmf2
-
-class FindAgents(qmf2.ConsoleHandler):
-
-  def __init__(self, session):
-    qmf2.ConsoleHandler.__init__(self, session)
-
-  def agentAdded(self, agent):
-    print "Agent Added: %r" % agent
-
-  def agentDeleted(self, agent, reason):
-    print "Agent Deleted: %r reason: %s" % (agent, reason)
-
-  def agentRestarted(self, agent):
-    print "Agent Restarted: %r" % agent
-
-  def agentSchemaUpdated(self, agent):
-    print "Agent Schema Updated: %r" % agent
-
-  def eventRaised(self, agent, data, timestamp, severity):
-    print "Event: data=%r time=%d sev=%d" % (data.getProperties(), timestamp, severity)
-
-
-
-url     = "localhost"
-options = ""
-
-connection = qpid_messaging.Connection(url, options)
-connection.open()
-
-session = qmf2.ConsoleSession(connection)
-session.open()
-session.setAgentFilter("[]")
-
-main = FindAgents(session)
-main.run()
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/examples/ruby/agent_external.rb
----------------------------------------------------------------------
diff --git a/bindings/qmf2/examples/ruby/agent_external.rb b/bindings/qmf2/examples/ruby/agent_external.rb
deleted file mode 100644
index 7517193..0000000
--- a/bindings/qmf2/examples/ruby/agent_external.rb
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# 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.
-#
-
-require 'cqpid'
-require 'qmf2'
-
-class MyAgent < Qmf2::AgentHandler
-
-  def initialize(session, data)
-    super(session)
-    @data = data
-  end
-
-  def authorize_query(query, user_id)
-    puts "Authorizing #{user_id}"
-    return true
-  end
-
-  def get_query(context, query, user_id)
-    puts "Get Query"
-    context.response(@data)
-    context.complete
-  end
-
-  def method_call(context, method_name, data_addr, args, user_id)
-    puts "Method: #{method_name}"
-    context._success
-  end
-
-end
-
-
-class Program
-
-  def initialize(url)
-    @url = url
-    @sess_options = "{allow-queries:False, external:True}"
-  end
-
-  def setup_schema(agent)
-    @cls_control = Qmf2::Schema.new(Qmf2::SCHEMA_TYPE_DATA, "org.package", "control")
-    @cls_control.add_property(Qmf2::SchemaProperty.new("state", Qmf2::SCHEMA_DATA_STRING))
-    agent.register_schema(@cls_control)
-  end
-
-  def run
-    connection = Cqpid::Connection.new(@url)
-    connection.open
-
-    session = Qmf2::AgentSession.new(connection, @sess_options)
-    session.set_vendor("package.org")
-    session.set_product("external_agent")
-    setup_schema(session)
-    session.open
-
-    @control = Qmf2::Data.new(@cls_control)
-    @control.state = "OPERATIONAL-EXTERNAL"
-    @control.set_addr(Qmf2::DataAddr.new("singleton"))
-
-    main = MyAgent.new(session, @control)
-    main.run
-  end
-end
-
-prog = Program.new("localhost")
-prog.run
-
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/examples/ruby/agent_internal.rb
----------------------------------------------------------------------
diff --git a/bindings/qmf2/examples/ruby/agent_internal.rb b/bindings/qmf2/examples/ruby/agent_internal.rb
deleted file mode 100644
index fc49a88..0000000
--- a/bindings/qmf2/examples/ruby/agent_internal.rb
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# 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.
-#
-
-require 'cqpid'
-require 'qmf2'
-
-class MyAgent < Qmf2::AgentHandler
-
-  def initialize(session)
-    super(session)
-  end
-
-  def authorize_query(query, user_id)
-    puts "Authorizing #{user_id}"
-    return true
-  end
-
-  def method_call(context, method_name, data_addr, args, user_id)
-    puts "Method: #{method_name}"
-    context._success
-  end
-
-end
-
-
-class Program
-
-  def initialize(url)
-    @url = url
-    @sess_options = "{allow-queries:False}"
-  end
-
-  def setup_schema(agent)
-    @cls_control = Qmf2::Schema.new(Qmf2::SCHEMA_TYPE_DATA, "org.package", "control")
-    @cls_control.add_property(Qmf2::SchemaProperty.new("state", Qmf2::SCHEMA_DATA_STRING))
-    agent.register_schema(@cls_control)
-  end
-
-  def run
-    connection = Cqpid::Connection.new(@url)
-    connection.open
-
-    session = Qmf2::AgentSession.new(connection, @sess_options)
-    session.set_vendor("package.org")
-    session.set_product("internal_agent")
-    setup_schema(session)
-    session.open
-
-    control = Qmf2::Data.new(@cls_control)
-    control.state = "OPERATIONAL"
-    session.add_data(control)
-
-    main = MyAgent.new(session)
-    main.run
-  end
-end
-
-prog = Program.new("localhost")
-prog.run
-
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/examples/ruby/find_agents.rb
----------------------------------------------------------------------
diff --git a/bindings/qmf2/examples/ruby/find_agents.rb b/bindings/qmf2/examples/ruby/find_agents.rb
deleted file mode 100644
index 41de7e5..0000000
--- a/bindings/qmf2/examples/ruby/find_agents.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# 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.
-#
-
-require 'cqpid'
-require 'qmf2'
-
-class FindAgents < Qmf2::ConsoleHandler
-
-  def initialize(session)
-    super(session)
-  end
-
-  def agent_added(agent)
-    puts "Agent Added: #{agent.name}"
-  end
-
-  def agent_deleted(agent, reason)
-    puts "Agent Deleted: #{agent.to_s} reason: #{reason}"
-  end
-
-  def agent_restarted(agent)
-    puts "Agent Restarted: #{agent.to_s} epoch: #{agent.epoch}"
-  end
-
-  def agent_schema_updated(agent)
-    puts "Agent with new Schemata: #{agent.to_s}"
-  end
-
-  def event_raised(agent, data, timestamp, severity)
-    puts "Event Raised time=#{timestamp} sev=#{severity} data=#{data.properties}"
-  end
-end
-
-
-url     = "localhost"
-options = ""
-
-connection = Cqpid::Connection.new(url, options)
-connection.open
-
-session = Qmf2::ConsoleSession.new(connection)
-session.open
-session.set_agent_filter("[]")
-
-main = FindAgents.new(session)
-main.run
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/python/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/bindings/qmf2/python/CMakeLists.txt b/bindings/qmf2/python/CMakeLists.txt
deleted file mode 100644
index 2ab1d7d..0000000
--- a/bindings/qmf2/python/CMakeLists.txt
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# 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 Swig to generate a literal binding to the C++ API
-##------------------------------------------------------
-
-# NB For python the SWIG module name must have the same name as the input .i file for CMake to generate the
-# correct dependencies
-
-set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cqmf2.i PROPERTIES
-    CPLUSPLUS ON
-    SWIG_FLAGS "-I${qpid-cpp_SOURCE_DIR}/include;-I${qpid-cpp_SOURCE_DIR}/bindings")
-
-list(APPEND SWIG_MODULE_cqmf2_EXTRA_DEPS
-    ${CMAKE_SOURCE_DIR}/include/qmf/qmf2.i
-    ${CMAKE_SOURCE_DIR}/include/qpid/swig_python_typemaps.i
-)
-swig_add_library(cqmf2 LANGUAGE python SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/cqmf2.i)
-swig_link_libraries(cqmf2 qmf2 qpidmessaging qpidtypes ${PYTHON_LIBRARIES})
-
-set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "${NOSTRICT_ALIASING}")
-include_directories(${PYTHON_INCLUDE_PATH}
-                    ${qpid-cpp_SOURCE_DIR}/include
-                    ${qpid-cpp_SOURCE_DIR}/bindings)
-
-# Move source into binary dir so compiled .pyc,pyo files will be in binary dir.
-# NOTE: not using the file(COPY) command as it is not available in cmake 2.6
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/qmf2.py" "${CMAKE_CURRENT_BINARY_DIR}" COPYONLY)
-
-# Python compile the modules
-install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile cqmf2.py
-                              WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
-install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile cqmf2.py
-                              WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
-install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile qmf2.py
-                              WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
-install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile qmf2.py
-                              WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})")
-##------------------------------------
-## Install the complete Python binding
-##------------------------------------
-install(FILES
-  ${CMAKE_CURRENT_BINARY_DIR}/cqmf2.py
-  ${CMAKE_CURRENT_BINARY_DIR}/cqmf2.pyc
-  ${CMAKE_CURRENT_BINARY_DIR}/cqmf2.pyo
-  ${CMAKE_CURRENT_SOURCE_DIR}/qmf2.py
-  ${CMAKE_CURRENT_BINARY_DIR}/qmf2.pyc
-  ${CMAKE_CURRENT_BINARY_DIR}/qmf2.pyo
-  DESTINATION ${PYTHON_SITEARCH_PACKAGES}
-  COMPONENT ${QPID_COMPONENT_CLIENT}
-  )
-
-install(TARGETS ${SWIG_MODULE_cqmf2_REAL_NAME}
-        DESTINATION ${PYTHON_SITEARCH_PACKAGES}
-        COMPONENT ${QPID_COMPONENT_CLIENT}
-        )
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/python/cqmf2.i
----------------------------------------------------------------------
diff --git a/bindings/qmf2/python/cqmf2.i b/bindings/qmf2/python/cqmf2.i
deleted file mode 100644
index b8d25b7..0000000
--- a/bindings/qmf2/python/cqmf2.i
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.
- */
-
-%module cqmf2
-%include "std_string.i"
-%include "qpid/swig_python_typemaps.i"
-
-/* Define the general-purpose exception handling */
-%exception {
-    bool failed = true;
-    std::string error;
-    Py_BEGIN_ALLOW_THREADS;
-    try {
-        $action
-        failed = false;
-    } catch (qpid::types::Exception& ex) {
-        error = ex.what();
-    }
-    Py_END_ALLOW_THREADS;
-    if (failed) {
-        if (!error.empty()) {
-            PyErr_SetString(PyExc_RuntimeError, error.c_str());
-        }
-        SWIG_fail;
-    }
-}
-
-%include "qmf/qmf2.i"
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/python/qmf2.py
----------------------------------------------------------------------
diff --git a/bindings/qmf2/python/qmf2.py b/bindings/qmf2/python/qmf2.py
deleted file mode 100644
index 601e68f..0000000
--- a/bindings/qmf2/python/qmf2.py
+++ /dev/null
@@ -1,937 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-import warnings
-warnings.warn("The qmf2 module is deprecated.  It will be removed in the future.",
-              Warning, stacklevel=2)
-
-import cqmf2
-import qpid_messaging
-from threading import Thread
-import time
-
-#===================================================================================================
-# CONSTANTS
-#===================================================================================================
-SCHEMA_TYPE_DATA  = cqmf2.SCHEMA_TYPE_DATA
-SCHEMA_TYPE_EVENT = cqmf2.SCHEMA_TYPE_EVENT
-
-SCHEMA_DATA_VOID   = cqmf2.SCHEMA_DATA_VOID
-SCHEMA_DATA_BOOL   = cqmf2.SCHEMA_DATA_BOOL
-SCHEMA_DATA_INT    = cqmf2.SCHEMA_DATA_INT
-SCHEMA_DATA_FLOAT  = cqmf2.SCHEMA_DATA_FLOAT
-SCHEMA_DATA_STRING = cqmf2.SCHEMA_DATA_STRING
-SCHEMA_DATA_MAP    = cqmf2.SCHEMA_DATA_MAP
-SCHEMA_DATA_LIST   = cqmf2.SCHEMA_DATA_LIST
-SCHEMA_DATA_UUID   = cqmf2.SCHEMA_DATA_UUID
-
-ACCESS_READ_CREATE = cqmf2.ACCESS_READ_CREATE
-ACCESS_READ_WRITE  = cqmf2.ACCESS_READ_WRITE
-ACCESS_READ_ONLY   = cqmf2.ACCESS_READ_ONLY
-
-DIR_IN     = cqmf2.DIR_IN
-DIR_OUT    = cqmf2.DIR_OUT
-DIR_IN_OUT = cqmf2.DIR_IN_OUT
-
-SEV_EMERG  = cqmf2.SEV_EMERG
-SEV_ALERT  = cqmf2.SEV_ALERT
-SEV_CRIT   = cqmf2.SEV_CRIT
-SEV_ERROR  = cqmf2.SEV_ERROR
-SEV_WARN   = cqmf2.SEV_WARN
-SEV_NOTICE = cqmf2.SEV_NOTICE
-SEV_INFORM = cqmf2.SEV_INFORM
-SEV_DEBUG  = cqmf2.SEV_DEBUG
-
-QUERY_OBJECT    = cqmf2.QUERY_OBJECT
-QUERY_OBJECT_ID = cqmf2.QUERY_OBJECT_ID
-QUERY_SCHEMA    = cqmf2.QUERY_SCHEMA
-QUERY_SCHEMA_ID = cqmf2.QUERY_SCHEMA_ID
-
-
-#===================================================================================================
-# EXCEPTIONS
-#===================================================================================================
-class QmfAgentException(Exception):
-  """
-  This exception class represents an exception that was raised by a remote agent and propagated
-  to a console via QMFv2.
-  """
-  def __init__(self, data):
-    self.value = data
-
-  def __str__(self):
-    return "From Remote Agent: %r" % self.value.getProperties()
-
-
-#===================================================================================================
-# AGENT HANDLER
-#===================================================================================================
-class AgentHandler(Thread):
-  """
-  Agent applications can create a subclass of AgentHandler to handle asynchronous events (like
-  incoming method calls) that occur on the agent session.  AgentHandler contains a thread on which
-  the handler callbacks are invoked.
-
-  There are two ways to operate the handler:  Cause it to start its own thread by calling
-  start() and later stop it by calling cancel(); and directly calling run() to operate it on the
-  main thread.
-
-  Example Usage:
-
-      class MyAgentHandler(qmf2.AgentHandler):
-          def __init__(self, agentSession):
-              qmf2.AgentHandler.__init__(self, agentSession)
-          def method(self, handle, methodName, args, subtypes, addr, userId):
-              ...method handling code goes here...
-              For success, add output arguments:
-                  handle.addReturnArgument("argname", argvalue)
-                  ...
-                  self.agent.methodSuccess(handle)
-              For failure, raise an exception:
-                  self.agent.raiseException(handle, "error text")
-              Or, if you have created a schema for a structured exception:
-                  ex = qmf2.Data(exceptionSchema)
-                  ex.whatHappened = "it failed"
-                  ex.howBad = 84
-                  ex.detailMap = {}
-                  ...
-                  self.agent.raiseException(handle, ex)
-  """
-
-  def __init__(self, agentSession):
-    Thread.__init__(self)
-    self.__agent = agentSession
-    self.__running = True
-
-  def cancel(self):
-    """
-    Stop the handler thread.
-    """
-    self.__running = None
-
-  def run(self):
-    event = cqmf2.AgentEvent()
-    while self.__running:
-      valid = self.__agent._impl.nextEvent(event, qpid_messaging.Duration.SECOND)
-      if valid and self.__running:
-        if event.getType() == cqmf2.AGENT_METHOD:
-          self.method(event, event.getMethodName(), event.getArguments(), event.getArgumentSubtypes(),
-                      DataAddr(event.getDataAddr()), event.getUserId())
-
-  def method(self, handle, methodName, args, subtypes, addr, userId):
-    """
-    Override this method to create your own method handler.
-    """
-    pass
-
-
-#===================================================================================================
-# CONSOLE HANDLER
-#===================================================================================================
-class ConsoleHandler(Thread):
-
-  def __init__(self, consoleSession):
-    Thread.__init__(self)
-    self.__session = consoleSession
-    self.__running = True
-
-  def cancel(self):
-    """
-    Stop the handler thread.
-    """
-    self.__running = None
-
-  def run(self):
-    event = cqmf2.ConsoleEvent()
-    while self.__running:
-      valid = self.__session._impl.nextEvent(event, qpid_messaging.Duration.SECOND)
-      if valid and self.__running:
-        if event.getType() == cqmf2.CONSOLE_AGENT_ADD:
-          self.agentAdded(Agent(event.getAgent()))
-
-        elif event.getType() == cqmf2.CONSOLE_AGENT_DEL:
-          reason = 'filter'
-          if event.getAgentDelReason() == cqmf2.AGENT_DEL_AGED:
-            reason = 'aged'
-          self.agentDeleted(Agent(event.getAgent()), reason)
-
-        elif event.getType() == cqmf2.CONSOLE_AGENT_RESTART:
-          self.agentRestarted(Agent(event.getAgent()))
-
-        elif event.getType() == cqmf2.CONSOLE_AGENT_SCHEMA_UPDATE:
-          self.agentSchemaUpdated(Agent(event.getAgent()))
-
-        elif event.getType() == cqmf2.CONSOLE_EVENT:
-          self.eventRaised(Agent(event.getAgent()), Data(event.getData(0)), event.getTimestamp(), event.getSeverity())
-
-  ##
-  ## The following methods are intended to be overridden in a sub-class.  They are
-  ## handlers for events that occur on QMF consoles.
-  ##
-
-  #
-  # A new agent, whose attributes match the console's agent filter, has been discovered.
-  #
-  def agentAdded(self, agent):
-    pass
-
-  #
-  # A known agent has been removed from the agent list.  There are two possible reasons
-  # for agent deletion:
-  #
-  #    1) 'aged'   - The agent hasn't been heard from for the maximum age interval and is
-  #                  presumed dead.
-  #    2) 'filter' - The agent no longer matches the console's agent-filter and has been
-  #                  effectively removed from the agent list.  Such occurrences are likely
-  #                  to be seen immediately after setting the filter to a new value.
-  #
-  def agentDeleted(self, agent, reason):
-    pass
-
-  #
-  # An agent-restart was detected.  This occurs when the epoch number advertised by the
-  # agent changes.  It indicates that the agent in question was shut-down/crashed and
-  # restarted.
-  #
-  def agentRestarted(self, agent):
-    pass
-
-  #
-  # The agent has registered new schema information which can now be queried, if desired.
-  #
-  def agentSchemaUpdated(self, agent):
-    pass
-
-  #
-  # An agent raised an event.  The 'data' argument is a Data object that contains the
-  # content of the event.
-  #
-  def eventRaised(self, agent, data, timestamp, severity):
-    pass
-
-
-#===================================================================================================
-# CONSOLE SESSION
-#===================================================================================================
-class ConsoleSession(object):
-  """
-  """
-
-  def __init__(self, connection, options=""):
-    """
-    ## The options string is of the form "{key:value,key:value}".  The following keys are supported:
-    ##
-    ##    domain:NAME                   - QMF Domain to join [default: "default"]
-    ##    max-agent-age:N               - Maximum time, in minutes, that we will tolerate not hearing from
-    ##                                    an agent before deleting it [default: 5]
-    ##    listen-on-direct:{True,False} - If True:  Listen on legacy direct-exchange address for backward compatibility [default]
-    ##                                    If False: Listen only on the routable direct address
-    ##    strict-security:{True,False}  - If True:  Cooperate with the broker to enforce strict access control to the network
-    ##                                  - If False: Operate more flexibly with regard to use of messaging facilities [default]
-    ##
-    """
-    self._impl = cqmf2.ConsoleSession(connection, options)
-
-  def setDomain(self, domain):
-    """
-    """
-    self._impl.setDomain(domain)
-
-  def setAgentFilter(self, filt):
-    """
-    """
-    self._impl.setAgentFilter(filt)
-
-  def open(self):
-    """
-    """
-    self._impl.open()
-
-  def close(self):
-    """
-    """
-    self._impl.close()
-
-  def getAgents(self):
-    """
-    """
-    result = []
-    count = self._impl.getAgentCount()
-    for i in range(count):
-      result.append(Agent(self._impl.getAgent(i)))
-    return result
-
-  def getConnectedBrokerAgent(self):
-    """
-    """
-    return Agent(self._impl.getConnectedBrokerAgent())
-
-  ## TODO: Async methods
-
-#===================================================================================================
-# AGENT SESSION
-#===================================================================================================
-class AgentSession(object):
-  """
-  """
-
-  def __init__(self, connection, options=""):
-    """
-    ## The options string is of the form "{key:value,key:value}".  The following keys are supported:
-    ##
-    ##    interval:N                 - Heartbeat interval in seconds [default: 60]
-    ##    external:{True,False}      - Use external data storage (queries and subscriptions are pass-through) [default: False]
-    ##    allow-queries:{True,False} - If True:  automatically allow all queries [default]
-    ##                                 If False: generate an AUTH_QUERY event to allow per-query authorization
-    ##    allow-methods:{True,False} - If True:  automatically allow all methods [default]
-    ##                                 If False: generate an AUTH_METHOD event to allow per-method authorization
-    ##    max-subscriptions:N        - Maximum number of concurrent subscription queries permitted [default: 64]
-    ##    min-sub-interval:N         - Minimum publish interval (in milliseconds) permitted for a subscription [default: 3000]
-    ##    sub-lifetime:N             - Lifetime (in seconds with no keepalive) for a subscription [default: 300]
-    ##    public-events:{True,False} - If True:  QMF events are sent to the topic exchange [default]
-    ##                                 If False: QMF events are only sent to authorized subscribers
-    ##    listen-on-direct:{True,False} - If True:  Listen on legacy direct-exchange address for backward compatibility [default]
-    ##                                    If False: Listen only on the routable direct address
-    ##    strict-security:{True,False}  - If True:  Cooperate with the broker to enforce strict access control to the network
-    ##                                  - If False: Operate more flexibly with regard to use of messaging facilities [default]
-    ##
-    """
-    self._impl = cqmf2.AgentSession(connection, options)
-
-  def setDomain(self, domain):
-    """
-    """
-    self._impl.setDomain(domain)
-
-  def setVendor(self, val):
-    """
-    """
-    self._impl.setVendor(val)
-
-  def setProduct(self, val):
-    """
-    """
-    self._impl.setProduct(val)
-
-  def setInstance(self, val):
-    """
-    """
-    self._impl.setInstance(val)
-
-  def setAttribute(self, key, val):
-    """
-    """
-    self._impl.setAttribute(key, val)
-
-  def open(self):
-    """
-    """
-    self._impl.open()
-
-  def close(self):
-    """
-    """
-    self._impl.close()
-
-  def registerSchema(self, schema):
-    """
-    """
-    self._impl.registerSchema(schema._impl)
-
-  def addData(self, data, name="", persistent=False):
-    """
-    """
-    return DataAddr(self._impl.addData(data._impl, name, persistent))
-
-  def delData(self, addr):
-    """
-    """
-    self._impl.delData(addr._impl)
-
-  def methodSuccess(self, handle):
-    """
-    """
-    self._impl.methodSuccess(handle)
-
-  def raiseException(self, handle, data):
-    """
-    """
-    if data.__class__ == Data:
-      self._impl.raiseException(handle, data._impl)
-    else:
-      self._impl.raiseException(handle, data)
-
-  def raiseEvent(self, data, severity=None):
-    """
-    """
-    if not severity:
-      self._impl.raiseEvent(data._impl)
-    else:
-      if (severity.__class__ != int and severity.__class__ != long) or severity < 0 or severity > 7:
-        raise Exception("Severity must be an int between 0..7")
-      self._impl.raiseEvent(data._impl, severity);
-
-
-#===================================================================================================
-# AGENT PROXY
-#===================================================================================================
-class Agent(object):
-  """
-  """
-
-  def __init__(self, impl):
-    self._impl = impl
-
-  def __repr__(self):
-    return self.getName()
-
-  def getName(self):
-    """
-    """
-    return self._impl.getName()
-
-  def getEpoch(self):
-    """
-    """
-    return self._impl.getEpoch()
-
-  def getVendor(self):
-    """
-    """
-    return self._impl.getVendor()
-
-  def getProduct(self):
-    """
-    """
-    return self._impl.getProduct()
-
-  def getInstance(self):
-    """
-    """
-    return self._impl.getInstance()
-
-  def getAttributes(self):
-    """
-    """
-    return self._impl.getAttributes()
-
-  def query(self, q, timeout=30):
-    """
-    """
-    if q.__class__ == Query:
-      q_arg = q._impl
-    else:
-      q_arg = q
-    dur = qpid_messaging.Duration(qpid_messaging.Duration.SECOND.getMilliseconds() * timeout)
-    result = self._impl.query(q_arg, dur)
-    if result.getType() == cqmf2.CONSOLE_EXCEPTION:
-      raise Exception(Data(result.getData(0)))
-    if result.getType() != cqmf2.CONSOLE_QUERY_RESPONSE:
-      raise Exception("Protocol error, expected CONSOLE_QUERY_RESPONSE, got %d" % result.getType())
-    dataList = []
-    count = result.getDataCount()
-    for i in range(count):
-      dataList.append(Data(result.getData(i)))
-    return dataList
-
-  def loadSchemaInfo(self, timeout=30):
-    """
-    """
-    dur = qpid_messaging.Duration(qpid_messaging.Duration.SECOND.getMilliseconds() * timeout)
-    self._impl.querySchema(dur)
-
-  def getPackages(self):
-    """
-    """
-    result = []
-    count = self._impl.getPackageCount()
-    for i in range(count):
-      result.append(self._impl.getPackage(i))
-    return result
-
-  def getSchemaIds(self, package):
-    """
-    """
-    result = []
-    count = self._impl.getSchemaIdCount(package)
-    for i in range(count):
-      result.append(SchemaId(self._impl.getSchemaId(package, i)))
-    return result
-
-  def getSchema(self, schemaId, timeout=30):
-    """
-    """
-    dur = qpid_messaging.Duration(qpid_messaging.Duration.SECOND.getMilliseconds() * timeout)
-    return Schema(self._impl.getSchema(schemaId._impl, dur))
-
-  ## TODO: Async query
-  ## TODO: Agent method
-
-#===================================================================================================
-# QUERY
-#===================================================================================================
-class Query(object):
-  """
-  """
-
-  def __init__(self, arg1, arg2=None, arg3=None, *kwargs):
-    """
-    """
-    if arg1.__class__ == DataAddr:
-      self._impl = cqmf2.Query(arg1._impl)
-
-  def getAddr(self):
-    """
-    """
-    return DataAddr(self._impl.getDataAddr())
-
-  def getSchemaId(self):
-    """
-    """
-    return SchemaId(self._impl.getSchemaId())
-
-  def getPredicate(self):
-    """
-    """
-    return self._impl.getPredicate()
-
-  def matches(self, data):
-    """
-    """
-    m = data
-    if data.__class__ == Data:
-      m = data.getProperties()
-    return self._impl.matchesPredicate(m)
-
-#===================================================================================================
-# DATA
-#===================================================================================================
-class Data(object):
-  """
-  """
-
-  def __init__(self, arg=None):
-    """
-    """
-    if arg == None:
-      self._impl = cqmf2.Data()
-    elif arg.__class__ == cqmf2.Data:
-      self._impl = arg
-    elif arg.__class__ == Schema:
-      self._impl = cqmf2.Data(arg._impl)
-    else:
-      raise Exception("Unsupported initializer for Data")
-    self._schema = None
-
-  def getSchemaId(self):
-    """
-    """
-    if self._impl.hasSchema():
-      return SchemaId(self._impl.getSchemaId())
-    return None
-
-  def getAddr(self):
-    """
-    """
-    if self._impl.hasAddr():
-      return DataAddr(self._impl.getAddr())
-    return None
-
-  def getAgent(self):
-    """
-    """
-    return Agent(self._impl.getAgent())
-
-  def update(self, timeout=5):
-    dur = qpid_messaging.Duration(qpid_messaging.Duration.SECOND.getMilliseconds() * timeout)
-    agent = self._impl.getAgent()
-    query = cqmf2.Query(self._impl.getAddr())
-    result = agent.query(query, dur)
-    if result.getType() != cqmf2.CONSOLE_QUERY_RESPONSE:
-      raise "Update query failed"
-    if result.getDataCount == 0:
-      raise "Object no longer exists on agent"
-    self._impl = cqmf2.Data(result.getData(0))
-
-  def getProperties(self):
-    """
-    """
-    return self._impl.getProperties();
-
-  def _getSchema(self):
-    if not self._schema:
-      if not self._impl.hasSchema():
-        raise Exception("Data object has no schema")
-      self._schema = Schema(self._impl.getAgent().getSchema(self._impl.getSchemaId()))
-
-  def _invoke(self, name, args, kwargs):
-    ##
-    ## Get local copies of the agent and the address of the data object
-    ##
-    agent = self._impl.getAgent()
-    addr = self._impl.getAddr()
-
-    ##
-    ## Set up the timeout duration for the method call.  Set the default and override
-    ## it if the _timeout keyword arg was supplied.
-    ##
-    timeout = 30
-    if '_timeout' in kwargs:
-      timeout = kwargs['_timeout']
-    dur = qpid_messaging.Duration(qpid_messaging.Duration.SECOND.getMilliseconds() * timeout)
-
-    ##
-    ## Get the list of arguments from the schema, isolate those that are IN or IN_OUT,
-    ## validate that we have the right number of arguments supplied, and marshall them
-    ## into a map for transmission.
-    ##
-    arglist = []
-    methods = self._schema.getMethods()
-    for m in methods:
-      if m.getName() == name:
-        arglist = m.getArguments()
-        break
-    argmap = {}
-    count = 0
-    for a in arglist:
-      if a.getDirection() == DIR_IN or a.getDirection() == DIR_IN_OUT:
-        count += 1
-    if count != len(args):
-      raise Exception("Wrong number of arguments: expected %d, got %d" % (count, len(args)))
-    i = 0
-    for a in arglist:
-      if a.getDirection() == DIR_IN or a.getDirection() == DIR_IN_OUT:
-        argmap[a.getName()] = args[i]
-        i += 1
-
-    ##
-    ## Invoke the method through the agent proxy.
-    ##
-    result = agent.callMethod(name, argmap, addr, dur)
-
-    ##
-    ## If the agent sent an exception, raise it in a QmfAgentException.
-    ##
-    if result.getType() == cqmf2.CONSOLE_EXCEPTION:
-      exdata = result.getData(0)
-      raise QmfAgentException(exdata)
-
-    ##
-    ## If a successful method response was received, collect the output arguments into a map
-    ## and return them to the caller.
-    ##
-    if result.getType() != cqmf2.CONSOLE_METHOD_RESPONSE:
-      raise Exception("Protocol error: Unexpected event type in method-response: %d" % result.getType())
-    return result.getArguments()
-
-  def __getattr__(self, name):
-    ##
-    ## If we have a schema and an address, check to see if this name is the name of a method.
-    ##
-    if self._impl.hasSchema() and self._impl.hasAddr() and self._impl.hasAgent():
-      ##
-      ## Get the schema for the data object.  Note that this call will block if the remote agent
-      ## needs to be queried for the schema (i.e. the schema is not in the local cache).
-      ##
-      self._getSchema()
-      methods = self._schema.getMethods()
-
-      ##
-      ## If the name matches a method in the schema, return a closure to be invoked.
-      ##
-      for method in methods:
-        if name == method.getName():
-          return lambda *args, **kwargs : self._invoke(name, args, kwargs)
-
-    ##
-    ## This is not a method call, return the property matching the name.
-    ##
-    return self._impl.getProperty(name)
-
-  def __setattr__(self, name, value):
-    if name[0] == '_':
-      super.__setattr__(self, name, value)
-      return
-    self._impl.setProperty(name, value)
-
-#===================================================================================================
-# DATA ADDRESS
-#===================================================================================================
-class DataAddr(object):
-  """
-  """
-
-  def __init__(self, arg, agentName=""):
-    if arg.__class__ == dict:
-      self._impl = cqmf2.DataAddr(arg)
-    elif arg.__class__ == cqmf2.DataAddr:
-      self._impl = arg
-    else:
-      self._impl = cqmf2.DataAddr(arg, agentName)
-
-  def __repr__(self):
-    return "%s:%s" % (self.getAgentName(), self.getName())
-
-  def __eq__(self, other):
-    return self.getAgentName() == other.getAgentName() and \
-        self.getName() == other.getName() and \
-        self.getAgentEpoch() == other.getAgentEpoch()
-
-  def asMap(self):
-    """
-    """
-    return self._impl.asMap()
-
-  def getAgentName(self):
-    """
-    """
-    return self._impl.getAgentName()
-
-  def getName(self):
-    """
-    """
-    return self._impl.getName()
-
-  def getAgentEpoch(self):
-    """
-    """
-    return self._impl.getAgentEpoch()
-
-#===================================================================================================
-# SCHEMA ID
-#===================================================================================================
-class SchemaId(object):
-  """
-  """
-
-  def __init__(self, impl):
-    self._impl = impl
-
-  def __repr__(self):
-    return "%s:%s" % (self.getPackageName(), self.getName())
-
-  def getType(self):
-    """
-    """
-    return self._impl.getType()
-
-  def getPackageName(self):
-    """
-    """
-    return self._impl.getPackageName()
-
-  def getName(self):
-    """
-    """
-    return self._impl.getName()
-
-  def getHash(self):
-    """
-    """
-    return self._impl.getHash()
-
-#===================================================================================================
-# SCHEMA
-#===================================================================================================
-class Schema(object):
-  """
-  """
-
-  def __init__(self, stype, packageName=None, className=None, desc=None, sev=None):
-    if stype.__class__ == cqmf2.Schema:
-      self._impl = stype
-    else:
-      self._impl = cqmf2.Schema(stype, packageName, className)
-      if desc:
-        self._impl.setDesc(desc)
-      if sev:
-        self._impl.setDefaultSeverity(sev)
-
-  def __repr__(self):
-    return "QmfSchema:%r" % SchemaId(self._impl.getSchemaId())
-
-  def finalize(self):
-    """
-    """
-    self._impl.finalize()
-
-  def getSchemaId(self):
-    """
-    """
-    return SchemaId(self._impl.getSchemaId())
-
-  def getDesc(self):
-    """
-    """
-    return self._impl.getDesc()
-
-  def getSev(self):
-    """
-    """
-    return self._impl.getDefaultSeverity()
-
-  def addProperty(self, prop):
-    """
-    """
-    self._impl.addProperty(prop._impl)
-
-  def addMethod(self, meth):
-    """
-    """
-    self._impl.addMethod(meth._impl)
-
-  def getProperties(self):
-    """
-    """
-    props = []
-    count = self._impl.getPropertyCount()
-    for i in range(count):
-      props.append(SchemaProperty(self._impl.getProperty(i)))
-    return props
-
-  def getMethods(self):
-    """
-    """
-    meths = []
-    count = self._impl.getMethodCount()
-    for i in range(count):
-      meths.append(SchemaMethod(self._impl.getMethod(i)))
-    return meths
-
-#===================================================================================================
-# SCHEMA PROPERTY
-#===================================================================================================
-class SchemaProperty(object):
-  """
-  """
-
-  def __init__(self, name, dtype=None, **kwargs):
-    """
-    """
-    if name.__class__ == cqmf2.SchemaProperty:
-      self._impl = name
-    else:
-      self._impl = cqmf2.SchemaProperty(name, dtype)
-      if 'access' in kwargs:
-        self._impl.setAccess(kwargs['access'])
-      if 'index' in kwargs:
-        self._impl.setIndex(kwargs['index'])
-      if 'optional' in kwargs:
-        self._impl.setOptional(kwargs['optional'])
-      if 'unit' in kwargs:
-        self._impl.setUnit(kwargs['unit'])
-      if 'desc' in kwargs:
-        self._impl.setDesc(kwargs['desc'])
-      if 'subtype' in kwargs:
-        self._impl.setSubtype(kwargs['subtype'])
-      if 'direction' in kwargs:
-        self._impl.setDirection(kwargs['direction'])
-
-  def __repr__(self):
-    return self._impl.getName()
-
-  def getName(self):
-    """
-    """
-    return self._impl.getName()
-
-  def getType(self):
-    """
-    """
-    return self._impl.getType()
-
-  def getAccess(self):
-    """
-    """
-    return self._impl.getAccess()
-
-  def isIndex(self):
-    """
-    """
-    return self._impl.isIndex()
-
-  def isOptional(self):
-    """
-    """
-    return self._impl.isOptional()
-
-  def getUnit(self):
-    """
-    """
-    return self._impl.getUnit()
-
-  def getDesc(self):
-    """
-    """
-    return self._impl.getDesc()
-
-  def getSubtype(self):
-    """
-    """
-    return self._impl.getSubtype()
-
-  def getDirection(self):
-    """
-    """
-    return self._impl.getDirection()
-
-#===================================================================================================
-# SCHEMA METHOD
-#===================================================================================================
-class SchemaMethod(object):
-  """
-  """
-
-  def __init__(self, name, **kwargs):
-    """
-    """
-    if name.__class__ == cqmf2.SchemaMethod:
-      self._impl = name
-    else:
-      self._impl = cqmf2.SchemaMethod(name)
-      if 'desc' in kwargs:
-        self._impl.setDesc(kwargs['desc'])
-
-  def __repr__(self):
-    return "%s()" % self._impl.getName()
-
-  def getName(self):
-    """
-    """
-    return self._impl.getName()
-
-  def getDesc(self):
-    """
-    """
-    return self._impl.getDesc()
-
-  def addArgument(self, arg):
-    """
-    """
-    self._impl.addArgument(arg._impl)
-
-  def getArguments(self):
-    """
-    """
-    result = []
-    count = self._impl.getArgumentCount()
-    for i in range(count):
-      result.append(SchemaProperty(self._impl.getArgument(i)))
-    return result
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/ruby/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/bindings/qmf2/ruby/CMakeLists.txt b/bindings/qmf2/ruby/CMakeLists.txt
deleted file mode 100644
index e167177..0000000
--- a/bindings/qmf2/ruby/CMakeLists.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# 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 Swig to generate a literal binding to the C++ API
-##------------------------------------------------------
-set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/ruby.i PROPERTIES
-    CPLUSPLUS ON
-    SWIG_FLAGS "-I${qpid-cpp_SOURCE_DIR}/include;-I${qpid-cpp_SOURCE_DIR}/bindings")
-
-if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
-  set (RUBY_INCLUDE_DIRS ${RUBY_INCLUDE_PATH})
-endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
-
-include_directories(${RUBY_INCLUDE_DIRS}
-                    ${qpid-cpp_SOURCE_DIR}/include
-                    ${qpid-cpp_SOURCE_DIR}/bindings)
-
-list(APPEND SWIG_MODULE_cqmf2_ruby_EXTRA_DEPS
-    ${CMAKE_SOURCE_DIR}/include/qmf/qmf2.i
-    ${CMAKE_SOURCE_DIR}/include/qpid/swig_ruby_typemaps.i
-)
-swig_add_library(cqmf2_ruby LANGUAGE ruby SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ruby.i)
-swig_link_libraries(cqmf2_ruby qmf2 qpidmessaging qpidtypes ${RUBY_LIBRARY})
-
-##----------------------------------
-## Install the complete Ruby binding
-##----------------------------------
-install(TARGETS ${SWIG_MODULE_cqmf2_ruby_REAL_NAME}
-      RENAME cqmf2.so
-      DESTINATION ${RUBY_PFX_ARCH_DIR}
-      COMPONENT ${QPID_COMPONENT_CLIENT}
-)
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/ruby/qmf2.rb
----------------------------------------------------------------------
diff --git a/bindings/qmf2/ruby/qmf2.rb b/bindings/qmf2/ruby/qmf2.rb
deleted file mode 100644
index b38aeae..0000000
--- a/bindings/qmf2/ruby/qmf2.rb
+++ /dev/null
@@ -1,857 +0,0 @@
-#
-# 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.
-#
-
-warn 'The qmf2 module is deprecated.  It will be removed in the future.'
-
-require 'cqmf2'
-require 'cqpid'
-require 'thread'
-require 'socket'
-require 'monitor'
-
-module Qmf2
-
-  Cqmf2.constants.each do |c|
-    if c.index('AGENT_') == 0 or c.index('CONSOLE_') == 0 or
-        c.index('SCHEMA_') == 0 or c.index('SEV_') == 0 or c.index('QUERY') == 0
-      const_set(c, Cqmf2.const_get(c))
-    end
-  end
-
-  SCHEMA_TYPE_DATA  = Cqmf2::SCHEMA_TYPE_DATA()
-  SCHEMA_TYPE_EVENT = Cqmf2::SCHEMA_TYPE_EVENT()
-
-  SCHEMA_DATA_VOID   = Cqmf2::SCHEMA_DATA_VOID()
-  SCHEMA_DATA_BOOL   = Cqmf2::SCHEMA_DATA_BOOL()
-  SCHEMA_DATA_INT    = Cqmf2::SCHEMA_DATA_INT()
-  SCHEMA_DATA_FLOAT  = Cqmf2::SCHEMA_DATA_FLOAT()
-  SCHEMA_DATA_STRING = Cqmf2::SCHEMA_DATA_STRING()
-  SCHEMA_DATA_MAP    = Cqmf2::SCHEMA_DATA_MAP()
-  SCHEMA_DATA_LIST   = Cqmf2::SCHEMA_DATA_LIST()
-  SCHEMA_DATA_UUID   = Cqmf2::SCHEMA_DATA_UUID()
-
-  ACCESS_READ_CREATE = Cqmf2::ACCESS_READ_CREATE()
-  ACCESS_READ_WRITE  = Cqmf2::ACCESS_READ_WRITE()
-  ACCESS_READ_ONLY   = Cqmf2::ACCESS_READ_ONLY()
-
-  DIR_IN     = Cqmf2::DIR_IN()
-  DIR_OUT    = Cqmf2::DIR_OUT()
-  DIR_IN_OUT = Cqmf2::DIR_IN_OUT()
-
-  SEV_EMERG  = Cqmf2::SEV_EMERG()
-  SEV_ALERT  = Cqmf2::SEV_ALERT()
-  SEV_CRIT   = Cqmf2::SEV_CRIT()
-  SEV_ERROR  = Cqmf2::SEV_ERROR()
-  SEV_WARN   = Cqmf2::SEV_WARN()
-  SEV_NOTICE = Cqmf2::SEV_NOTICE()
-  SEV_INFORM = Cqmf2::SEV_INFORM()
-  SEV_DEBUG  = Cqmf2::SEV_DEBUG()
-
-  ##==============================================================================
-  ## EXCEPTIONS
-  ##==============================================================================
-
-  class QmfAgentException < RuntimeError
-    attr :data
-
-    def initialize(data)
-      @data = data
-    end
-
-    def to_s
-      "QmfAgentException: #{@data}"
-    end
-  end
-
-  ##==============================================================================
-  ## AGENT HANDLER
-  ##==============================================================================
-
-  class AgentHandler
-
-    def initialize(session)
-      @_session = session
-      @_running = false
-      @_thread  = nil
-    end
-
-    ##
-    ## Call the "start" method to run the handler on a new thread.
-    ##
-    def start
-      @_thread = Thread.new do
-        run
-      end
-    end
-
-    ##
-    ## Request that the running thread complete and exit.
-    ##
-    def cancel
-      @_running = false
-      @_thread.join if @_thread
-      @_thread = nil
-    end
-
-    ##
-    ## Call the "run" method only if you want the handler to run on your own thread.
-    ##
-    def run
-      @_running = true
-      event = Cqmf2::AgentEvent.new
-      while @_running do
-        valid = @_session.impl.nextEvent(event, Cqpid::Duration.SECOND)
-        if valid and @_running
-          case event.getType
-          when Cqmf2::AGENT_AUTH_QUERY
-            yes = authorize_query(Query.new(event.getQuery()), event.getUserId())
-            if yes == true
-              @_session.impl.authAccept(event)
-            else
-              @_session.impl.authReject(event)
-            end
-
-          when Cqmf2::AGENT_QUERY
-            context = QueryContext.new(@_session, event)
-            get_query(context, Query.new(event.getQuery()), event.getUserId())
-
-          when Cqmf2::AGENT_METHOD
-            context = MethodContext.new(@_session, event)
-            begin
-              method_call(context, event.getMethodName(), event.getDataAddr(), event.getArguments(), event.getUserId())
-            rescue Exception => ex
-              @_session.impl.raiseException(event, "#{ex}")
-            end
-
-          end
-        end
-      end
-    end
-
-
-    ##
-    ## The following methods are intended to be overridden in a sub-class.  They are
-    ## handlers for events that occur on QMF consoles.
-    ##
-
-    #
-    # This method will only be invoked if the "allow-queries" option is enabled on the
-    # agent session.  When invoked, it provides the query and the authenticated user-id
-    # of the querying client.
-    #
-    # This method must return true if the query is permitted, false otherwise.
-    #
-    def authorize_query(query, user_id); end
-
-    #
-    # This method will only be invoked if the "external" option is "True" on the agent
-    # session.  When invoked, the method should begin the process of responding to a data
-    # query.  The authenticated user-id of the requestor is provided for informational
-    # purposes.  The 'context' variable is used to provide the results back to the requestor.
-    #
-    # For each matching Data object, call context.response(data).  When the query is complete,
-    # call context.complete().  After completing the query, you should not use 'context' any
-    # longer.
-    #
-    # Note: It is not necessary to process the query synchronously.  If desired, this method
-    # may store the context for asynchronous processing or pass it to another thread for
-    # processing.  There is no restriction on the number of contexts that may be in-flight
-    # concurrently.
-    #
-    def get_query(context, query, user_id); end
-
-    #
-    # This method is invoked when a console calls a QMF method on the agent.  Supplied are
-    # a context for the response, the method name, the data address of the data object being
-    # called, the input arguments (a dictionary), and the caller's authenticated user-id.
-    #
-    # A method call can end one of two ways:  Successful completion, in which the output
-    # arguments (if any) are supplied; and Exceptional completion if there is an error.
-    #
-    # Successful Completion:
-    #    For each output argument, assign the value directly to context (context.arg1 = "value")
-    #    Once arguments are assigned, call context._success().
-    #
-    # Exceptional Completion:
-    #    Method 1:  Call context._exception(data) where 'data' is a string or a Data object.
-    #    Method 2:  Raise an exception (raise "Error Text") synchronously in the method body.
-    #
-    # Note: Like get_query, method_call may process methods synchronously or asynchronously.
-    # This method may store the context for later asynchronous processing.  There is no
-    # restriction on the number of contexts that may be in-flight concurrently.
-    #
-    # However, "Method 2" for Exceptional Completion can only be done synchronously.
-    #
-    def method_call(context, method_name, data_addr, args, user_id); end
-  end
-
-  class QueryContext
-    def initialize(agent, context)
-      @agent = agent
-      @context = context
-    end
-
-    def response(data)
-      @agent.impl.response(@context, data.impl)
-    end
-
-    def complete
-      @agent.impl.complete(@context)
-    end
-  end
-
-  class MethodContext
-    def initialize(agent, context)
-      @agent = agent
-      @context = context
-    end
-
-    def _success
-      @agent.impl.methodSuccess(@context)
-    end
-
-    def _exception(ex)
-      if ex.class == Data
-        @agent.impl.raiseException(@context, ex.impl)
-      else
-        @agent.impl.raiseException(@context, ex)
-      end
-    end
-
-    def method_missing(name_in, *args)
-      name = name_in.to_s
-      if name[name.length - 1] == 61
-        name = name[0..name.length - 2]
-        @context.impl.addReturnArgument(name, args[0])
-      else
-        super.method_missing(name_in, args)
-      end
-    end
-  end
-
-  ##==============================================================================
-  ## CONSOLE HANDLER
-  ##==============================================================================
-
-  class ConsoleHandler
-
-    def initialize(session)
-      @_session = session
-      @_running = false
-      @_thread  = nil
-    end
-
-    ##
-    ## Call the "start" method to run the handler on a new thread.
-    ##
-    def start
-      @_thread = Thread.new do
-        run
-      end
-    end
-
-    ##
-    ## Request that the running thread complete and exit.
-    ##
-    def cancel
-      @_running = false
-      @_thread.join if @_thread
-      @_thread = nil
-    end
-
-    ##
-    ## Call the "run" method only if you want the handler to run on your own thread.
-    ##
-    def run
-      @_running = true
-      event = Cqmf2::ConsoleEvent.new
-      while @_running do
-        valid = @_session.impl.nextEvent(event, Cqpid::Duration.SECOND)
-        if valid and @_running
-          case event.getType
-          when Cqmf2::CONSOLE_AGENT_ADD
-            agent_added(Agent.new(event.getAgent))
-
-          when Cqmf2::CONSOLE_AGENT_DEL
-            reason = :filter
-            reason = :aged if event.getAgentDelReason == Cqmf2::AGENT_DEL_AGED
-            agent_deleted(Agent.new(event.getAgent), reason)
-
-          when Cqmf2::CONSOLE_AGENT_RESTART
-            agent_restarted(Agent.new(event.getAgent))
-
-          when Cqmf2::CONSOLE_AGENT_SCHEMA_UPDATE
-            agent_schema_updated(Agent.new(event.getAgent))
-
-          when Cqmf2::CONSOLE_EVENT
-            event_raised(Agent.new(event.getAgent), Data.new(event.getData(0)), event.getTimestamp, event.getSeverity)
-
-          end
-        end
-      end
-    end
-
-
-    ##
-    ## The following methods are intended to be overridden in a sub-class.  They are
-    ## handlers for events that occur on QMF consoles.
-    ##
-
-    #
-    # A new agent, whose attributes match the console's agent filter, has been discovered.
-    #
-    def agent_added(agent); end
-
-    #
-    # A known agent has been removed from the agent list.  There are two possible reasons
-    # for agent deletion:
-    #
-    #    1) :aged   - The agent hasn't been heard from for the maximum age interval and is
-    #                 presumed dead.
-    #    2) :filter - The agent no longer matches the console's agent-filter and has been
-    #                 effectively removed from the agent list.  Such occurrences are likely
-    #                 to be seen immediately after setting the filter to a new value.
-    #
-    def agent_deleted(agent, reason); end
-
-    #
-    # An agent-restart was detected.  This occurs when the epoch number advertised by the
-    # agent changes.  It indicates that the agent in question was shut-down/crashed and
-    # restarted.
-    #
-    def agent_restarted(agent); end
-
-    #
-    # The agent has registered new schema information which can now be queried, if desired.
-    #
-    def agent_schema_updated(agent); end
-
-    #
-    # An agent raised an event.  The 'data' argument is a Data object that contains the
-    # content of the event.
-    #
-    def event_raised(agent, data, timestamp, severity); end
-  end
-
-  ##==============================================================================
-  ## CONSOLE SESSION
-  ##==============================================================================
-
-  class ConsoleSession
-    attr_reader :impl
-
-    ## The options string is of the form "{key:value,key:value}".  The following keys are supported:
-    ##
-    ##    domain:NAME                   - QMF Domain to join [default: "default"]
-    ##    max-agent-age:N               - Maximum time, in minutes, that we will tolerate not hearing from
-    ##                                    an agent before deleting it [default: 5]
-    ##    listen-on-direct:{True,False} - If True:  Listen on legacy direct-exchange address for backward compatibility [default]
-    ##                                    If False: Listen only on the routable direct address
-    ##    strict-security:{True,False}  - If True:  Cooperate with the broker to enforce strict access control to the network
-    ##                                  - If False: Operate more flexibly with regard to use of messaging facilities [default]
-    ##
-    def initialize(connection, options="")
-      @impl = Cqmf2::ConsoleSession.new(connection, options)
-    end
-
-    def set_domain(domain)        @impl.setDomain(domain)      end
-    def set_agent_filter(filter)  @impl.setAgentFilter(filter) end
-
-    def open()   @impl.open  end
-    def close()  @impl.close  end
-
-    def agents
-      result = []
-      count = @impl.getAgentCount
-      for i in 0...count
-        result << Agent.new(@impl.getAgent(i))
-      end
-      return result
-    end
-
-    def connected_broker_agent
-      Agent.new(@impl.getConnectedBrokerAgent)
-    end
-  end
-
-  ##==============================================================================
-  ## AGENT SESSION
-  ##==============================================================================
-
-  class AgentSession
-    attr_reader :impl
-
-    ## The options string is of the form "{key:value,key:value}".  The following keys are supported:
-    ##
-    ##    interval:N                 - Heartbeat interval in seconds [default: 60]
-    ##    external:{True,False}      - Use external data storage (queries and subscriptions are pass-through) [default: False]
-    ##    allow-queries:{True,False} - If True:  automatically allow all queries [default]
-    ##                                 If False: generate an AUTH_QUERY event to allow per-query authorization
-    ##    allow-methods:{True,False} - If True:  automatically allow all methods [default]
-    ##                                 If False: generate an AUTH_METHOD event to allow per-method authorization
-    ##    max-subscriptions:N        - Maximum number of concurrent subscription queries permitted [default: 64]
-    ##    min-sub-interval:N         - Minimum publish interval (in milliseconds) permitted for a subscription [default: 3000]
-    ##    sub-lifetime:N             - Lifetime (in seconds with no keepalive) for a subscription [default: 300]
-    ##    public-events:{True,False} - If True:  QMF events are sent to the topic exchange [default]
-    ##                                 If False: QMF events are only sent to authorized subscribers
-    ##    listen-on-direct:{True,False} - If True:  Listen on legacy direct-exchange address for backward compatibility [default]
-    ##                                    If False: Listen only on the routable direct address
-    ##    strict-security:{True,False}  - If True:  Cooperate with the broker to enforce strict access control to the network
-    ##                                  - If False: Operate more flexibly with regard to use of messaging facilities [default]
-    ##
-    def initialize(connection, options="")
-      @impl = Cqmf2::AgentSession.new(connection, options)
-    end
-
-    def set_domain(val)         @impl.setDomain(val)           end
-    def set_vendor(val)         @impl.setVendor(val)           end
-    def set_product(val)        @impl.setProduct(val)          end
-    def set_instance(val)       @impl.setInstance(val)         end
-    def set_attribute(key, val) @impl.setAttribute(key, val)   end
-    def open()                  @impl.open                     end
-    def close()                 @impl.close                    end
-    def register_schema(cls)    @impl.registerSchema(cls.impl) end
-
-    def add_data(data, name="", persistent=false)
-      DataAddr.new(@impl.addData(data.impl, name, persistent))
-    end
-
-    def del_data(addr)
-      @impl.del_data(addr.impl)
-    end
-
-    def raise_event(data, severity=nil)
-      if !severity
-        @impl.raiseEvent(data.impl)
-      else
-        @impl.raiseEvent(data.impl, severity)
-      end
-    end
-  end
-
-  ##==============================================================================
-  ## AGENT PROXY
-  ##==============================================================================
-
-  class Agent
-    attr_reader :impl
-
-    def initialize(impl)
-      @impl = impl
-    end
-
-    def name()       @impl.getName        end
-    def epoch()      @impl.getEpoch       end
-    def vendor()     @impl.getVendor      end
-    def product()    @impl.getProduct     end
-    def instance()   @impl.getInstance    end
-    def attributes() @impl.getAttributes  end
-
-    def to_s
-      "#{vendor}:#{product}:#{instance}"
-    end
-
-    def query(q, timeout=30)
-      if q.class == Query
-        q_arg = q.impl
-      else
-        q_arg = q
-      end
-      dur = Cqpid::Duration.new(Cqpid::Duration.SECOND.getMilliseconds * timeout)
-      result = @impl.query(q_arg, dur)
-      raise QmfAgentException.new(Data.new(result.getData(0))) if result.getType == Cqmf2::CONSOLE_EXCEPTION
-      raise "Protocol error, expected CONSOLE_QUERY_RESPONSE, got #{result.getType}" if result.getType != Cqmf2::CONSOLE_QUERY_RESPONSE
-      data_list = []
-      count = result.getDataCount
-      for i in 0...count
-        data_list << Data.new(result.getData(i))
-      end
-      return data_list
-    end
-
-    def load_schema_info(timeout=30)
-      dur = Cqpid::Duration.new(Cqpid::Duration.SECOND.getMilliseconds * timeout)
-      @impl.querySchema(dur)
-    end
-
-    def packages
-      result = []
-      count = @impl.getPackageCount
-      for i in 0...count
-        result << @impl.getPackage(i)
-      end
-      return result
-    end
-
-    def schema_ids(package)
-      result = []
-      count = @impl.getSchemaIdCount(package)
-      for i in 0...count
-        result << SchemaId.new(@impl.getSchemaId(package, i))
-      end
-      return result
-    end
-
-    def schema(sid, timeout=30)
-      dur = Cqpid::Duration.new(Cqpid::Duration.SECOND.getMilliseconds * timeout)
-      Schema.new(@impl.getSchema(sid.impl, dur))
-    end
-  end
-
-  ##==============================================================================
-  ## QUERY
-  ##==============================================================================
-
-  class Query
-    attr_reader :impl
-    def initialize(arg1, arg2=nil, arg3=nil)
-      if arg1.class == Qmf2::DataAddr
-        @impl = Cqmf2::Query.new(arg1.impl)
-      end
-    end
-
-    def addr()      DataAddr.new(@impl.getDataAddr())  end
-    def schema_id() SchemaId.new(@impl.getSchemaId())  end
-    def predicate() @impl.getPredicate()               end
-
-    def matches?(data)
-      map = data
-      map = data.properties if data.class == Data
-      @impl.matchesPredicate(map)
-    end
-  end
-
-  ##==============================================================================
-  ## DATA
-  ##==============================================================================
-
-  class Data
-    attr_reader :impl
-
-    def initialize(arg=nil)
-      @schema = nil
-      if arg == nil
-        @impl = Cqmf2::Data.new
-      elsif arg.class == Cqmf2::Data
-        @impl = arg
-      elsif arg.class == Schema
-        @impl = Cqmf2::Data.new(arg.impl)
-        @schema = arg
-      else
-        raise "Unsupported initializer for Data"
-      end
-    end
-
-    def to_s
-      "#{@impl.getProperties}"
-    end
-
-    def schema_id
-      if @impl.hasSchema
-        return SchemaId.new(@impl.getSchemaId)
-      end
-      return nil
-    end
-
-    def set_addr(addr)
-      @impl.setAddr(addr.impl)
-    end
-
-    def addr
-      if @impl.hasAddr
-        return DataAddr.new(@impl.getAddr)
-      end
-      return nil
-    end
-
-    def agent
-      return Agent.new(@impl.getAgent)
-    end
-
-    def update(timeout=5)
-      dur = Cqpid::Duration.new(Cqpid::Duration.SECOND.getMilliseconds * timeout)
-      agent = @impl.getAgent
-      query = Cqmf2::Query.new(@impl.getAddr)
-      result = agent.query(query, dur)
-      raise "Update query failed" if result.getType != Cqmf2::CONSOLE_QUERY_RESPONSE
-      raise "Object no longer exists on agent" if result.getDataCount == 0
-      @impl = Cqmf2::Data.new(result.getData(0))
-      return nil
-    end
-
-    def properties
-      return @impl.getProperties
-    end
-
-    def get_attr(name)
-      @impl.getProperty(name)
-    end
-
-    def set_attr(name, v)
-      @impl.setProperty(name, v)
-    end
-
-    def [](name)
-      get_attr(name)
-    end
-
-    def []=(name, value)
-      set_attr(name, value)
-    end
-
-    def _get_schema
-      unless @schema
-        raise "Data object has no schema" unless @impl.hasSchema
-        @schema = Schema.new(@impl.getAgent.getSchema(@impl.getSchemaId))
-      end
-    end
-
-    def method_missing(name_in, *args)
-      #
-      # Convert the name to a string and determine if it represents an
-      # attribute assignment (i.e. "attr=")
-      #
-      name = name_in.to_s
-      attr_set = (name[name.length - 1] == 61)
-      name = name[0..name.length - 2] if attr_set
-
-      #
-      # We'll be needing the schema to determine how to proceed.  Get the schema.
-      # Note that this call may block if the remote agent needs to be queried
-      # for the schema (i.e. the schema isn't in the local cache).
-      #
-      _get_schema
-
-      #
-      # If the name matches a property name, set or return the value of the property.
-      #
-      @schema.properties.each do |prop|
-        if prop.name == name
-          if attr_set
-            return set_attr(name, args[0])
-          else
-            return get_attr(name)
-          end
-        end
-      end
-
-      #
-      # If we still haven't found a match for the name, check to see if
-      # it matches a method name.  If so, marshall the arguments and invoke
-      # the method.
-      #
-      @schema.methods.each do |method|
-        if method.name == name
-          raise "Sets not permitted on methods" if attr_set
-          result = @impl.getAgent.callMethod(name, _marshall(method, args), @impl.getAddr)
-          if result.getType == Cqmf2::CONSOLE_EXCEPTION
-            raise QmfAgentException, result.getData(0)
-          end
-          return result.getArguments
-        end
-      end
-
-      #
-      # This name means nothing to us, pass it up the line to the parent
-      # class's handler.
-      #
-      super.method_missing(name_in, args)
-    end
-
-    #
-    # Convert a Ruby array of arguments (positional) into a Value object of type "map".
-    #
-    private
-    def _marshall(schema, args)
-      count = 0
-      schema.arguments.each do |arg|
-        if arg.direction == DIR_IN || arg.direction == DIR_IN_OUT
-          count += 1
-        end
-      end
-      raise "Wrong number of arguments: expecter #{count}, got #{arge.length}" if count != args.length
-      map = {}
-      count = 0
-      schema.arguments.each do |arg|
-        if arg.direction == DIR_IN || arg.direction == DIR_IN_OUT
-          map[arg.name] = args[count]
-          count += 1
-        end
-      end
-      return map
-    end
-  end
-
-  ##==============================================================================
-  ## DATA ADDRESS
-  ##==============================================================================
-
-  class DataAddr
-    attr_reader :impl
-
-    def initialize(arg, agentName="")
-      if arg.class == Hash
-        @impl = Cqmf2::DataAddr.new(arg)
-      elsif arg.class == Cqmf2::DataAddr
-        @impl = arg
-      else
-        @impl = Cqmf2::DataAddr.new(arg, agentName)
-      end
-    end
-
-    def ==(other)
-      return @impl == other.impl
-    end
-
-    def as_map()       @impl.asMap          end
-    def agent_name()   @impl.getAgentName   end
-    def name()         @impl.getName        end
-    def agent_epoch()  @impl.getAgentEpoch  end
-  end
-
-  ##==============================================================================
-  ## SCHEMA ID
-  ##==============================================================================
-
-  class SchemaId
-    attr_reader :impl
-    def initialize(impl)
-      @impl = impl
-    end
-
-    def type()         @impl.getType         end
-    def package_name() @impl.getPackageName  end
-    def class_name()   @impl.getName         end
-    def hash()         @impl.getHash         end
-  end
-
-  ##==============================================================================
-  ## SCHEMA
-  ##==============================================================================
-
-  class Schema
-    attr_reader :impl
-    def initialize(arg, packageName="", className="", kwargs={})
-      if arg.class == Cqmf2::Schema
-        @impl = arg
-      else
-        @impl = Cqmf2::Schema.new(arg, packageName, className)
-        @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
-        @impl.setDefaultSeverity(kwargs[:sev]) if kwargs.include?(:sev)
-      end
-    end
-
-    def finalize()         @impl.finalize                   end
-    def schema_id()        SchemaId.new(@impl.getSchemaId)  end
-    def desc()             @impl.getDesc                    end
-    def sev()              @impl.getDefaultSeverity         end
-    def add_property(prop) @impl.addProperty(prop.impl)     end
-    def add_method(meth)   @impl.addMethod(meth.impl)       end
-
-    def properties
-      result = []
-      count = @impl.getPropertyCount
-      for i in 0...count
-        result << SchemaProperty.new(@impl.getProperty(i))
-      end
-      return result
-    end
-
-    def methods
-      result = []
-      count = @impl.getMethodCount
-      for i in 0...count
-        result << SchemaMethod.new(@impl.getMethod(i))
-      end
-      return result
-    end
-  end
-
-  ##==============================================================================
-  ## SCHEMA PROPERTY
-  ##==============================================================================
-
-  class SchemaProperty
-    attr_reader :impl
-
-    def initialize(arg, dtype=nil, kwargs={})
-      if arg.class == Cqmf2::SchemaProperty
-        @impl = arg
-      else
-        @impl = Cqmf2::SchemaProperty.new(arg, dtype)
-        @impl.setAccess(kwargs[:access])       if kwargs.include?(:access)
-        @impl.setIndex(kwargs[:index])         if kwargs.include?(:index)
-        @impl.setOptional(kwargs[:optional])   if kwargs.include?(:optional)
-        @impl.setUnit(kwargs[:unit])           if kwargs.include?(:unit)
-        @impl.setDesc(kwargs[:desc])           if kwargs.include?(:desc)
-        @impl.setSubtype(kwargs[:subtype])     if kwargs.include?(:subtype)
-        @impl.setDirection(kwargs[:direction]) if kwargs.include?(:direction)
-      end
-    end
-
-    def name()       @impl.getName       end
-    def access()     @impl.getAccess     end 
-    def index?()     @impl.isIndex       end
-    def optional?()  @impl.isOptional    end
-    def unit()       @impl.getUnit       end
-    def desc()       @impl.getDesc       end
-    def subtype()    @impl.getSubtype    end
-    def direction()  @impl.getDirection  end
-
-    def to_s
-      name
-    end
-  end
-
-  ##==============================================================================
-  ## SCHEMA METHOD
-  ##==============================================================================
-
-  class SchemaMethod
-    attr_reader :impl
-
-    def initialize(arg, kwargs={})
-      if arg.class == Cqmf2::SchemaMethod
-        @impl = arg
-      else
-        @impl = Cqmf2::SchemaMethod.new(arg)
-        @impl.setDesc(kwargs[:desc]) if kwargs.include?(:desc)
-      end
-    end
-
-    def name()  @impl.getName  end
-    def desc()  @impl.getDesc  end
-    def add_argument(arg)  @impl.addArgument(arg.impl)  end
-
-    def arguments
-      result = []
-      count = @impl.getArgumentCount
-      for i in 0...count
-        result << SchemaProperty.new(@impl.getArgument(i))
-      end
-      return result
-    end
-
-    def to_s
-      name
-    end
-  end
-end
-
-

http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/b569b4d6/bindings/qmf2/ruby/ruby.i
----------------------------------------------------------------------
diff --git a/bindings/qmf2/ruby/ruby.i b/bindings/qmf2/ruby/ruby.i
deleted file mode 100644
index 65d0770..0000000
--- a/bindings/qmf2/ruby/ruby.i
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.
- */
-
-%module cqmf2
-/* Ruby doesn't have a != operator*/
-#pragma SWIG nowarn=378
-%include "std_string.i"
-%include "qpid/swig_ruby_typemaps.i"
-
-/* Define the general-purpose exception handling */
-%exception {
-    try {
-        $action
-    }
-    catch (qpid::types::Exception& mex) {
-        static VALUE qmferror = rb_define_class("QmfError", rb_eStandardError);
-        rb_raise(qmferror, "%s", mex.what());
-    }
-}
-
-%include "qmf/qmf2.i"


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


[04/14] qpid-cpp git commit: QPID-8073: Add missing package to help text

Posted by jr...@apache.org.
QPID-8073: Add missing package to help text


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

Branch: refs/heads/master
Commit: 24c4a37837616b0898773ee1a369c2dc41568d0b
Parents: 2cafedd
Author: Justin Ross <jr...@apache.org>
Authored: Tue Jan 9 15:34:43 2018 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Mar 14 10:46:27 2018 -0700

----------------------------------------------------------------------
 src/tests/check_dependencies.py.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-cpp/blob/24c4a378/src/tests/check_dependencies.py.in
----------------------------------------------------------------------
diff --git a/src/tests/check_dependencies.py.in b/src/tests/check_dependencies.py.in
index 57eb760..bcb4cdb 100755
--- a/src/tests/check_dependencies.py.in
+++ b/src/tests/check_dependencies.py.in
@@ -30,7 +30,7 @@ Error! {0}
 The tests require Qpid Python, version 1.35.0 or greater.  Make sure
 Qpid Python is installed and available on the Python path:
 
- - Linux distributions: Install 'python-qpid'
+ - Linux distributions: Install 'python-qpid' and 'qpid-tests'
  - Other: Install qpid-python from source and update PYTHONPATH
 
 See the Qpid website for more information:


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