You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2017/01/03 22:02:33 UTC

[01/30] qpid-proton git commit: PROTON-1363: [C++ binding] Remove unneeded stuff - collector from connection_context - proton::task

Repository: qpid-proton
Updated Branches:
  refs/heads/go1 0889192a3 -> 4afe30d87


PROTON-1363: [C++ binding] Remove unneeded stuff
- collector from connection_context
- proton::task


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

Branch: refs/heads/go1
Commit: 7d404b6ee1d5c4f03d4c0675d986774e10594538
Parents: a34c93b
Author: Andrew Stitcher <as...@apache.org>
Authored: Wed Nov 23 00:41:51 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Mon Nov 28 13:38:38 2016 -0500

----------------------------------------------------------------------
 proton-c/bindings/cpp/CMakeLists.txt            |  2 -
 .../bindings/cpp/include/proton/container.hpp   |  1 -
 proton-c/bindings/cpp/include/proton/task.hpp   | 48 --------------------
 proton-c/bindings/cpp/src/acceptor.cpp          | 27 -----------
 proton-c/bindings/cpp/src/connector.cpp         |  1 -
 proton-c/bindings/cpp/src/container_impl.cpp    |  5 +-
 .../bindings/cpp/src/include/container_impl.hpp |  5 +-
 proton-c/bindings/cpp/src/include/contexts.hpp  |  3 +-
 proton-c/bindings/cpp/src/include/reactor.hpp   |  3 +-
 .../bindings/cpp/src/io/connection_driver.cpp   |  2 -
 proton-c/bindings/cpp/src/reactor.cpp           |  7 +--
 proton-c/bindings/cpp/src/receiver.cpp          |  7 +--
 proton-c/bindings/cpp/src/task.cpp              | 29 ------------
 13 files changed, 10 insertions(+), 130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/CMakeLists.txt b/proton-c/bindings/cpp/CMakeLists.txt
index 6af4319..5e0a8c7 100644
--- a/proton-c/bindings/cpp/CMakeLists.txt
+++ b/proton-c/bindings/cpp/CMakeLists.txt
@@ -27,7 +27,6 @@ include_directories(
 add_definitions(${CXX_WARNING_FLAGS})
 
 set(qpid-proton-cpp-source
-  src/acceptor.cpp
   src/binary.cpp
   src/byte_array.cpp
   src/cached_map.cpp
@@ -73,7 +72,6 @@ set(qpid-proton-cpp-source
   src/ssl.cpp
   src/ssl_domain.cpp
   src/target.cpp
-  src/task.cpp
   src/terminus.cpp
   src/timestamp.cpp
   src/tracker.cpp

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/include/proton/container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/container.hpp b/proton-c/bindings/cpp/include/proton/container.hpp
index 5006329..7d2d34c 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -46,7 +46,6 @@ class receiver;
 class receiver_options;
 class sender;
 class sender_options;
-class task;
 
 /// A top-level container of connections, sessions, senders, and
 /// receivers.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/include/proton/task.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/task.hpp b/proton-c/bindings/cpp/include/proton/task.hpp
deleted file mode 100644
index c13d7ad..0000000
--- a/proton-c/bindings/cpp/include/proton/task.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef PROTON_TASK_HPP
-#define PROTON_TASK_HPP
-
-/*
- *
- * 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.
- *
- */
-
-/// @cond INTERNAL
-/// XXX Needs more discussion
-    
-#include "./internal/export.hpp"
-#include "./internal/object.hpp"
-
-#include <proton/reactor.h>
-
-namespace proton {
-
-/// **Experimental** - A task for timer events.
-class task : public internal::object<pn_task_t> {
-  public:
-    task(pn_task_t* t) : internal::object<pn_task_t>(t) {}
-
-    /// Cancel the scheduled task.
-    PN_CPP_EXTERN void cancel();
-};
-
-} // proton
-
-/// @endcond
-
-#endif // PROTON_TASK_HPP

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/acceptor.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/acceptor.cpp b/proton-c/bindings/cpp/src/acceptor.cpp
deleted file mode 100644
index 1b5a0bd..0000000
--- a/proton-c/bindings/cpp/src/acceptor.cpp
+++ /dev/null
@@ -1,27 +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.
- *
- */
-#include "acceptor.hpp"
-
-namespace proton {
-
-void acceptor::close() { pn_acceptor_close(pn_object()); }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/connector.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/connector.cpp b/proton-c/bindings/cpp/src/connector.cpp
index 91ba730..045d4de 100644
--- a/proton-c/bindings/cpp/src/connector.cpp
+++ b/proton-c/bindings/cpp/src/connector.cpp
@@ -25,7 +25,6 @@
 #include "proton/transport.hpp"
 #include "proton/container.hpp"
 #include "proton/reconnect_timer.hpp"
-#include "proton/task.hpp"
 #include "proton/sasl.hpp"
 #include "proton/url.hpp"
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/container_impl.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container_impl.cpp b/proton-c/bindings/cpp/src/container_impl.cpp
index aca67ae..a818c0f 100644
--- a/proton-c/bindings/cpp/src/container_impl.cpp
+++ b/proton-c/bindings/cpp/src/container_impl.cpp
@@ -27,7 +27,6 @@
 #include "proton/event_loop.hpp"
 #include "proton/sender.hpp"
 #include "proton/receiver.hpp"
-#include "proton/task.hpp"
 #include "proton/ssl.hpp"
 #include "proton/sasl.hpp"
 #include "proton/transport.hpp"
@@ -265,12 +264,12 @@ void container_impl::stop_listening(const std::string& url) {
         close_acceptor(i->second);
 }
 
-task container_impl::schedule(container& c, int delay, proton_handler *h) {
+void container_impl::schedule(container& c, int delay, proton_handler *h) {
     container_impl& ci = static_cast<container_impl&>(c);
     internal::pn_ptr<pn_handler_t> task_handler;
     if (h)
         task_handler = ci.cpp_handler(h);
-    return ci.reactor_.schedule(delay, task_handler.get());
+    ci.reactor_.schedule(delay, task_handler.get());
 }
 
 namespace {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/include/container_impl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/container_impl.hpp b/proton-c/bindings/cpp/src/include/container_impl.hpp
index 97f6be2..0ffc2eb 100644
--- a/proton-c/bindings/cpp/src/include/container_impl.hpp
+++ b/proton-c/bindings/cpp/src/include/container_impl.hpp
@@ -22,8 +22,6 @@
  *
  */
 
-#include "proton/io/link_namer.hpp"
-
 #include "proton/container.hpp"
 #include "proton/connection.hpp"
 #include "proton/connection_options.hpp"
@@ -48,7 +46,6 @@ class connector;
 class acceptor;
 class container;
 class url;
-class task;
 class listen_handler;
 
 class container_impl : public standard_container {
@@ -88,7 +85,7 @@ class container_impl : public standard_container {
 
     // non-interface functions
     void configure_server_connection(connection &c);
-    static task schedule(container& c, int delay, proton_handler *h);
+    static void schedule(container& c, int delay, proton_handler *h);
     template <class T> static void set_handler(T s, messaging_handler* h);
 
   private:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/include/contexts.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/contexts.hpp b/proton-c/bindings/cpp/src/include/contexts.hpp
index 1d4194e..4306489 100644
--- a/proton-c/bindings/cpp/src/include/contexts.hpp
+++ b/proton-c/bindings/cpp/src/include/contexts.hpp
@@ -85,13 +85,12 @@ class context {
 // Connection context used by all connections.
 class connection_context : public context {
   public:
-    connection_context() : container(0), default_session(0), link_gen(0), collector(0) {}
+    connection_context() : container(0), default_session(0), link_gen(0) {}
 
     class container* container;
     pn_session_t *default_session; // Owned by connection.
     message event_message;      // re-used by messaging_adapter for performance.
     io::link_namer* link_gen;      // Link name generator.
-    pn_collector_t* collector;
 
     internal::pn_unique_ptr<proton_handler> handler;
     internal::pn_unique_ptr<class event_loop> event_loop;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/include/reactor.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/reactor.hpp b/proton-c/bindings/cpp/src/include/reactor.hpp
index c7ab915..21df5ce 100644
--- a/proton-c/bindings/cpp/src/include/reactor.hpp
+++ b/proton-c/bindings/cpp/src/include/reactor.hpp
@@ -38,7 +38,6 @@ class container;
 class acceptor;
 class url;
 class messaging_handler;
-class task;
 
 class reactor : public internal::object<pn_reactor_t> {
   public:
@@ -74,7 +73,7 @@ class reactor : public internal::object<pn_reactor_t> {
     timestamp mark();
     timestamp now();
 
-    task schedule(int, pn_handler_t*);
+    void schedule(int, pn_handler_t*);
 
     class connection connection(pn_handler_t*) const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/io/connection_driver.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/io/connection_driver.cpp b/proton-c/bindings/cpp/src/io/connection_driver.cpp
index 06b01d8..ca9f68e 100644
--- a/proton-c/bindings/cpp/src/io/connection_driver.cpp
+++ b/proton-c/bindings/cpp/src/io/connection_driver.cpp
@@ -68,8 +68,6 @@ void connection_driver::configure(const connection_options& opts, bool server) {
     pn_connection_driver_bind(&driver_);
     opts.apply_bound(c);
     handler_ =  opts.handler();
-    connection_context::get(connection()).collector =
-      pn_connection_collector(driver_.connection);
 }
 
 void connection_driver::connect(const connection_options& opts) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/reactor.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/reactor.cpp b/proton-c/bindings/cpp/src/reactor.cpp
index 15547f0..39f670f 100644
--- a/proton-c/bindings/cpp/src/reactor.cpp
+++ b/proton-c/bindings/cpp/src/reactor.cpp
@@ -21,7 +21,6 @@
 #include "acceptor.hpp"
 
 #include "proton/connection.hpp"
-#include "proton/task.hpp"
 #include "proton/url.hpp"
 
 #include "contexts.hpp"
@@ -45,12 +44,14 @@ void reactor::yield() { pn_reactor_yield(pn_object()); }
 timestamp reactor::mark() { return timestamp(pn_reactor_mark(pn_object())); }
 timestamp reactor::now() { return timestamp(pn_reactor_now(pn_object())); }
 
+void acceptor::close() { pn_acceptor_close(pn_object()); }
+
 acceptor reactor::listen(const url& url){
     return make_wrapper(pn_reactor_acceptor(pn_object(), url.host().c_str(), url.port().c_str(), 0));
 }
 
-task reactor::schedule(int delay, pn_handler_t* handler) {
-    return pn_reactor_schedule(pn_object(), delay, handler);
+void reactor::schedule(int delay, pn_handler_t* handler) {
+    pn_reactor_schedule(pn_object(), delay, handler);
 }
 
 connection reactor::connection(pn_handler_t* h) const {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/receiver.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/receiver.cpp b/proton-c/bindings/cpp/src/receiver.cpp
index e5ec55a..2c417f0 100644
--- a/proton-c/bindings/cpp/src/receiver.cpp
+++ b/proton-c/bindings/cpp/src/receiver.cpp
@@ -73,12 +73,7 @@ void receiver::drain() {
             // Drain is already complete.  No state to communicate over the wire.
             // Create dummy flow event where "drain finish" can be detected.
             pn_connection_t *pnc = pn_session_connection(pn_link_session(pn_object()));
-            connection_context& cctx = connection_context::get(pnc);
-            // connection_driver collector is per connection.  Reactor collector is global.
-            pn_collector_t *coll = cctx.collector;
-            if (!coll)
-                coll = pn_reactor_collector(pn_object_reactor(pnc));
-            pn_collector_put(coll, PN_OBJECT, pn_object(), PN_LINK_FLOW);
+            pn_collector_put(pn_connection_collector(pnc), PN_OBJECT, pn_object(), PN_LINK_FLOW);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7d404b6e/proton-c/bindings/cpp/src/task.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/task.cpp b/proton-c/bindings/cpp/src/task.cpp
deleted file mode 100644
index b71212b..0000000
--- a/proton-c/bindings/cpp/src/task.cpp
+++ /dev/null
@@ -1,29 +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.
- *
- */
-
-#include "proton/task.hpp"
-#include <proton/reactor.h>
-
-namespace proton {
-
-void task::cancel() { pn_task_cancel(pn_object()); }
-
-}


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


[18/30] qpid-proton git commit: NO-JIRA: update mailing list details

Posted by ac...@apache.org.
NO-JIRA: update mailing list details


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

Branch: refs/heads/go1
Commit: db05c132b6efed61eceacd796f1bc1b685da8095
Parents: 6c80c46
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 11:44:14 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 11:44:14 2016 +0000

----------------------------------------------------------------------
 DEVELOPERS.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/db05c132/DEVELOPERS.md
----------------------------------------------------------------------
diff --git a/DEVELOPERS.md b/DEVELOPERS.md
index 4e9b06b..7d631e6 100644
--- a/DEVELOPERS.md
+++ b/DEVELOPERS.md
@@ -100,9 +100,9 @@ when running the Maven build directly:
 Mailing list
 ------------
 
-Subscribe to the Qpid Proton mailing list here:
+Subscribe to the Qpid mailing lists using details at:
 
-  http://qpid.apache.org/proton/mailing_lists.html
+  http://qpid.apache.org/discussion.html
 
 
 Patches


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


[27/30] qpid-proton git commit: PROTON-1378: only generate a single PN_REACTOR_FINAL in reactor.c

Posted by ac...@apache.org.
PROTON-1378: only generate a single PN_REACTOR_FINAL in reactor.c


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

Branch: refs/heads/go1
Commit: 673c75e71af00bf56e0e977c46be572144dbb578
Parents: 9377d85
Author: Clifford Jansen <cl...@apache.org>
Authored: Wed Dec 21 10:37:31 2016 -0800
Committer: Clifford Jansen <cl...@apache.org>
Committed: Wed Dec 21 10:37:31 2016 -0800

----------------------------------------------------------------------
 proton-c/src/reactor/reactor.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/673c75e7/proton-c/src/reactor/reactor.c
----------------------------------------------------------------------
diff --git a/proton-c/src/reactor/reactor.c b/proton-c/src/reactor/reactor.c
index abf5d1e..bbf94f1 100644
--- a/proton-c/src/reactor/reactor.c
+++ b/proton-c/src/reactor/reactor.c
@@ -436,7 +436,8 @@ bool pn_reactor_process(pn_reactor_t *reactor) {
         pn_reactor_update(reactor, reactor->selectable);
         reactor->selectable = NULL;
       } else {
-        pn_collector_put(reactor->collector, PN_OBJECT, reactor, PN_REACTOR_FINAL);
+        if (reactor->previous != PN_REACTOR_FINAL)
+          pn_collector_put(reactor->collector, PN_OBJECT, reactor, PN_REACTOR_FINAL);
         return false;
       }
     }


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


[05/30] qpid-proton git commit: NO-JIRA: remove stale mention of updating setup versions for the python bindings

Posted by ac...@apache.org.
NO-JIRA: remove stale mention of updating setup versions for the python bindings


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

Branch: refs/heads/go1
Commit: 6b18e633d5e980d483211129e400d245fe4e9c95
Parents: d39730b
Author: Robert Gemmell <ro...@apache.org>
Authored: Fri Dec 2 14:55:14 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Fri Dec 2 14:55:14 2016 +0000

----------------------------------------------------------------------
 RELEASE.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/6b18e633/RELEASE.md
----------------------------------------------------------------------
diff --git a/RELEASE.md b/RELEASE.md
index 8be148e..232e944 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -3,9 +3,8 @@
 1. Grab a clean checkout for safety.
 2. Run: "git checkout ${BRANCH}" to switch to a branch of the intended release point.
 3. Update the versions:
-  - Run: "bin/version.sh ${VERSION}", e.g. bin/version.sh 0.15.0.
+  - Run: "bin/version.sh ${VERSION}", e.g. bin/version.sh 0.17.0
   - Update the version(s) if needed in file: proton-c/bindings/python/docs/conf.py
-  - Update the version(s) if needed in file: proton-c/bindings/python/setuputils/bundle.py
 4. Commit the changes, tag them.
   - Run: "git add ."
   - Run: 'git commit -m "update versions for ${TAG}"'


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


[20/30] qpid-proton git commit: NO-JIRA: dont try to install previously-deleted TODO file...

Posted by ac...@apache.org.
NO-JIRA: dont try to install previously-deleted TODO file...


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

Branch: refs/heads/go1
Commit: 6a6511d82594596210c95f9a5a17c09c675605fd
Parents: e99d074
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 13:57:31 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 13:57:31 2016 +0000

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


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/6a6511d8/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index df18cfa..a6cca43 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -180,7 +180,7 @@ endif (ENABLE_VALGRIND)
 add_subdirectory(proton-c)
 add_subdirectory(examples)
 
-install (FILES LICENSE README.md TODO
+install (FILES LICENSE README.md
          DESTINATION ${PROTON_SHARE})
 
 install (DIRECTORY examples


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


[08/30] qpid-proton git commit: PROTON-1367: Adjust deprecations; improve rendered doc output

Posted by ac...@apache.org.
PROTON-1367: Adjust deprecations; improve rendered doc output


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

Branch: refs/heads/go1
Commit: 140cf99744406804a5b5754baa99fd1af9e21d08
Parents: 7bae475
Author: Justin Ross <jr...@apache.org>
Authored: Fri Dec 2 13:05:27 2016 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Fri Dec 2 13:05:27 2016 -0800

----------------------------------------------------------------------
 examples/c/proactor/README.dox              | 32 +++++-----
 proton-c/docs/api/index.md                  | 18 +++---
 proton-c/docs/api/user.doxygen.in           | 19 ++++--
 proton-c/include/proton/codec.h             | 22 ++++---
 proton-c/include/proton/condition.h         | 10 +++-
 proton-c/include/proton/connection.h        |  4 ++
 proton-c/include/proton/connection_driver.h |  2 +-
 proton-c/include/proton/delivery.h          |  2 +
 proton-c/include/proton/disposition.h       |  2 +
 proton-c/include/proton/error.h             |  2 +
 proton-c/include/proton/event.h             |  2 +
 proton-c/include/proton/handlers.h          |  2 -
 proton-c/include/proton/link.h              |  4 ++
 proton-c/include/proton/message.h           |  2 +
 proton-c/include/proton/messenger.h         |  6 +-
 proton-c/include/proton/reactor.h           |  2 -
 proton-c/include/proton/sasl.h              |  2 +
 proton-c/include/proton/selectable.h        |  2 -
 proton-c/include/proton/session.h           |  4 ++
 proton-c/include/proton/ssl.h               |  2 +
 proton-c/include/proton/terminus.h          |  2 +
 proton-c/include/proton/transport.h         | 76 ++++++++++++------------
 proton-c/include/proton/types.h             | 22 ++++---
 proton-c/include/proton/url.h               |  3 +-
 24 files changed, 144 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/examples/c/proactor/README.dox
----------------------------------------------------------------------
diff --git a/examples/c/proactor/README.dox b/examples/c/proactor/README.dox
index 9817267..4b09cb7 100644
--- a/examples/c/proactor/README.dox
+++ b/examples/c/proactor/README.dox
@@ -1,15 +1,17 @@
-/// @example send.c
-///
-/// Send a fixed number of messages to the "example" node.
-///
-/// @example receive.c
-///
-/// Subscribes to the 'example' node and prints the message bodies
-/// received.
-///
-/// @example broker.c
-/// 
-/// A simple multi-threaded broker that works with the send and
-/// receive examples.
-///
-/// __Requires C++11__
+/**
+ * @example send.c
+ *
+ * Send a fixed number of messages to the "example" node.
+ *
+ * @example receive.c
+ *
+ * Subscribes to the 'example' node and prints the message bodies
+ * received.
+ *
+ * @example broker.c
+ *
+ * A simple multithreaded broker that works with the send and receive
+ * examples.
+ *
+ * __Requires C++11__
+ */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/docs/api/index.md
----------------------------------------------------------------------
diff --git a/proton-c/docs/api/index.md b/proton-c/docs/api/index.md
index 2936278..cf35c33 100644
--- a/proton-c/docs/api/index.md
+++ b/proton-c/docs/api/index.md
@@ -1,5 +1,9 @@
 # Introduction {#index}
 
+This is the C API for the Proton AMQP protocol engine. It allows you
+to write client and server applications that send and receive AMQP
+messages.
+
 ## Core
 
 @ref core is a collection of types and functions representing AMQP
@@ -9,7 +13,8 @@ receive @ref message "messages".
 
 ## Types
 
-@ref types contains Protocol and API data types.
+@ref types contains C data types, including @ref amqp\_types and @ref
+api\_types.
 
 ## Codec
 
@@ -17,7 +22,7 @@ receive @ref message "messages".
 
 ## IO
 
-@ref io holds interfaces for IO integration.
+@ref io holds interfaces for integrating Proton with platform IO.
 
 The @ref proactor is a portable, proactive, asynchronous API for
 single- or multithreaded applications. It associates AMQP @ref
@@ -30,12 +35,3 @@ low-level SPI to feed byte streams from any source to the protocol
 engine. You can use it to integrate Proton directly with a foreign
 event loop or IO library, or to implement your own @ref proactor to
 transparently replace Proton's IO layer.
-
-<!--
-
-**Old APIs** - The @ref messenger and @ref reactor APIs are older APIs
-that were limited to single-threaded applications.  @ref reactor
-applications can be converted to use the @ref proactor since most of
-the code is written to the common @ref engine API.
-
--->

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/docs/api/user.doxygen.in
----------------------------------------------------------------------
diff --git a/proton-c/docs/api/user.doxygen.in b/proton-c/docs/api/user.doxygen.in
index 2d4d815..7c4a771 100644
--- a/proton-c/docs/api/user.doxygen.in
+++ b/proton-c/docs/api/user.doxygen.in
@@ -19,7 +19,7 @@
 
 # Project options
 
-PROJECT_NAME            = "Qpid Proton C"
+PROJECT_NAME            = "Qpid Proton C API"
 PROJECT_NUMBER          = @PN_VERSION_MAJOR@.@PN_VERSION_MINOR@.@PN_VERSION_POINT@
 OUTPUT_DIRECTORY        = .
 OUTPUT_LANGUAGE         = English
@@ -28,7 +28,7 @@ REPEAT_BRIEF            = YES
 ALWAYS_DETAILED_SEC     = NO
 INLINE_INHERITED_MEMB   = YES
 JAVADOC_AUTOBRIEF       = YES
-MULTILINE_CPP_IS_BRIEF  = NO
+#MULTILINE_CPP_IS_BRIEF  = NO
 INHERIT_DOCS            = YES
 BUILTIN_STL_SUPPORT     = YES
 INLINE_SIMPLE_STRUCTS   = YES
@@ -45,7 +45,7 @@ ENABLE_PREPROCESSING = YES
 MACRO_EXPANSION = YES
 EXPAND_ONLY_PREDEF = YES
 PREDEFINED = PN_EXTERN= PNX_EXTERN=
-#EXCLUDE_SYMBOLS = 
+#EXCLUDE_SYMBOLS =
 
 # Configuration options related to warning and progress messages
 
@@ -56,7 +56,17 @@ WARNINGS               = YES
 
 INPUT = @CMAKE_SOURCE_DIR@/proton-c/include @CMAKE_SOURCE_DIR@/proton-c/docs @CMAKE_SOURCE_DIR@/examples/c
 FILE_PATTERNS          = *.h *.md *.dox
-# Don't parse example sources, only *. md and *.dox
+EXCLUDE = \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/cid.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/engine.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/handlers.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/import_export.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/log.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/object.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/parser.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/reactor.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/selectable.h \
+  @CMAKE_SOURCE_DIR@/proton-c/include/proton/type_compat.h
 EXCLUDE_PATTERNS       = @CMAKE_SOURCE_DIR@/examples/*.c @CMAKE_SOURCE_DIR@/examples/*.h
 FULL_PATH_NAMES        = YES
 RECURSIVE              = YES
@@ -71,6 +81,7 @@ GENERATE_TODOLIST       = NO
 GENERATE_TESTLIST       = NO
 GENERATE_BUGLIST        = NO
 GENERATE_DEPRECATEDLIST = YES
+IGNORE_PREFIX           = pn_ PN_
 
 # Configuration options related to the output format
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/codec.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/codec.h b/proton-c/include/proton/codec.h
index e812098..8f96774 100644
--- a/proton-c/include/proton/codec.h
+++ b/proton-c/include/proton/codec.h
@@ -35,6 +35,8 @@ extern "C" {
 
 /**
  * @file
+ *
+ * @copybrief codec
  */
 
 /**
@@ -190,14 +192,11 @@ typedef enum {
 PN_EXTERN const char *pn_type_name(pn_type_t type);
 
 /**
- * @addtogroup codec
- * @{
- */
-    
-/**
  * A descriminated union that holds any scalar AMQP value. The type
  * field indicates the AMQP type of the value, and the union may be
  * used to access the value for a given type.
+ *
+ * @ingroup api_types
  */
 typedef struct {
   /**
@@ -303,6 +302,11 @@ typedef struct {
 } pn_atom_t;
 
 /**
+ * @addtogroup data
+ * @{
+ */
+
+/**
  * An AMQP Data object.
  *
  * A pn_data_t object provides an interface for decoding, extracting,
@@ -400,14 +404,14 @@ PN_EXTERN pn_error_t *pn_data_error(pn_data_t *data);
 
 /**
  * @cond INTERNAL
- */    
+ */
 PN_EXTERN int pn_data_vfill(pn_data_t *data, const char *fmt, va_list ap);
 PN_EXTERN int pn_data_fill(pn_data_t *data, const char *fmt, ...);
 PN_EXTERN int pn_data_vscan(pn_data_t *data, const char *fmt, va_list ap);
 PN_EXTERN int pn_data_scan(pn_data_t *data, const char *fmt, ...);
 /**
  * @endcond
- */    
+ */
 
 /**
  * Clears a pn_data_t object.
@@ -482,11 +486,11 @@ PN_EXTERN bool pn_data_exit(pn_data_t *data);
 
 /**
  * @cond INTERNAL
- */    
+ */
 PN_EXTERN bool pn_data_lookup(pn_data_t *data, const char *name);
 /**
  * @endcond
- */    
+ */
 
 /**
  * Access the type of the current node. Returns PN_INVALID if there is no

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/condition.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/condition.h b/proton-c/include/proton/condition.h
index ee31b63..631a678 100644
--- a/proton-c/include/proton/condition.h
+++ b/proton-c/include/proton/condition.h
@@ -34,6 +34,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief condition
+ *
  * @addtogroup condition
  * @{
  */
@@ -129,10 +131,14 @@ PN_EXTERN int pn_condition_set_description(pn_condition_t *condition, const char
  */
 PN_EXTERN pn_data_t *pn_condition_info(pn_condition_t *condition);
 
-/** Set the name and printf-style formatted description. */
+/**
+ * Set the name and printf-style formatted description.
+ */
 PN_EXTERN int pn_condition_vformat(pn_condition_t *, const char *name, const char *fmt, va_list ap);
 
-/** Set the name and printf-style formatted description. */
+/**
+ * Set the name and printf-style formatted description.
+ */
 PN_EXTERN int pn_condition_format(pn_condition_t *, const char *name, const char *fmt, ...);
 
 /**

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/connection.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/connection.h b/proton-c/include/proton/connection.h
index 5dd04e4..748cd13 100644
--- a/proton-c/include/proton/connection.h
+++ b/proton-c/include/proton/connection.h
@@ -38,6 +38,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief connection
+ *
  * @addtogroup connection
  * @{
  */
@@ -117,6 +119,8 @@ PN_EXTERN void pn_connection_free(pn_connection_t *connection);
 PN_EXTERN void pn_connection_release(pn_connection_t *connection);
 
 /**
+ * @deprecated
+ *
  * Get additional error information associated with the connection.
  *
  * Whenever a connection operation fails (i.e. returns an error code),

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/connection_driver.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/connection_driver.h b/proton-c/include/proton/connection_driver.h
index 9db8233..b34376d 100644
--- a/proton-c/include/proton/connection_driver.h
+++ b/proton-c/include/proton/connection_driver.h
@@ -23,7 +23,7 @@
 /**
  * @file
  *
- * **Experimental** - Low-level IO integration
+ * @copybrief connection_driver
  *
  * Associate a @ref connection and @ref transport with AMQP byte
  * streams from any source.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/delivery.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/delivery.h b/proton-c/include/proton/delivery.h
index dbb73bf..209bf78 100644
--- a/proton-c/include/proton/delivery.h
+++ b/proton-c/include/proton/delivery.h
@@ -34,6 +34,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief delivery
+ *
  * @addtogroup delivery
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/disposition.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/disposition.h b/proton-c/include/proton/disposition.h
index 95bfe51..1d35db7 100644
--- a/proton-c/include/proton/disposition.h
+++ b/proton-c/include/proton/disposition.h
@@ -34,6 +34,8 @@ extern "C" {
 /**
  * @file
  *
+ * Delivery state
+ *
  * @addtogroup delivery
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/error.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/error.h b/proton-c/include/proton/error.h
index 2986850..c115ee1 100644
--- a/proton-c/include/proton/error.h
+++ b/proton-c/include/proton/error.h
@@ -32,6 +32,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief error
+ *
  * @addtogroup error
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/event.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/event.h b/proton-c/include/proton/event.h
index fad221b..4a88368 100644
--- a/proton-c/include/proton/event.h
+++ b/proton-c/include/proton/event.h
@@ -34,6 +34,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief event
+ *
  * @addtogroup event
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/handlers.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/handlers.h b/proton-c/include/proton/handlers.h
index 6518e87..feff0fe 100644
--- a/proton-c/include/proton/handlers.h
+++ b/proton-c/include/proton/handlers.h
@@ -31,8 +31,6 @@ extern "C" {
 #endif
 
 /**
- * @file
- *
  * @cond INTERNAL
  */
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/link.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/link.h b/proton-c/include/proton/link.h
index aeb3b36..8ec162e 100644
--- a/proton-c/include/proton/link.h
+++ b/proton-c/include/proton/link.h
@@ -37,6 +37,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief link
+ *
  * @addtogroup link
  * @{
  */
@@ -147,6 +149,8 @@ PN_EXTERN bool pn_link_is_receiver(pn_link_t *link);
 PN_EXTERN pn_state_t pn_link_state(pn_link_t *link);
 
 /**
+ * @deprecated
+ *
  * Get additional error information associated with the link.
  *
  * Whenever a link operation fails (i.e. returns an error code),

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/message.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/message.h b/proton-c/include/proton/message.h
index b047a43..5c310b0 100644
--- a/proton-c/include/proton/message.h
+++ b/proton-c/include/proton/message.h
@@ -35,6 +35,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief message
+ *
  * @addtogroup message
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/messenger.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/messenger.h b/proton-c/include/proton/messenger.h
index c11e7a5..74c3fc6 100644
--- a/proton-c/include/proton/messenger.h
+++ b/proton-c/include/proton/messenger.h
@@ -35,10 +35,10 @@ extern "C" {
 
 /**
  * @file
- * @deprecated
  *
- * The messenger API provides a high level interface for sending and
- * receiving AMQP messages.
+ * @copybrief messenger
+ *
+ * @deprecated
  *
  * @addtogroup messenger
  * @{

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/reactor.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/reactor.h b/proton-c/include/proton/reactor.h
index 77d78e6..8d229ab 100644
--- a/proton-c/include/proton/reactor.h
+++ b/proton-c/include/proton/reactor.h
@@ -34,8 +34,6 @@ extern "C" {
 #endif
 
 /**
- * @file
- *
  * @cond INTERNAL
  */
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/sasl.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/sasl.h b/proton-c/include/proton/sasl.h
index f5d6f2a..671ffec 100644
--- a/proton-c/include/proton/sasl.h
+++ b/proton-c/include/proton/sasl.h
@@ -33,6 +33,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief sasl
+ *
  * @addtogroup sasl
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/selectable.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/selectable.h b/proton-c/include/proton/selectable.h
index 56cccde..8c0a4db 100644
--- a/proton-c/include/proton/selectable.h
+++ b/proton-c/include/proton/selectable.h
@@ -32,8 +32,6 @@ extern "C" {
 #endif
 
 /**
- * @file
- *
  * @cond INTERNAL
  */
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/session.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/session.h b/proton-c/include/proton/session.h
index 8cca7f6..8c78db4 100644
--- a/proton-c/include/proton/session.h
+++ b/proton-c/include/proton/session.h
@@ -37,6 +37,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief session
+ *
  * @addtogroup session
  * @{
  */
@@ -108,6 +110,8 @@ PN_EXTERN pn_record_t *pn_session_attachments(pn_session_t *session);
 PN_EXTERN pn_state_t pn_session_state(pn_session_t *session);
 
 /**
+ * @deprecated
+ *
  * Get additional error information associated with the session.
  *
  * Whenever a session operation fails (i.e. returns an error code),

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/ssl.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/ssl.h b/proton-c/include/proton/ssl.h
index ee2997f..4e5a0ca 100644
--- a/proton-c/include/proton/ssl.h
+++ b/proton-c/include/proton/ssl.h
@@ -33,6 +33,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief ssl
+ *
  * @addtogroup ssl
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/terminus.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/terminus.h b/proton-c/include/proton/terminus.h
index 345bdda..c18fb3e 100644
--- a/proton-c/include/proton/terminus.h
+++ b/proton-c/include/proton/terminus.h
@@ -34,6 +34,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief terminus
+ *
  * @addtogroup terminus
  * @{
  */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/transport.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/transport.h b/proton-c/include/proton/transport.h
index adb74bd..09fbb03 100644
--- a/proton-c/include/proton/transport.h
+++ b/proton-c/include/proton/transport.h
@@ -34,6 +34,8 @@ extern "C" {
 /**
  * @file
  *
+ * @copybrief transport
+ *
  * @addtogroup transport
  * @{
  */
@@ -124,8 +126,6 @@ PN_EXTERN void pn_transport_set_server(pn_transport_t *transport);
 PN_EXTERN void pn_transport_free(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Retrieve the authenticated user.
  *
  * This is usually used at the the server end to find the name of the
@@ -146,8 +146,6 @@ PN_EXTERN void pn_transport_free(pn_transport_t *transport);
 PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Set whether a non-authenticated transport connection is allowed.
  *
  * There are several ways within the AMQP protocol suite to get
@@ -164,8 +162,6 @@ PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
 PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool required);
 
 /**
- * @deprecated
- *
  * Tell whether the transport connection is authenticated
  *
  * Note that this property may not be stable until the PN_CONNECTION_REMOTE_OPEN
@@ -177,8 +173,6 @@ PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool require
 PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Set whether a non encrypted transport connection is allowed
  *
  * There are several ways within the AMQP protocol suite to get encrypted connections:
@@ -193,8 +187,6 @@ PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
 PN_EXTERN void pn_transport_require_encryption(pn_transport_t *transport, bool required);
 
 /**
- * @deprecated
- *
  * Tell whether the transport connection is encrypted
  *
  * Note that this property may not be stable until the PN_CONNECTION_REMOTE_OPEN
@@ -246,6 +238,8 @@ PN_EXTERN int pn_transport_unbind(pn_transport_t *transport);
  *
  * @param[in] transport a transport object
  * @param[in] trace the trace flags
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace);
 
@@ -258,6 +252,8 @@ PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace);
  *
  * @param[in] transport a transport object
  * @param[in] tracer the tracing function
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tracer);
 
@@ -266,6 +262,8 @@ PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tr
  *
  * @param[in] transport a transport object
  * @return the tracing function used by a transport
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN pn_tracer_t pn_transport_get_tracer(pn_transport_t *transport);
 
@@ -304,8 +302,6 @@ PN_EXTERN void pn_transport_set_context(pn_transport_t *transport, void *context
 PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Log a message using a transport's logging mechanism.
  *
  * This can be useful in a debugging context as the log message will
@@ -313,12 +309,12 @@ PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
  *
  * @param[in] transport a transport object
  * @param[in] message the message to be logged
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
 
 /**
- * @deprecated
- *
  * Log a printf formatted message using a transport's logging
  * mechanism.
  *
@@ -328,12 +324,12 @@ PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
  * @param[in] transport a transport object
  * @param[in] fmt the printf formatted message to be logged
  * @param[in] ap a vector containing the format arguments
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va_list ap);
 
 /**
- * @deprecated
- *
  * Log a printf formatted message using a transport's logging
  * mechanism.
  *
@@ -342,33 +338,33 @@ PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va
  *
  * @param[in] transport a transport object
  * @param[in] fmt the printf formatted message to be logged
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_logf(pn_transport_t *transport, const char *fmt, ...);
 
 /**
- * @deprecated
- *
  * Get the maximum allowed channel for a transport.
- * This will be the minimum of 
+ * This will be the minimum of
  *   1. limit imposed by this proton implementation
  *   2. limit imposed by remote peer
  *   3. limit imposed by this application, using pn_transport_set_channel_max()
  *
  * @param[in] transport a transport object
  * @return the maximum allowed channel
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Set the maximum allowed channel number for a transport.
- * Note that this is the maximum channel number allowed, giving a 
- * valid channel number range of [0..channel_max]. Therefore the 
- * maximum number of simultaineously active channels will be 
+ * Note that this is the maximum channel number allowed, giving a
+ * valid channel number range of [0..channel_max]. Therefore the
+ * maximum number of simultaineously active channels will be
  * channel_max plus 1.
  * You can call this function more than once to raise and lower
- * the limit your application imposes on max channels for this 
+ * the limit your application imposes on max channels for this
  * transport.  However, smaller limits may be imposed by this
  * library, or by the remote peer.
  * After the OPEN frame has been sent to the remote peer,
@@ -377,82 +373,84 @@ PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
  * @param[in] transport a transport object
  * @param[in] channel_max the maximum allowed channel
  * @return PN_OK, or PN_STATE_ERR if it is too late to change channel_max
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN int pn_transport_set_channel_max(pn_transport_t *transport, uint16_t channel_max);
 
 /**
- * @deprecated
- *
  * Get the maximum allowed channel of a transport's remote peer.
  *
  * @param[in] transport a transport object
  * @return the maximum allowed channel of the transport's remote peer
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN uint16_t pn_transport_remote_channel_max(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Get the maximum frame size of a transport.
  *
  * @param[in] transport a transport object
  * @return the maximum frame size of the transport object
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Set the maximum frame size of a transport.
  *
  * @param[in] transport a transport object
  * @param[in] size the maximum frame size for the transport object
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t size);
 
 /**
- * @deprecated
- *
  * Get the maximum frame size of a transport's remote peer.
  *
  * @param[in] transport a transport object
  * @return the maximum frame size of the transport's remote peer
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Get the idle timeout for a transport.
  *
  * A zero idle timeout means heartbeats are disabled.
  *
  * @param[in] transport a transport object
  * @return the transport's idle timeout
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport);
 
 /**
- * @deprecated
- *
  * Set the idle timeout for a transport.
  *
  * A zero idle timeout means heartbeats are disabled.
  *
  * @param[in] transport a transport object
  * @param[in] timeout the idle timeout for the transport object
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN void pn_transport_set_idle_timeout(pn_transport_t *transport, pn_millis_t timeout);
 
 /**
- * @deprecated
- *
  * Get the idle timeout for a transport's remote peer.
  *
  * A zero idle timeout means heartbeats are disabled.
  *
  * @param[in] transport a transport object
  * @return the idle timeout for the transport's remote peer
+ *
+ * @internal XXX Deprecate!
  */
 PN_EXTERN pn_millis_t pn_transport_get_remote_idle_timeout(pn_transport_t *transport);
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/types.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/types.h b/proton-c/include/proton/types.h
index 2ceadd3..c28beac 100644
--- a/proton-c/include/proton/types.h
+++ b/proton-c/include/proton/types.h
@@ -29,6 +29,8 @@
 /**
  * @file
  *
+ * @copybrief types
+ *
  * @defgroup core Core
  * @brief Core protocol entities and event handling
  *
@@ -77,34 +79,38 @@
  * @ingroup core
  *
  * @defgroup error Error
- * @brief A Proton error
+ * @brief A Proton API error
  * @ingroup core
  *
  * @defgroup types Types
- * @brief Protocol and API data types
+ * @brief AMQP and API data types
  *
- * @defgroup amqp_types AMQP types
+ * @defgroup amqp_types AMQP data types
  * @brief AMQP data types
  * @ingroup types
  *
- * @defgroup api_types API types
+ * @defgroup api_types API data types
  * @brief Additional data types used in the API
  * @ingroup types
  *
  * @defgroup codec Codec
  * @brief AMQP data encoding and decoding
  *
+ * @defgroup data Data
+ * @brief A data structure for AMQP data
+ * @ingroup codec
+ *
  * @defgroup io IO
  * @brief IO integration interfaces
  *
- * @defgroup connection_driver Connection Driver
- * @brief **Experimental** - Low-level IO integration
- * @ingroup io
- *
  * @defgroup proactor Proactor
  * @brief **Experimental** - Multithreaded IO
  * @ingroup io
  *
+ * @defgroup connection_driver Connection driver
+ * @brief **Experimental** - Low-level IO integration
+ * @ingroup io
+ *
  * @defgroup messenger Messenger
  * @deprecated
  * @brief **Deprecated** - The Messenger API

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/140cf997/proton-c/include/proton/url.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/url.h b/proton-c/include/proton/url.h
index 49faa30..e898aba 100644
--- a/proton-c/include/proton/url.h
+++ b/proton-c/include/proton/url.h
@@ -29,8 +29,7 @@ extern "C" {
 /**
  * @file
  *
- * **Deprecated**
- *
+ * @copybrief url
  * @deprecated
  *
  * @addtogroup url


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


[15/30] qpid-proton git commit: PROTON-623: Add missing error check to pn_string_inspect

Posted by ac...@apache.org.
PROTON-623: Add missing error check to pn_string_inspect


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

Branch: refs/heads/go1
Commit: 30d01e98d51cb196d9b997ff3acc495183f3008d
Parents: f89d24d
Author: Bozo Dragojevic <bo...@digiverse.si>
Authored: Thu Dec 8 04:14:22 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Thu Dec 8 04:16:22 2016 -0500

----------------------------------------------------------------------
 proton-c/src/core/object/string.c | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/30d01e98/proton-c/src/core/object/string.c
----------------------------------------------------------------------
diff --git a/proton-c/src/core/object/string.c b/proton-c/src/core/object/string.c
index 13d0739..71db6c4 100644
--- a/proton-c/src/core/object/string.c
+++ b/proton-c/src/core/object/string.c
@@ -80,6 +80,7 @@ static int pn_string_inspect(void *obj, pn_string_t *dst)
   }
 
   int err = pn_string_addf(dst, "\"");
+  if (err) return err;
 
   for (int i = 0; i < str->size; i++) {
     uint8_t c = str->bytes[i];


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


[24/30] qpid-proton git commit: NO-JIRA: Fix maven search to find windows command file on windows

Posted by ac...@apache.org.
NO-JIRA: Fix maven search to find windows command file on windows


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

Branch: refs/heads/go1
Commit: ce8db5a80712404200f7800057723ee47ce506e1
Parents: 16da86e
Author: Andrew Stitcher <as...@apache.org>
Authored: Wed Oct 19 13:41:22 2016 -0400
Committer: Andrew Stitcher <as...@apache.org>
Committed: Thu Dec 8 15:40:25 2016 -0500

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


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ce8db5a8/proton-j/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/proton-j/CMakeLists.txt b/proton-j/CMakeLists.txt
index 788c08f..81cb5a1 100644
--- a/proton-j/CMakeLists.txt
+++ b/proton-j/CMakeLists.txt
@@ -28,7 +28,7 @@ mark_as_advanced (JAVA_INSTALL_DIR)
 install_jar(proton-j ${JAVA_INSTALL_DIR})
 
 # add relevant CTest support
-find_program (MAVEN_EXE mvn DOC "Location of the maven program")
+find_program (MAVEN_EXE NAMES mvn.cmd mvn DOC "Location of the maven program")
 mark_as_advanced (MAVEN_EXE)
 if (CMAKE_BUILD_TYPE MATCHES "Coverage")
   message (STATUS "Building for coverage analysis: testing disabled for Proton-J")


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


[04/30] qpid-proton git commit: PROTON-1366: Raise exception when wrapped object creation fails

Posted by ac...@apache.org.
PROTON-1366: Raise exception when wrapped object creation fails


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

Branch: refs/heads/go1
Commit: d39730bd4494e1a727ffbfa2c2169c384ae83bb5
Parents: 9adbca2
Author: Chuck Rolke <cr...@redhat.com>
Authored: Thu Dec 1 15:23:09 2016 -0500
Committer: Chuck Rolke <cr...@redhat.com>
Committed: Thu Dec 1 15:23:09 2016 -0500

----------------------------------------------------------------------
 proton-c/bindings/python/proton/wrapper.py | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d39730bd/proton-c/bindings/python/proton/wrapper.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/proton/wrapper.py b/proton-c/bindings/python/proton/wrapper.py
index 4bfe2b3..eff917b 100644
--- a/proton-c/bindings/python/proton/wrapper.py
+++ b/proton-c/bindings/python/proton/wrapper.py
@@ -38,6 +38,9 @@ class Wrapper(object):
         if callable(impl_or_constructor):
             # we are constructing a new object
             impl = impl_or_constructor()
+            if impl is None:
+                from proton import ProtonException
+                raise ProtonException("Wrapper failed to create wrapped object. Check for file descriptor or memory exhaustion.")
             init = True
         else:
             # we are wrapping an existing object


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


[07/30] qpid-proton git commit: PROTON-1367: Clean up and reorganize the C API docs

Posted by ac...@apache.org.
PROTON-1367: Clean up and reorganize the C API docs


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

Branch: refs/heads/go1
Commit: 7bae4756390ba7b4e66ff32e2905cf6c500433ee
Parents: 6b18e63
Author: Justin Ross <jr...@apache.org>
Authored: Fri Dec 2 07:59:29 2016 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Fri Dec 2 08:00:02 2016 -0800

----------------------------------------------------------------------
 examples/c/proactor/README.dox              |   35 +-
 proton-c/docs/api/index.md                  |   62 +-
 proton-c/docs/api/user.doxygen.in           | 1693 +---------------------
 proton-c/include/proton/cid.h               |    9 +
 proton-c/include/proton/codec.h             |   28 +-
 proton-c/include/proton/condition.h         |   19 +-
 proton-c/include/proton/connection.h        |   27 +-
 proton-c/include/proton/connection_driver.h |   65 +-
 proton-c/include/proton/delivery.h          |   12 +-
 proton-c/include/proton/disposition.h       |    8 +-
 proton-c/include/proton/engine.h            |   12 +-
 proton-c/include/proton/error.h             |   87 +-
 proton-c/include/proton/event.h             |   29 +-
 proton-c/include/proton/handlers.h          |    9 +-
 proton-c/include/proton/import_export.h     |    7 +
 proton-c/include/proton/link.h              |   26 +-
 proton-c/include/proton/listener.h          |   30 +-
 proton-c/include/proton/log.h               |   21 +-
 proton-c/include/proton/message.h           |    6 +-
 proton-c/include/proton/messenger.h         |   46 +-
 proton-c/include/proton/object.h            |    8 +
 proton-c/include/proton/parser.h            |    8 +
 proton-c/include/proton/proactor.h          |  121 +-
 proton-c/include/proton/reactor.h           |   10 +-
 proton-c/include/proton/sasl.h              |   59 +-
 proton-c/include/proton/selectable.h        |    9 +-
 proton-c/include/proton/session.h           |   26 +-
 proton-c/include/proton/ssl.h               |  144 +-
 proton-c/include/proton/terminus.h          |    8 +-
 proton-c/include/proton/transport.h         |   88 +-
 proton-c/include/proton/type_compat.h       |    8 +
 proton-c/include/proton/types.h             |  201 ++-
 proton-c/include/proton/url.h               |   67 +-
 33 files changed, 886 insertions(+), 2102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/examples/c/proactor/README.dox
----------------------------------------------------------------------
diff --git a/examples/c/proactor/README.dox b/examples/c/proactor/README.dox
index 89f7aaa..9817267 100644
--- a/examples/c/proactor/README.dox
+++ b/examples/c/proactor/README.dox
@@ -1,20 +1,15 @@
-
-/** @example send.c
-
-Send a fixed number of messages to the "example" node.
-
-*/
-
-/** @example simple_recv.cpp
-
-Subscribes to the 'example' node and prints the message bodies received.
-
-*/
-
-/** @example broker.c
-
-A simple multi-threaded broker that works with the send and receive examples.
-
-__Requires C++11__
-
-*/
+/// @example send.c
+///
+/// Send a fixed number of messages to the "example" node.
+///
+/// @example receive.c
+///
+/// Subscribes to the 'example' node and prints the message bodies
+/// received.
+///
+/// @example broker.c
+/// 
+/// A simple multi-threaded broker that works with the send and
+/// receive examples.
+///
+/// __Requires C++11__

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/docs/api/index.md
----------------------------------------------------------------------
diff --git a/proton-c/docs/api/index.md b/proton-c/docs/api/index.md
index fada41c..2936278 100644
--- a/proton-c/docs/api/index.md
+++ b/proton-c/docs/api/index.md
@@ -1,21 +1,41 @@
-Proton Documentation            {#index}
-====================
-
-The @ref engine is a collection of types and functions representing AMQP
-concepts.  Together they form a "protocol engine" API to create AMQP connections
-and links, handle AMQP @ref event "events" and send and receive messages.
-
-The @ref proactor is a portable, proactive, asynchronous API for single or
-multi-threaded applications. It associates the @ref engine API with network
-connections (@ref transport "transports") and allows one or more threads to
-handle @ref event "events".
-
-**Low-level integration**: The @ref connection\_driver provides a low-level SPI
-to feed byte-streams from any source to the @ref engine. You can use it to
-integrate proton directly with a foreign event loop or IO library, or to
-implement your own @ref proactor to transparently replace proton's IO layer.
-
-**Old APIs**: The @ref messenger and @ref reactor APIs are
-older APIs that were limited to single-threaded applications.
-@ref reactor applications can be converted to use the @ref proactor since
-most of the code is written to the common @ref engine API.
+# Introduction {#index}
+
+## Core
+
+@ref core is a collection of types and functions representing AMQP
+concepts.  Together they form a "protocol engine" API to create AMQP
+connections and links, handle @ref event "events", and send and
+receive @ref message "messages".
+
+## Types
+
+@ref types contains Protocol and API data types.
+
+## Codec
+
+@ref codec has functions for AMQP data encoding and decoding.
+
+## IO
+
+@ref io holds interfaces for IO integration.
+
+The @ref proactor is a portable, proactive, asynchronous API for
+single- or multithreaded applications. It associates AMQP @ref
+connection "connections" with network connections (@ref transport
+"transports") and allows one or more threads to handle @ref event
+"events".
+
+**Low-level integration** - The @ref connection\_driver provides a
+low-level SPI to feed byte streams from any source to the protocol
+engine. You can use it to integrate Proton directly with a foreign
+event loop or IO library, or to implement your own @ref proactor to
+transparently replace Proton's IO layer.
+
+<!--
+
+**Old APIs** - The @ref messenger and @ref reactor APIs are older APIs
+that were limited to single-threaded applications.  @ref reactor
+applications can be converted to use the @ref proactor since most of
+the code is written to the common @ref engine API.
+
+-->

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/docs/api/user.doxygen.in
----------------------------------------------------------------------
diff --git a/proton-c/docs/api/user.doxygen.in b/proton-c/docs/api/user.doxygen.in
index 2ea0e48..2d4d815 100644
--- a/proton-c/docs/api/user.doxygen.in
+++ b/proton-c/docs/api/user.doxygen.in
@@ -1,4 +1,4 @@
-#
+##
 ## 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
@@ -17,1661 +17,64 @@
 ## under the License.
 ##
 
-# Doxyfile 1.7.5
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a hash (#) is considered a comment and will be ignored.
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or sequence of words) that should
-# identify the project. Note that if you do not use Doxywizard you need
-# to put quotes around the project name if it contains spaces.
-
-PROJECT_NAME           = proton
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER         = 0
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer
-# a quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          =
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is
-# included in the documentation. The maximum height of the logo should not
-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
-# Doxygen will copy the logo to the output directory.
-
-PROJECT_LOGO           =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = .
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH        =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful if your file system
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this
-# tag. The format is ext=language, where ext is a file extension, and language
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING      =
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields will be shown inline in the documentation
-# of the scope in which they are defined (i.e. file, namespace, or group
-# documentation), provided this scope is documented. If set to NO (the default),
-# structs, classes, and unions are shown on a separate page (for HTML and Man
-# pages) or section (for LaTeX and RTF).
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. The create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
-
-LAYOUT_FILE            =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE.
-
-CITE_BIB_FILES         =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
+# Project options
+
+PROJECT_NAME            = "Qpid Proton C"
+PROJECT_NUMBER          = @PN_VERSION_MAJOR@.@PN_VERSION_MINOR@.@PN_VERSION_POINT@
+OUTPUT_DIRECTORY        = .
+OUTPUT_LANGUAGE         = English
+BRIEF_MEMBER_DESC       = YES
+REPEAT_BRIEF            = YES
+ALWAYS_DETAILED_SEC     = NO
+INLINE_INHERITED_MEMB   = YES
+JAVADOC_AUTOBRIEF       = YES
+MULTILINE_CPP_IS_BRIEF  = NO
+INHERIT_DOCS            = YES
+BUILTIN_STL_SUPPORT     = YES
+INLINE_SIMPLE_STRUCTS   = YES
+HIDE_UNDOC_CLASSES      = YES
+HIDE_COMPOUND_REFERENCE = YES
+HIDE_SCOPE_NAMES        = YES
+MAX_INITIALIZER_LINES   = 0
+ALPHABETICAL_INDEX      = NO
+
+# Redefine protected as private and strip out the PN_EXTERN and
+# PNX_EXTERN macros
+
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = YES
+EXPAND_ONLY_PREDEF = YES
+PREDEFINED = PN_EXTERN= PNX_EXTERN=
+#EXCLUDE_SYMBOLS = 
+
+# Configuration options related to warning and progress messages
 
 QUIET                  = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
 WARNINGS               = YES
 
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE           =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = @CMAKE_SOURCE_DIR@/proton-c/include @CMAKE_SOURCE_DIR@/proton-c/docs/api
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
-
-FILE_PATTERNS          = *.h *.md *.hpp
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
+# Configuration options related to the input files
 
+INPUT = @CMAKE_SOURCE_DIR@/proton-c/include @CMAKE_SOURCE_DIR@/proton-c/docs @CMAKE_SOURCE_DIR@/examples/c
+FILE_PATTERNS          = *.h *.md *.dox
+# Don't parse example sources, only *. md and *.dox
+EXCLUDE_PATTERNS       = @CMAKE_SOURCE_DIR@/examples/*.c @CMAKE_SOURCE_DIR@/examples/*.h
+FULL_PATH_NAMES        = YES
 RECURSIVE              = YES
+STRIP_FROM_PATH        = @CMAKE_SOURCE_DIR@/proton-c/include
+EXAMPLE_PATH           = @CMAKE_SOURCE_DIR@/examples/c
+EXAMPLE_RECURSIVE      = YES
 
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-# Note that relative paths are relative to directory from which doxygen is run.
-
-EXCLUDE                =
+# View and list options
 
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
+GENERATE_TREEVIEW       = YES
+GENERATE_TODOLIST       = NO
+GENERATE_TESTLIST       = NO
+GENERATE_BUGLIST        = NO
+GENERATE_DEPRECATEDLIST = YES
 
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH           =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS       =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH             =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER           =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
-
-FILTER_SOURCE_PATTERNS =
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
+# Configuration options related to the output format
 
 GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
 HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
 HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-#  for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is adviced to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
-HTML_HEADER            =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER            =
-
-# If the HTML_TIMESTAMP tag is set to YES then the generated HTML documentation will contain the timesstamp.
-
-HTML_TIMESTAMP         = NO
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
-
-HTML_EXTRA_FILES       =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the stylesheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE               =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING     =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION           =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-#  will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX          = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW      = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the
-# mathjax.org site, so you can quickly see the result without installing
-# MathJax, but it is strongly recommended to install a local copy of MathJax
-# before deployment.
-
-MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
-
-MATHJAX_EXTENSIONS     =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a PHP enabled web server instead of at the web client
-# using Javascript. Doxygen will generate the search PHP script and index
-# file to put on the web server. The advantage of the server
-# based approach is that it scales better to large projects and allows
-# full text search. The disadvantages are that it is more difficult to setup
-# and does not have live searching capabilities.
-
-SERVER_BASED_SEARCH    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
 GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
-
-LATEX_FOOTER           =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH           =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS  =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED             =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
-
-EXPAND_AS_DEFINED      =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
-
-DOT_NUM_THREADS        = 0
-
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
-
-DOT_FONTPATH           =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
-
-INTERACTIVE_SVG        = NO
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS           =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
-
-MSCFILE_DIRS           =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP            = YES

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/cid.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/cid.h b/proton-c/include/proton/cid.h
index cd68de4..2d68896 100644
--- a/proton-c/include/proton/cid.h
+++ b/proton-c/include/proton/cid.h
@@ -1,5 +1,6 @@
 #ifndef PROTON_CID_H
 #define PROTON_CID_H 1
+
 /*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -21,6 +22,10 @@
  *
  */
 
+/**
+ * @cond INTERNAL
+ */
+
 typedef enum {
   CID_pn_object = 1,
   CID_pn_void,
@@ -62,4 +67,8 @@ typedef enum {
   CID_pn_proactor
 } pn_cid_t;
 
+/**
+ * @endcond
+ */
+
 #endif /* cid.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/codec.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/codec.h b/proton-c/include/proton/codec.h
index d8995fe..e812098 100644
--- a/proton-c/include/proton/codec.h
+++ b/proton-c/include/proton/codec.h
@@ -35,15 +35,12 @@ extern "C" {
 
 /**
  * @file
- * AMQP data encoding and decoding
- *
- * @defgroup data Data
- * AMQP data encoding and decoding
- * @{
  */
 
 /**
  * Identifies an AMQP type.
+ *
+ * @ingroup amqp_types
  */
 typedef enum {
 
@@ -186,12 +183,18 @@ typedef enum {
 /**
  * Return a string name for an AMQP type.
  *
+ * @ingroup amqp_types
  * @param type an AMQP type
  * @return the string name of the given type
  */
 PN_EXTERN const char *pn_type_name(pn_type_t type);
 
 /**
+ * @addtogroup codec
+ * @{
+ */
+    
+/**
  * A descriminated union that holds any scalar AMQP value. The type
  * field indicates the AMQP type of the value, and the union may be
  * used to access the value for a given type.
@@ -395,10 +398,16 @@ PN_EXTERN int pn_data_errno(pn_data_t *data);
  */
 PN_EXTERN pn_error_t *pn_data_error(pn_data_t *data);
 
+/**
+ * @cond INTERNAL
+ */    
 PN_EXTERN int pn_data_vfill(pn_data_t *data, const char *fmt, va_list ap);
 PN_EXTERN int pn_data_fill(pn_data_t *data, const char *fmt, ...);
 PN_EXTERN int pn_data_vscan(pn_data_t *data, const char *fmt, va_list ap);
 PN_EXTERN int pn_data_scan(pn_data_t *data, const char *fmt, ...);
+/**
+ * @endcond
+ */    
 
 /**
  * Clears a pn_data_t object.
@@ -471,7 +480,13 @@ PN_EXTERN bool pn_data_enter(pn_data_t *data);
  */
 PN_EXTERN bool pn_data_exit(pn_data_t *data);
 
+/**
+ * @cond INTERNAL
+ */    
 PN_EXTERN bool pn_data_lookup(pn_data_t *data, const char *name);
+/**
+ * @endcond
+ */    
 
 /**
  * Access the type of the current node. Returns PN_INVALID if there is no
@@ -1265,7 +1280,8 @@ PN_EXTERN bool pn_data_restore(pn_data_t *data, pn_handle_t point);
  */
 PN_EXTERN void pn_data_dump(pn_data_t *data);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/condition.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/condition.h b/proton-c/include/proton/condition.h
index 0f0774b..ee31b63 100644
--- a/proton-c/include/proton/condition.h
+++ b/proton-c/include/proton/condition.h
@@ -33,11 +33,8 @@ extern "C" {
 
 /**
  * @file
- * Error condition
  *
- * @defgroup condition Condition
- * Error condition
- * @ingroup engine
+ * @addtogroup condition
  * @{
  */
 
@@ -166,11 +163,23 @@ PN_EXTERN const char *pn_condition_redirect_host(pn_condition_t *condition);
  */
 PN_EXTERN int pn_condition_redirect_port(pn_condition_t *condition);
 
+/**
+ * Copy the src condition to the dst condition.
+ */
 PN_EXTERN int pn_condition_copy(pn_condition_t *dest, pn_condition_t *src);
+
+/**
+ * Create a condition object.
+ */
 PN_EXTERN pn_condition_t *pn_condition(void);
+
+/**
+ * Free a condition object.
+ */  
 PN_EXTERN void pn_condition_free(pn_condition_t *);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/connection.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/connection.h b/proton-c/include/proton/connection.h
index 19e882f..5dd04e4 100644
--- a/proton-c/include/proton/connection.h
+++ b/proton-c/include/proton/connection.h
@@ -38,11 +38,7 @@ extern "C" {
 /**
  * @file
  *
- * AMQP protocol connection
- *
- * @defgroup connection Connection
- * AMQP protocol connection
- * @ingroup engine
+ * @addtogroup connection
  * @{
  */
 
@@ -50,22 +46,28 @@ extern "C" {
  * The local @link pn_state_t endpoint state @endlink is uninitialized.
  */
 #define PN_LOCAL_UNINIT (1)
+
 /**
  * The local @link pn_state_t endpoint state @endlink is active.
  */
+
 #define PN_LOCAL_ACTIVE (2)
+
 /**
  * The local @link pn_state_t endpoint state @endlink is closed.
  */
 #define PN_LOCAL_CLOSED (4)
+
 /**
  * The remote @link pn_state_t endpoint state @endlink is uninitialized.
  */
 #define PN_REMOTE_UNINIT (8)
+
 /**
  * The remote @link pn_state_t endpoint state @endlink is active.
  */
 #define PN_REMOTE_ACTIVE (16)
+
 /**
  * The remote @link pn_state_t endpoint state @endlink is closed.
  */
@@ -84,6 +86,7 @@ extern "C" {
 #define PN_REMOTE_MASK (PN_REMOTE_UNINIT | PN_REMOTE_ACTIVE | PN_REMOTE_CLOSED)
 
 PN_EXTERN pn_connection_t *pn_connection(void);
+
 /**
  * Factory to construct a new Connection.
  *
@@ -155,8 +158,9 @@ PN_EXTERN void pn_connection_collect(pn_connection_t *connection, pn_collector_t
 */
 PN_EXTERN pn_collector_t* pn_connection_collector(pn_connection_t *connection);
 
-
 /**
+ * @deprecated
+ *
  * Get the application context that is associated with a connection
  * object.
  *
@@ -169,6 +173,8 @@ PN_EXTERN pn_collector_t* pn_connection_collector(pn_connection_t *connection);
 PN_EXTERN void *pn_connection_get_context(pn_connection_t *connection);
 
 /**
+ * @deprecated
+ *
  * Set a new application context for a connection object.
  *
  * The application context for a connection object may be retrieved
@@ -201,7 +207,7 @@ PN_EXTERN pn_state_t pn_connection_state(pn_connection_t *connection);
  * Once this operation has completed, the PN_LOCAL_ACTIVE state flag
  * will be set.
  *
- * @param[in] connection a connection object
+ * @param[in] connection the connection object
  */
 PN_EXTERN void pn_connection_open(pn_connection_t *connection);
 
@@ -213,7 +219,7 @@ PN_EXTERN void pn_connection_open(pn_connection_t *connection);
  * ::pn_connection_open, in this case it is equivalent to calling
  * ::pn_connection_open followed by ::pn_connection_close.
  *
- * @param[in] connection a connection object
+ * @param[in] connection the connection object
  */
 PN_EXTERN void pn_connection_close(pn_connection_t *connection);
 
@@ -223,7 +229,7 @@ PN_EXTERN void pn_connection_close(pn_connection_t *connection);
  * Note that this does *not* remove any contained ::pn_session_t,
  * ::pn_link_t, and ::pn_delivery_t objects.
  *
- * @param[in] connection a connection object
+ * @param[in] connection the connection object
  */
 PN_EXTERN void pn_connection_reset(pn_connection_t *connection);
 
@@ -484,7 +490,8 @@ PN_EXTERN pn_data_t *pn_connection_remote_properties(pn_connection_t *connection
  */
 PN_EXTERN pn_transport_t *pn_connection_transport(pn_connection_t *connection);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus


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


[30/30] qpid-proton git commit: NO-JIRA: Minor logging and error handling fixes.

Posted by ac...@apache.org.
NO-JIRA: Minor logging and error handling fixes.

Merge branch 'master' into go1


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

Branch: refs/heads/go1
Commit: 4afe30d87cf5237209ccf61cb2889859a0ac48a5
Parents: 0889192 4abf23a
Author: Alan Conway <ac...@redhat.com>
Authored: Tue Jan 3 16:59:03 2017 -0500
Committer: Alan Conway <ac...@redhat.com>
Committed: Tue Jan 3 17:02:03 2017 -0500

----------------------------------------------------------------------
 electron/endpoint.go | 4 ++++
 proton/wrappers.go   | 8 ++++----
 2 files changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4afe30d8/electron/endpoint.go
----------------------------------------------------------------------
diff --cc electron/endpoint.go
index ca93e5b,0000000..a6ce6c8
mode 100644,000000..100644
--- a/electron/endpoint.go
+++ b/electron/endpoint.go
@@@ -1,182 -1,0 +1,186 @@@
 +/*
 +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.
 +*/
 +
 +package electron
 +
 +import (
 +	"fmt"
 +	"io"
 +	"qpid.apache.org/proton"
 +)
 +
 +// Closed is an alias for io.EOF. It is returned as an error when an endpoint
 +// was closed cleanly.
 +var Closed = io.EOF
 +
++// EOF is an alias for io.EOF. It is returned as an error when an endpoint
++// was closed cleanly.
++var EOF = io.EOF
++
 +// Endpoint is the local end of a communications channel to the remote peer
 +// process.  The following interface implement Endpoint: Connection, Session,
 +// Sender and Receiver.
 +//
 +// You can create an endpoint with functions on Container, Connection and
 +// Session. You can accept incoming endpoints from the remote peer using
 +// Connection.Incoming()
 +//
 +type Endpoint interface {
 +	// Close an endpoint and signal an error to the remote end if error != nil.
 +	Close(error)
 +
 +	// String is a human readable identifier, useful for debugging and logging.
 +	String() string
 +
 +	// Error returns nil if the endpoint is open, otherwise returns an error.
 +	// Error() == Closed means the endpoint was closed without error.
 +	Error() error
 +
 +	// Connection is the connection associated with this endpoint.
 +	Connection() Connection
 +
 +	// Done returns a channel that will close when the endpoint closes.
 +	// After Done() has closed, Error() will return the reason for closing.
 +	Done() <-chan struct{}
 +
 +	// Sync() waits for the remote peer to confirm the endpoint is active or
 +	// reject it with an error. You can call it immediately on new endpoints
 +	// for more predictable error handling.
 +	//
 +	// AMQP is an asynchronous protocol. It is legal to create an endpoint and
 +	// start using it without waiting for confirmation. This avoids a needless
 +	// delay in the non-error case and throughput by "assuming the best".
 +	//
 +	// However if there *is* an error, these "optimistic" actions will fail. The
 +	// endpoint and its children will be closed with an error. The error will only
 +	// be detected when you try to use one of these endpoints or call Sync()
 +	Sync() error
 +
 +	// Called in handler goroutine when endpoint is remotely closed.
 +	closed(err error) error
 +	wakeSync()
 +}
 +
 +// Base implementation for Endpoint
 +type endpoint struct {
 +	err    proton.ErrorHolder
 +	str    string // String() return value.
 +	done   chan struct{}
 +	active chan struct{}
 +}
 +
 +func (e *endpoint) init(s string) {
 +	e.str = s
 +	e.done = make(chan struct{})
 +	e.active = make(chan struct{})
 +}
 +
 +// Called in proton goroutine on remote open.
 +func (e *endpoint) wakeSync() {
 +	select { // Close active channel if not already closed.
 +	case <-e.active:
 +	default:
 +		close(e.active)
 +	}
 +}
 +
 +// Called in proton goroutine (from handler) on a Closed or Disconnected event.
 +//
 +// Set err if there is not already an error on the endpoint.
 +// Return Error()
 +func (e *endpoint) closed(err error) error {
 +	select {
 +	case <-e.done:
 +		// Already closed
 +	default:
 +		e.err.Set(err)
 +		e.err.Set(Closed)
 +		e.wakeSync() // Make sure we wake up Sync()
 +		close(e.done)
 +	}
 +	return e.Error()
 +}
 +
 +func (e *endpoint) String() string { return e.str }
 +
 +func (e *endpoint) Error() error { return e.err.Get() }
 +
 +func (e *endpoint) Done() <-chan struct{} { return e.done }
 +
 +func (e *endpoint) Sync() error {
 +	<-e.active
 +	return e.Error()
 +}
 +
 +// Call in proton goroutine to initiate closing an endpoint locally
 +// handler will complete the close when remote end closes.
 +func localClose(ep proton.Endpoint, err error) {
 +	if ep.State().LocalActive() {
 +		proton.CloseError(ep, err)
 +	}
 +}
 +
 +// Incoming is the interface for incoming endpoints, see Connection.Incoming()
 +//
 +// Call Incoming.Accept() to open the endpoint or Incoming.Reject() to close it
 +// with optional error
 +//
 +// Implementing types are *IncomingConnection, *IncomingSession, *IncomingSender
 +// and *IncomingReceiver. Each type provides methods to examine the incoming
 +// endpoint request and set configuration options for the local endpoint
 +// before calling Accept() or Reject()
 +type Incoming interface {
 +	// Accept and open the endpoint.
 +	Accept() Endpoint
 +
 +	// Reject the endpoint with an error
 +	Reject(error)
 +
 +	// wait for and call the accept function, call in proton goroutine.
 +	wait() error
 +	pEndpoint() proton.Endpoint
 +}
 +
 +type incoming struct {
 +	pep      proton.Endpoint
 +	acceptCh chan func() error
 +}
 +
 +func makeIncoming(e proton.Endpoint) incoming {
 +	return incoming{pep: e, acceptCh: make(chan func() error)}
 +}
 +
 +func (in *incoming) String() string   { return fmt.Sprintf("%s: %s", in.pep.Type(), in.pep) }
 +func (in *incoming) Reject(err error) { in.acceptCh <- func() error { return err } }
 +
 +// Call in proton goroutine, wait for and call the accept function.
 +func (in *incoming) wait() error { return (<-in.acceptCh)() }
 +
 +func (in *incoming) pEndpoint() proton.Endpoint { return in.pep }
 +
 +// Called in app goroutine to send an accept function to proton and return the resulting endpoint.
 +func (in *incoming) accept(f func() Endpoint) Endpoint {
 +	done := make(chan Endpoint)
 +	in.acceptCh <- func() error {
 +		ep := f()
 +		done <- ep
 +		return nil
 +	}
 +	return <-done
 +}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4afe30d8/proton/wrappers.go
----------------------------------------------------------------------
diff --cc proton/wrappers.go
index 4d55e4f,0000000..b6386b8
mode 100644,000000..100644
--- a/proton/wrappers.go
+++ b/proton/wrappers.go
@@@ -1,431 -1,0 +1,431 @@@
 +/*
 +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 file contains special-case wrapper functions or wrappers that don't follow
 +// the pattern of genwrap.go.
 +
 +package proton
 +
 +//#include <proton/codec.h>
 +//#include <proton/connection.h>
 +//#include <proton/delivery.h>
 +//#include <proton/event.h>
 +//#include <proton/link.h>
 +//#include <proton/link.h>
 +//#include <proton/object.h>
 +//#include <proton/sasl.h>
 +//#include <proton/session.h>
 +//#include <proton/transport.h>
 +//#include <stdlib.h>
 +import "C"
 +
 +import (
 +	"fmt"
 +	"qpid.apache.org/amqp"
 +	"reflect"
 +	"time"
 +	"unsafe"
 +)
 +
 +// TODO aconway 2015-05-05: Documentation for generated types.
 +
 +// CHandle holds an unsafe.Pointer to a proton C struct, the C type depends on the
 +// Go type implementing this interface. For low level, at-your-own-risk use only.
 +type CHandle interface {
 +	// CPtr returns the unsafe C pointer, equivalent to a C void*.
 +	CPtr() unsafe.Pointer
 +}
 +
 +// Incref increases the refcount of a proton value, which prevents the
 +// underlying C struct being freed until you call Decref().
 +//
 +// It can be useful to "pin" a proton value in memory while it is in use by
 +// goroutines other than the event loop goroutine. For example if you Incref() a
 +// Link, the underlying object is not freed when the link is closed, so means
 +// other goroutines can continue to safely use it as an index in a map or inject
 +// it into the event loop goroutine. There will of course be an error if you try
 +// to use a link after it is closed, but not a segmentation fault.
 +func Incref(c CHandle) {
 +	if p := c.CPtr(); p != nil {
 +		C.pn_incref(p)
 +	}
 +}
 +
 +// Decref decreases the refcount of a proton value, freeing the underlying C
 +// struct if this is the last reference.  Only call this if you previously
 +// called Incref() for this value.
 +func Decref(c CHandle) {
 +	if p := c.CPtr(); p != nil {
 +		C.pn_decref(p)
 +	}
 +}
 +
 +// Event is an AMQP protocol event.
 +type Event struct {
 +	pn         *C.pn_event_t
 +	eventType  EventType
 +	connection Connection
 +	transport  Transport
 +	session    Session
 +	link       Link
 +	delivery   Delivery
 +	injecter   Injecter
 +}
 +
 +func makeEvent(pn *C.pn_event_t, injecter Injecter) Event {
 +	return Event{
 +		pn:         pn,
 +		eventType:  EventType(C.pn_event_type(pn)),
 +		connection: Connection{C.pn_event_connection(pn)},
 +		transport:  Transport{C.pn_event_transport(pn)},
 +		session:    Session{C.pn_event_session(pn)},
 +		link:       Link{C.pn_event_link(pn)},
 +		delivery:   Delivery{C.pn_event_delivery(pn)},
 +		injecter:   injecter,
 +	}
 +}
 +func (e Event) IsNil() bool            { return e.eventType == EventType(0) }
 +func (e Event) Type() EventType        { return e.eventType }
 +func (e Event) Connection() Connection { return e.connection }
 +func (e Event) Transport() Transport   { return e.transport }
 +func (e Event) Session() Session       { return e.session }
 +func (e Event) Link() Link             { return e.link }
 +func (e Event) Delivery() Delivery     { return e.delivery }
 +func (e Event) String() string         { return e.Type().String() }
 +
 +// Injecter should not be used in a handler function, but it can be passed to
 +// other goroutines (via a channel or to a goroutine started by handler
 +// functions) to let them inject functions back into the handlers goroutine.
 +func (e Event) Injecter() Injecter { return e.injecter }
 +
 +// Data holds a pointer to decoded AMQP data.
 +// Use amqp.marshal/unmarshal to access it as Go data types.
 +//
 +type Data struct{ pn *C.pn_data_t }
 +
 +func NewData(p unsafe.Pointer) Data { return Data{(*C.pn_data_t)(p)} }
 +
 +func (d Data) Free()                   { C.pn_data_free(d.pn) }
 +func (d Data) Pointer() unsafe.Pointer { return unsafe.Pointer(d.pn) }
 +func (d Data) Clear()                  { C.pn_data_clear(d.pn) }
 +func (d Data) Rewind()                 { C.pn_data_rewind(d.pn) }
 +func (d Data) Error() error            { return PnError(C.pn_data_error(d.pn)) }
 +
 +// State holds the state flags for an AMQP endpoint.
 +type State byte
 +
 +const (
 +	SLocalUninit  State = C.PN_LOCAL_UNINIT
 +	SLocalActive        = C.PN_LOCAL_ACTIVE
 +	SLocalClosed        = C.PN_LOCAL_CLOSED
 +	SRemoteUninit       = C.PN_REMOTE_UNINIT
 +	SRemoteActive       = C.PN_REMOTE_ACTIVE
 +	SRemoteClosed       = C.PN_REMOTE_CLOSED
 +)
 +
 +// Has is True if bits & state is non 0.
 +func (s State) Has(bits State) bool { return s&bits != 0 }
 +
 +func (s State) LocalUninit() bool  { return s.Has(SLocalUninit) }
 +func (s State) LocalActive() bool  { return s.Has(SLocalActive) }
 +func (s State) LocalClosed() bool  { return s.Has(SLocalClosed) }
 +func (s State) RemoteUninit() bool { return s.Has(SRemoteUninit) }
 +func (s State) RemoteActive() bool { return s.Has(SRemoteActive) }
 +func (s State) RemoteClosed() bool { return s.Has(SRemoteClosed) }
 +
 +// Return a State containig just the local flags
 +func (s State) Local() State { return State(s & C.PN_LOCAL_MASK) }
 +
 +// Return a State containig just the remote flags
 +func (s State) Remote() State { return State(s & C.PN_REMOTE_MASK) }
 +
 +// Endpoint is the common interface for Connection, Link and Session.
 +type Endpoint interface {
 +	// State is the open/closed state.
 +	State() State
 +	// Open an endpoint.
 +	Open()
 +	// Close an endpoint.
 +	Close()
 +	// Condition holds a local error condition.
 +	Condition() Condition
 +	// RemoteCondition holds a remote error condition.
 +	RemoteCondition() Condition
 +	// Human readable name
 +	String() string
- 	// Human readable endpoint type "link", "session" etc.
++	// Human readable endpoint type "sender-link", "session" etc.
 +	Type() string
 +}
 +
 +// CloseError sets an error condition (if err != nil) on an endpoint and closes
 +// the endpoint if not already closed
 +func CloseError(e Endpoint, err error) {
- 	if err != nil {
++	if err != nil && !e.Condition().IsSet() {
 +		e.Condition().SetError(err)
 +	}
 +	e.Close()
 +}
 +
 +// EndpointError returns the remote error if there is one, the local error if not
 +// nil if there is no error.
 +func EndpointError(e Endpoint) error {
 +	err := e.RemoteCondition().Error()
 +	if err == nil {
 +		err = e.Condition().Error()
 +	}
 +	return err
 +}
 +
 +const (
 +	Received uint64 = C.PN_RECEIVED
 +	Accepted        = C.PN_ACCEPTED
 +	Rejected        = C.PN_REJECTED
 +	Released        = C.PN_RELEASED
 +	Modified        = C.PN_MODIFIED
 +)
 +
 +// SettleAs is equivalent to d.Update(disposition); d.Settle()
 +func (d Delivery) SettleAs(disposition uint64) {
 +	d.Update(disposition)
 +	d.Settle()
 +}
 +
 +// Accept accepts and settles a delivery.
 +func (d Delivery) Accept() { d.SettleAs(Accepted) }
 +
 +// Reject rejects and settles a delivery
 +func (d Delivery) Reject() { d.SettleAs(Rejected) }
 +
 +// Release releases and settles a delivery
 +// If delivered is true the delivery count for the message will be increased.
 +func (d Delivery) Release(delivered bool) {
 +	if delivered {
 +		d.SettleAs(Modified)
 +	} else {
 +		d.SettleAs(Released)
 +	}
 +}
 +
 +type DeliveryTag struct{ pn C.pn_delivery_tag_t }
 +
 +func (t DeliveryTag) String() string { return C.GoStringN(t.pn.start, C.int(t.pn.size)) }
 +
 +func (l Link) Recv(buf []byte) int {
 +	if len(buf) == 0 {
 +		return 0
 +	}
 +	return int(C.pn_link_recv(l.pn, (*C.char)(unsafe.Pointer(&buf[0])), C.size_t(len(buf))))
 +}
 +
 +func (l Link) SendBytes(bytes []byte) int {
 +	return int(C.pn_link_send(l.pn, cPtr(bytes), cLen(bytes)))
 +}
 +
 +func pnTag(tag string) C.pn_delivery_tag_t {
 +	bytes := []byte(tag)
 +	return C.pn_dtag(cPtr(bytes), cLen(bytes))
 +}
 +
 +func (l Link) Delivery(tag string) Delivery {
 +	return Delivery{C.pn_delivery(l.pn, pnTag(tag))}
 +}
 +
 +func (l Link) Connection() Connection { return l.Session().Connection() }
 +
 +// Human-readable link description including name, source, target and direction.
 +func (l Link) String() string {
 +	switch {
 +	case l.IsNil():
 +		return fmt.Sprintf("<nil-link>")
 +	case l.IsSender():
 +		return fmt.Sprintf("%s(%s->%s)", l.Name(), l.Source().Address(), l.Target().Address())
 +	default:
 +		return fmt.Sprintf("%s(%s<-%s)", l.Name(), l.Target().Address(), l.Source().Address())
 +	}
 +}
 +
 +func (l Link) Type() string {
 +	if l.IsSender() {
- 		return "link(sender)"
++		return "sender-link"
 +	} else {
- 		return "link(receiver)"
++		return "receiver-link"
 +	}
 +}
 +
 +// IsDrain calls pn_link_get_drain(), it conflicts with pn_link_drain() under the normal mapping.
 +func (l Link) IsDrain() bool {
 +	return bool(C.pn_link_get_drain(l.pn))
 +}
 +
 +func cPtr(b []byte) *C.char {
 +	if len(b) == 0 {
 +		return nil
 +	}
 +	return (*C.char)(unsafe.Pointer(&b[0]))
 +}
 +
 +func cLen(b []byte) C.size_t {
 +	return C.size_t(len(b))
 +}
 +
 +func (s Session) Sender(name string) Link {
 +	cname := C.CString(name)
 +	defer C.free(unsafe.Pointer(cname))
 +	return Link{C.pn_sender(s.pn, cname)}
 +}
 +
 +func (s Session) Receiver(name string) Link {
 +	cname := C.CString(name)
 +	defer C.free(unsafe.Pointer(cname))
 +	return Link{C.pn_receiver(s.pn, cname)}
 +}
 +
 +func (t Transport) String() string {
 +	return fmt.Sprintf("(Transport)(%p)", t.CPtr())
 +}
 +
 +// Unique (per process) string identifier for a connection, useful for debugging.
 +func (c Connection) String() string {
 +	// Use the transport address to match the default transport logs from PN_TRACE.
 +	return fmt.Sprintf("(Connection)(%p)", c.Transport().CPtr())
 +}
 +
 +func (c Connection) Type() string {
 +	return "connection"
 +}
 +
 +// Head functions don't follow the normal naming conventions so missed by the generator.
 +
 +func (c Connection) LinkHead(s State) Link {
 +	return Link{C.pn_link_head(c.pn, C.pn_state_t(s))}
 +}
 +
 +func (c Connection) SessionHead(s State) Session {
 +	return Session{C.pn_session_head(c.pn, C.pn_state_t(s))}
 +}
 +
 +func (c Connection) Links(state State) (links []Link) {
 +	for l := c.LinkHead(state); !l.IsNil(); l = l.Next(state) {
 +		links = append(links, l)
 +	}
 +	return
 +}
 +
 +func (c Connection) Sessions(state State) (sessions []Session) {
 +	for s := c.SessionHead(state); !s.IsNil(); s = s.Next(state) {
 +		sessions = append(sessions, s)
 +	}
 +	return
 +}
 +
 +// SetPassword takes []byte not string because it is impossible to erase a string
 +// from memory reliably. Proton will not keep the password in memory longer than
 +// needed, the caller should overwrite their copy on return.
 +//
 +// The password must not contain embedded nul characters, a trailing nul is ignored.
 +func (c Connection) SetPassword(password []byte) {
 +	if len(password) == 0 || password[len(password)-1] != 0 {
 +		password = append(password, 0) // Proton requires a terminating null.
 +	}
 +	C.pn_connection_set_password(c.pn, (*C.char)(unsafe.Pointer(&password[0])))
 +}
 +
 +func (s Session) String() string {
 +	return fmt.Sprintf("(Session)(%p)", s.pn) // TODO aconway 2016-09-12: should print channel number.
 +}
 +
 +func (s Session) Type() string { return "session" }
 +
 +// Error returns an instance of amqp.Error or nil.
 +func (c Condition) Error() error {
 +	if c.IsNil() || !c.IsSet() {
 +		return nil
 +	}
 +	return amqp.Error{Name: c.Name(), Description: c.Description()}
 +}
 +
 +// Set a Go error into a condition.
 +// If it is not an amqp.Condition use the error type as name, error string as description.
 +func (c Condition) SetError(err error) {
 +	if err != nil {
 +		if cond, ok := err.(amqp.Error); ok {
 +			c.SetName(cond.Name)
 +			c.SetDescription(cond.Description)
 +		} else {
 +			c.SetName(reflect.TypeOf(err).Name())
 +			c.SetDescription(err.Error())
 +		}
 +	}
 +}
 +
 +func (c Connection) Session() (Session, error) {
 +	s := Session{C.pn_session(c.pn)}
 +	if s.IsNil() {
 +		return s, Connection(c).Error()
 +	}
 +	return s, nil
 +}
 +
 +// pnTime converts Go time.Time to Proton millisecond Unix time.
 +//
 +// Note: t.isZero() is converted to C.pn_timestamp_t(0) and vice-versa. These
 +// are used as "not set" sentinel values by the Go and Proton APIs, so it is
 +// better to conserve the "zeroness" even though they don't represent the same
 +// time instant.
 +//
 +func pnTime(t time.Time) (pnt C.pn_timestamp_t) {
 +	if !t.IsZero() {
 +		pnt = C.pn_timestamp_t(t.Unix()*1000 + int64(t.Nanosecond())/int64(time.Millisecond))
 +	}
 +	return
 +}
 +
 +// goTime converts a pn_timestamp_t to a Go time.Time.
 +//
 +// Note: C.pn_timestamp_t(0) is converted to a zero time.Time and
 +// vice-versa. These are used as "not set" sentinel values by the Go and Proton
 +// APIs, so it is better to conserve the "zeroness" even though they don't
 +// represent the same time instant.
 +//
 +func goTime(pnt C.pn_timestamp_t) (t time.Time) {
 +	if pnt != 0 {
 +		t = time.Unix(int64(pnt/1000), int64(pnt%1000)*int64(time.Millisecond))
 +	}
 +	return
 +}
 +
 +// Special treatment for Transport.Head, return value is unsafe.Pointer not string
 +func (t Transport) Head() unsafe.Pointer {
 +	return unsafe.Pointer(C.pn_transport_head(t.pn))
 +}
 +
 +// Special treatment for Transport.Tail, return value is unsafe.Pointer not string
 +func (t Transport) Tail() unsafe.Pointer {
 +	return unsafe.Pointer(C.pn_transport_tail(t.pn))
 +}
 +
 +// Special treatment for Transport.Push, takes []byte instead of char*, size
 +func (t Transport) Push(bytes []byte) int {
 +	return int(C.pn_transport_push(t.pn, (*C.char)(unsafe.Pointer(&bytes[0])), C.size_t(len(bytes))))
 +}
 +
 +// Get the SASL object for the transport.
 +func (t Transport) SASL() SASL {
 +	return SASL{C.pn_sasl(t.pn)}
 +}


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


[11/30] qpid-proton git commit: PROTON-1371: [C++ binding] Large header file cleanup - Introduce header to forward declare types - Remove a lot of unnecessary includes in C++ header files

Posted by ac...@apache.org.
PROTON-1371: [C++ binding] Large header file cleanup
- Introduce <proton/fwd.hpp> header to forward declare types
- Remove a lot of unnecessary includes in C++ header files


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

Branch: refs/heads/go1
Commit: 5147ed30303a4ef8510a78b0e214fd954811193c
Parents: 0a2d28e
Author: Andrew Stitcher <as...@apache.org>
Authored: Mon Dec 5 12:59:21 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Wed Dec 7 03:54:13 2016 -0500

----------------------------------------------------------------------
 examples/cpp/broker.cpp                         |  4 ++
 examples/cpp/client.cpp                         |  8 ++-
 examples/cpp/connection_options.cpp             |  2 +
 examples/cpp/direct_recv.cpp                    |  4 ++
 examples/cpp/direct_send.cpp                    |  5 ++
 examples/cpp/flow_control.cpp                   |  8 ++-
 examples/cpp/helloworld.cpp                     |  4 ++
 examples/cpp/helloworld_direct.cpp              |  4 ++
 examples/cpp/mt/broker.cpp                      |  8 +++
 examples/cpp/queue_browser.cpp                  |  3 +
 examples/cpp/scheduled_send.cpp                 |  5 ++
 examples/cpp/scheduled_send_03.cpp              |  8 +++
 examples/cpp/selected_recv.cpp                  |  3 +
 examples/cpp/server.cpp                         |  4 ++
 examples/cpp/server_direct.cpp                  |  5 ++
 examples/cpp/service_bus.cpp                    | 10 ++-
 examples/cpp/simple_recv.cpp                    |  6 +-
 examples/cpp/simple_send.cpp                    |  7 +-
 examples/cpp/ssl.cpp                            |  5 ++
 examples/cpp/ssl_client_cert.cpp                |  4 ++
 .../cpp/include/proton/annotation_key.hpp       |  2 +
 proton-c/bindings/cpp/include/proton/binary.hpp |  2 +
 .../bindings/cpp/include/proton/byte_array.hpp  |  2 +
 .../cpp/include/proton/codec/decoder.hpp        |  2 +
 .../cpp/include/proton/codec/encoder.hpp        |  2 +
 .../bindings/cpp/include/proton/connection.hpp  | 14 +---
 .../cpp/include/proton/connection_options.hpp   | 15 ++---
 .../bindings/cpp/include/proton/container.hpp   | 12 +---
 .../bindings/cpp/include/proton/decimal.hpp     |  2 -
 .../cpp/include/proton/default_container.hpp    |  2 +-
 .../bindings/cpp/include/proton/delivery.hpp    |  6 +-
 .../bindings/cpp/include/proton/duration.hpp    |  2 +
 .../bindings/cpp/include/proton/endpoint.hpp    |  3 +-
 .../cpp/include/proton/error_condition.hpp      |  2 +-
 .../bindings/cpp/include/proton/event_loop.hpp  |  8 +--
 proton-c/bindings/cpp/include/proton/fwd.hpp    | 70 ++++++++++++++++++++
 .../cpp/include/proton/internal/type_traits.hpp |  3 +
 .../include/proton/io/container_impl_base.hpp   |  1 +
 proton-c/bindings/cpp/include/proton/link.hpp   | 26 ++------
 .../cpp/include/proton/listen_handler.hpp       |  2 +
 .../bindings/cpp/include/proton/listener.hpp    |  3 +-
 .../bindings/cpp/include/proton/message.hpp     | 14 ++--
 .../bindings/cpp/include/proton/message_id.hpp  |  2 +
 .../cpp/include/proton/messaging_handler.hpp    | 17 +----
 .../bindings/cpp/include/proton/receiver.hpp    | 10 ++-
 .../cpp/include/proton/receiver_options.hpp     | 12 +---
 .../cpp/include/proton/reconnect_timer.hpp      |  3 +-
 proton-c/bindings/cpp/include/proton/scalar.hpp |  7 +-
 .../bindings/cpp/include/proton/scalar_base.hpp |  6 +-
 proton-c/bindings/cpp/include/proton/sender.hpp | 11 +--
 .../cpp/include/proton/sender_options.hpp       | 12 +---
 .../bindings/cpp/include/proton/session.hpp     | 10 +--
 .../cpp/include/proton/session_options.hpp      |  6 +-
 proton-c/bindings/cpp/include/proton/source.hpp | 16 ++---
 .../cpp/include/proton/source_options.hpp       |  7 +-
 proton-c/bindings/cpp/include/proton/ssl.hpp    |  5 +-
 proton-c/bindings/cpp/include/proton/target.hpp | 10 +--
 .../cpp/include/proton/target_options.hpp       |  9 +--
 .../bindings/cpp/include/proton/terminus.hpp    | 13 +++-
 .../bindings/cpp/include/proton/thread_safe.hpp |  8 +--
 .../bindings/cpp/include/proton/timestamp.hpp   |  2 +
 .../bindings/cpp/include/proton/transfer.hpp    |  4 +-
 .../bindings/cpp/include/proton/transport.hpp   | 12 +---
 proton-c/bindings/cpp/include/proton/types.hpp  |  4 +-
 .../bindings/cpp/include/proton/types_fwd.hpp   |  7 +-
 proton-c/bindings/cpp/include/proton/url.hpp    |  3 +-
 proton-c/bindings/cpp/include/proton/uuid.hpp   |  2 +-
 proton-c/bindings/cpp/include/proton/value.hpp  |  2 +
 proton-c/bindings/cpp/src/connection.cpp        |  3 +
 proton-c/bindings/cpp/src/container.cpp         |  1 +
 proton-c/bindings/cpp/src/container_test.cpp    |  2 +
 proton-c/bindings/cpp/src/delivery.cpp          |  2 +
 proton-c/bindings/cpp/src/handler.cpp           |  1 +
 .../bindings/cpp/src/include/container_impl.hpp |  5 +-
 .../bindings/cpp/src/include/proton_event.hpp   |  2 +-
 proton-c/bindings/cpp/src/include/reactor.hpp   |  5 +-
 proton-c/bindings/cpp/src/message.cpp           |  5 +-
 proton-c/bindings/cpp/src/messaging_adapter.cpp |  4 +-
 proton-c/bindings/cpp/src/receiver.cpp          |  6 +-
 proton-c/bindings/cpp/src/sender.cpp            |  6 +-
 proton-c/bindings/cpp/src/session.cpp           |  8 ++-
 proton-c/bindings/cpp/src/terminus.cpp          |  6 +-
 proton-c/bindings/cpp/src/tracker.cpp           |  2 +
 tests/tools/apps/cpp/reactor_send.cpp           |  8 ++-
 84 files changed, 327 insertions(+), 241 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/broker.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/broker.cpp b/examples/cpp/broker.cpp
index 232839b..97ef206 100644
--- a/examples/cpp/broker.cpp
+++ b/examples/cpp/broker.cpp
@@ -22,8 +22,11 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/error_condition.hpp>
+#include <proton/listener.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/message.hpp>
 #include <proton/receiver_options.hpp>
@@ -31,6 +34,7 @@
 #include <proton/sender_options.hpp>
 #include <proton/source_options.hpp>
 #include <proton/target_options.hpp>
+#include <proton/tracker.hpp>
 #include <proton/transport.hpp>
 #include <proton/url.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/client.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/client.cpp b/examples/cpp/client.cpp
index dd22ccd..7139155 100644
--- a/examples/cpp/client.cpp
+++ b/examples/cpp/client.cpp
@@ -20,12 +20,16 @@
  */
 
 #include "options.hpp"
+#include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
-#include <proton/connection.hpp>
-#include <proton/tracker.hpp>
+#include <proton/receiver_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <iostream>
 #include <vector>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/connection_options.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/connection_options.cpp b/examples/cpp/connection_options.cpp
index f9935a8..f718060 100644
--- a/examples/cpp/connection_options.cpp
+++ b/examples/cpp/connection_options.cpp
@@ -21,8 +21,10 @@
 
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/transport.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/direct_recv.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/direct_recv.cpp b/examples/cpp/direct_recv.cpp
index d2d3939..705b480 100644
--- a/examples/cpp/direct_recv.cpp
+++ b/examples/cpp/direct_recv.cpp
@@ -22,10 +22,14 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/link.hpp>
+#include <proton/listener.hpp>
 #include <proton/value.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/direct_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/direct_send.cpp b/examples/cpp/direct_send.cpp
index d8427b7..7de762d 100644
--- a/examples/cpp/direct_send.cpp
+++ b/examples/cpp/direct_send.cpp
@@ -22,10 +22,15 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/value.hpp>
 #include <proton/tracker.hpp>
+#include <proton/types.hpp>
 
 #include <iostream>
 #include <map>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/flow_control.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/flow_control.cpp b/examples/cpp/flow_control.cpp
index 99f832d..c0b8739 100644
--- a/examples/cpp/flow_control.cpp
+++ b/examples/cpp/flow_control.cpp
@@ -21,14 +21,18 @@
 
 #include "options.hpp"
 
-#include <proton/listener.hpp>
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
 #include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
-#include <proton/delivery.hpp>
 
 #include <iostream>
 #include <sstream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/helloworld.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/helloworld.cpp b/examples/cpp/helloworld.cpp
index fa95af0..4aa5cdd 100644
--- a/examples/cpp/helloworld.cpp
+++ b/examples/cpp/helloworld.cpp
@@ -20,9 +20,13 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 #include <proton/url.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/helloworld_direct.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/helloworld_direct.cpp b/examples/cpp/helloworld_direct.cpp
index 5421e62..b3a1af8 100644
--- a/examples/cpp/helloworld_direct.cpp
+++ b/examples/cpp/helloworld_direct.cpp
@@ -20,9 +20,13 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/mt/broker.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/mt/broker.cpp b/examples/cpp/mt/broker.cpp
index 7ef90c3..83b7005 100644
--- a/examples/cpp/mt/broker.cpp
+++ b/examples/cpp/mt/broker.cpp
@@ -21,18 +21,26 @@
 #include "mt_container.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
 #include <proton/error_condition.hpp>
 #include <proton/listen_handler.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sender_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/target.hpp>
 #include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <atomic>
+#include <deque>
 #include <functional>
 #include <iostream>
+#include <map>
 #include <mutex>
 #include <thread>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/queue_browser.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/queue_browser.cpp b/examples/cpp/queue_browser.cpp
index 649716b..583277e 100644
--- a/examples/cpp/queue_browser.cpp
+++ b/examples/cpp/queue_browser.cpp
@@ -20,11 +20,14 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/receiver_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/url.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/scheduled_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/scheduled_send.cpp b/examples/cpp/scheduled_send.cpp
index 280c737..ef6cd27 100644
--- a/examples/cpp/scheduled_send.cpp
+++ b/examples/cpp/scheduled_send.cpp
@@ -21,8 +21,13 @@
 
 #include "options.hpp"
 
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <iostream>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/scheduled_send_03.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/scheduled_send_03.cpp b/examples/cpp/scheduled_send_03.cpp
index 5d3aaac..92e5767 100644
--- a/examples/cpp/scheduled_send_03.cpp
+++ b/examples/cpp/scheduled_send_03.cpp
@@ -21,8 +21,16 @@
 
 #include "options.hpp"
 
+#include <proton/container.hpp>
+#include <proton/connection.hpp>
 #include <proton/default_container.hpp>
+#include <proton/duration.hpp>
+#include <proton/function.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <iostream>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/selected_recv.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/selected_recv.cpp b/examples/cpp/selected_recv.cpp
index 2c1a6b6..a48ef0e 100644
--- a/examples/cpp/selected_recv.cpp
+++ b/examples/cpp/selected_recv.cpp
@@ -20,10 +20,13 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/receiver_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/url.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/server.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/server.cpp b/examples/cpp/server.cpp
index ec24f9f..449ce6e 100644
--- a/examples/cpp/server.cpp
+++ b/examples/cpp/server.cpp
@@ -22,8 +22,12 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 #include <proton/url.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/server_direct.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/server_direct.cpp b/examples/cpp/server_direct.cpp
index 220934f..22d519a 100644
--- a/examples/cpp/server_direct.cpp
+++ b/examples/cpp/server_direct.cpp
@@ -21,9 +21,14 @@
 
 #include "options.hpp"
 
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sender.hpp>
+#include <proton/sender_options.hpp>
 #include <proton/source_options.hpp>
 #include <proton/tracker.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/service_bus.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/service_bus.cpp b/examples/cpp/service_bus.cpp
index 73eaadb..6b57f8d 100644
--- a/examples/cpp/service_bus.cpp
+++ b/examples/cpp/service_bus.cpp
@@ -84,13 +84,19 @@ Done. No more messages.
 
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/function.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
 #include <proton/sender.hpp>
+#include <proton/sender_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
-#include <proton/delivery.hpp>
 #include <proton/url.hpp>
-#include <proton/source_options.hpp>
 
 #include <iostream>
 #include <sstream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/simple_recv.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/simple_recv.cpp b/examples/cpp/simple_recv.cpp
index 1f077d6..145eef9 100644
--- a/examples/cpp/simple_recv.cpp
+++ b/examples/cpp/simple_recv.cpp
@@ -22,11 +22,15 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
-#include <proton/messaging_handler.hpp>
 #include <proton/link.hpp>
+#include <proton/message.hpp>
 #include <proton/message_id.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/value.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/simple_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/simple_send.cpp b/examples/cpp/simple_send.cpp
index 9e11588..358bbec 100644
--- a/examples/cpp/simple_send.cpp
+++ b/examples/cpp/simple_send.cpp
@@ -22,10 +22,15 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
-#include <proton/value.hpp>
+#include <proton/types.hpp>
 
 #include <iostream>
 #include <map>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/ssl.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/ssl.cpp b/examples/cpp/ssl.cpp
index 67394b5..2e901c2 100644
--- a/examples/cpp/ssl.cpp
+++ b/examples/cpp/ssl.cpp
@@ -23,9 +23,14 @@
 
 #include <proton/connection_options.hpp>
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/error_condition.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/ssl.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 #include <proton/transport.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/ssl_client_cert.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/ssl_client_cert.cpp b/examples/cpp/ssl_client_cert.cpp
index 42b6593..630e74b 100644
--- a/examples/cpp/ssl_client_cert.cpp
+++ b/examples/cpp/ssl_client_cert.cpp
@@ -21,10 +21,14 @@
 
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sasl.hpp>
 #include <proton/ssl.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 #include <proton/transport.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/annotation_key.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/annotation_key.hpp b/proton-c/bindings/cpp/include/proton/annotation_key.hpp
index 23d789b..4995141 100644
--- a/proton-c/bindings/cpp/include/proton/annotation_key.hpp
+++ b/proton-c/bindings/cpp/include/proton/annotation_key.hpp
@@ -25,6 +25,8 @@
 #include "./scalar_base.hpp"
 #include "./symbol.hpp"
 
+#include <proton/type_compat.h>
+
 namespace proton {
 
 /// A key for use with AMQP annotation maps.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/binary.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/binary.hpp b/proton-c/bindings/cpp/include/proton/binary.hpp
index d2f5b97..cf4c7a2 100644
--- a/proton-c/bindings/cpp/include/proton/binary.hpp
+++ b/proton-c/bindings/cpp/include/proton/binary.hpp
@@ -25,6 +25,8 @@
 #include "./internal/export.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 #include <string>
 #include <vector>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/byte_array.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/byte_array.hpp b/proton-c/bindings/cpp/include/proton/byte_array.hpp
index d69861a..9040133 100644
--- a/proton-c/bindings/cpp/include/proton/byte_array.hpp
+++ b/proton-c/bindings/cpp/include/proton/byte_array.hpp
@@ -24,6 +24,8 @@
 #include "./internal/comparable.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <algorithm>
 #include <iterator>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/codec/decoder.hpp b/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
index 7acae9d..3dc6d57 100644
--- a/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
+++ b/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
@@ -27,6 +27,8 @@
 #include "../types_fwd.hpp"
 #include "./common.hpp"
 
+#include <proton/type_compat.h>
+
 #include <utility>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/codec/encoder.hpp b/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
index 9183c07..24de309 100644
--- a/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
+++ b/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
@@ -27,6 +27,8 @@
 #include "../types_fwd.hpp"
 #include "./common.hpp"
 
+#include <proton/type_compat.h>
+
 namespace proton {
 class scalar_base;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/connection.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection.hpp b/proton-c/bindings/cpp/include/proton/connection.hpp
index 062805f..aac3bb7 100644
--- a/proton-c/bindings/cpp/include/proton/connection.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection.hpp
@@ -22,12 +22,13 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./endpoint.hpp"
 #include "./internal/object.hpp"
+#include "./endpoint.hpp"
 #include "./session.hpp"
 
-#include <proton/types.h>
+#include <proton/type_compat.h>
 
 #include <string>
 
@@ -35,15 +36,6 @@ struct pn_connection_t;
 
 namespace proton {
 
-class messaging_handler;
-class connection_options;
-class sender;
-class sender_options;
-class receiver;
-class receiver_options;
-class container;
-template <class T> class thread_safe;
-
 /// A connection to a remote AMQP peer.
 class
 PN_CPP_CLASS_EXTERN connection : public internal::object<pn_connection_t>, public endpoint {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/connection_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection_options.hpp b/proton-c/bindings/cpp/include/proton/connection_options.hpp
index d2deebf..6957fad 100644
--- a/proton-c/bindings/cpp/include/proton/connection_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection_options.hpp
@@ -22,12 +22,14 @@
  *
  */
 
+#include "./fwd.hpp"
+#include "./types_fwd.hpp"
 #include "./internal/config.hpp"
 #include "./internal/export.hpp"
-#include "./duration.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./reconnect_timer.hpp"
-#include "./types_fwd.hpp"
+#include "./duration.hpp"
+
+#include <proton/type_compat.h>
 
 #include <vector>
 #include <string>
@@ -36,13 +38,6 @@ struct pn_connection_t;
 
 namespace proton {
 
-class proton_handler;
-class connection;
-
-namespace io {
-class connection_driver;
-}
-
 /// Options for creating a connection.
 ///
 /// Options can be "chained" like this:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/container.hpp b/proton-c/bindings/cpp/include/proton/container.hpp
index 7d2d34c..6fe81dc 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./connection_options.hpp"
 #include "./function.hpp"
 #include "./listener.hpp"
@@ -36,17 +37,6 @@
 
 namespace proton {
 
-class connection;
-class connection_options;
-class container_impl;
-class messaging_handler;
-class listen_handler;
-class listener;
-class receiver;
-class receiver_options;
-class sender;
-class sender_options;
-
 /// A top-level container of connections, sessions, senders, and
 /// receivers.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/decimal.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/decimal.hpp b/proton-c/bindings/cpp/include/proton/decimal.hpp
index 873931b..efca029 100644
--- a/proton-c/bindings/cpp/include/proton/decimal.hpp
+++ b/proton-c/bindings/cpp/include/proton/decimal.hpp
@@ -26,8 +26,6 @@
 #include "./internal/export.hpp"
 #include "./internal/comparable.hpp"
 
-#include <proton/types.h>
-
 #include <iosfwd>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/default_container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/default_container.hpp b/proton-c/bindings/cpp/include/proton/default_container.hpp
index 0214490..3213c02 100644
--- a/proton-c/bindings/cpp/include/proton/default_container.hpp
+++ b/proton-c/bindings/cpp/include/proton/default_container.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./container.hpp"
 
 #include "./internal/config.hpp"
@@ -31,7 +32,6 @@
 #include <string>
 
 namespace proton {
-class messaging_handler;
 
 // Avoid deprecated diagnostics from auto_ptr
 #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 406 || defined(__clang__)

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/delivery.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/delivery.hpp b/proton-c/bindings/cpp/include/proton/delivery.hpp
index 91fd143..7c89f0c 100644
--- a/proton-c/bindings/cpp/include/proton/delivery.hpp
+++ b/proton-c/bindings/cpp/include/proton/delivery.hpp
@@ -22,17 +22,13 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/object.hpp"
 #include "./transfer.hpp"
 
-#include <proton/delivery.h>
-#include <proton/disposition.h>
-
 namespace proton {
 
-class receiver;
-
 /// A received message.
 /// 
 /// A delivery attempt can fail. As a result, a particular message may

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/duration.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/duration.hpp b/proton-c/bindings/cpp/include/proton/duration.hpp
index 7110051..a190cf9 100644
--- a/proton-c/bindings/cpp/include/proton/duration.hpp
+++ b/proton-c/bindings/cpp/include/proton/duration.hpp
@@ -26,6 +26,8 @@
 #include "./internal/comparable.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/endpoint.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/endpoint.hpp b/proton-c/bindings/cpp/include/proton/endpoint.hpp
index 4628d35..36ac981 100644
--- a/proton-c/bindings/cpp/include/proton/endpoint.hpp
+++ b/proton-c/bindings/cpp/include/proton/endpoint.hpp
@@ -22,10 +22,9 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/config.hpp"
-#include "./error_condition.hpp"
 #include "./internal/export.hpp"
-#include "./internal/comparable.hpp"
 
 namespace proton {
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/error_condition.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/error_condition.hpp b/proton-c/bindings/cpp/include/proton/error_condition.hpp
index e75e5d0..fb39332 100644
--- a/proton-c/bindings/cpp/include/proton/error_condition.hpp
+++ b/proton-c/bindings/cpp/include/proton/error_condition.hpp
@@ -23,8 +23,8 @@
  */
 
 #include "./internal/export.hpp"
-#include "./value.hpp"
 #include "./internal/config.hpp"
+#include "./value.hpp"
 
 #include <string>
 #include <iosfwd>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/event_loop.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/event_loop.hpp b/proton-c/bindings/cpp/include/proton/event_loop.hpp
index 8288de9..d43ba4f 100644
--- a/proton-c/bindings/cpp/include/proton/event_loop.hpp
+++ b/proton-c/bindings/cpp/include/proton/event_loop.hpp
@@ -22,16 +22,12 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/config.hpp"
-#include "./function.hpp"
+#include "./internal/export.hpp"
 
 #include <functional>
 
-#if PN_CPP_HAS_CPP11
-#include <future>
-#include <type_traits>
-#endif
-
 struct pn_connection_t;
 struct pn_session_t;
 struct pn_link_t;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/fwd.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/fwd.hpp b/proton-c/bindings/cpp/include/proton/fwd.hpp
new file mode 100644
index 0000000..c494ad3
--- /dev/null
+++ b/proton-c/bindings/cpp/include/proton/fwd.hpp
@@ -0,0 +1,70 @@
+#ifndef PROTON_FWD_HPP
+#define PROTON_FWD_HPP
+
+/*
+ *
+ * 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.
+ *
+ */
+
+namespace proton {
+
+class annotation_key;
+class connection;
+class connection_options;
+class container;
+class container_impl;
+class delivery;
+class error_condition;
+class event;
+class message;
+class message_id;
+class messaging_handler;
+class listen_handler;
+class listener;
+class receiver;
+class receiver_iterator;
+class receiver_options;
+class reconnect_timer;
+class sasl;
+class sender;
+class sender_iterator;
+class sender_options;
+class session;
+class session_options;
+class source_options;
+class ssl;
+class target_options;
+class tracker;
+class transport;
+class url;
+class void_function0;
+
+
+namespace io {
+
+class connection_driver;
+
+}
+
+template <class T> class returned;
+template <class T> class thread_safe;
+
+}
+
+#endif // PROTON_FWD_HPP

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
index 3d66f94..4c4c7d6 100644
--- a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
@@ -30,6 +30,9 @@
 #include "./config.hpp"
 #include "../types_fwd.hpp"
 #include "../type_id.hpp"
+
+#include <proton/type_compat.h>
+
 #include <limits>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp b/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
index 123f00a..0aeed78 100644
--- a/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
+++ b/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
@@ -24,6 +24,7 @@
 
 #include "../container.hpp"
 
+#include <future>
 #include <mutex>
 #include <sstream>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/link.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/link.hpp b/proton-c/bindings/cpp/include/proton/link.hpp
index 40200e8..8534f21 100644
--- a/proton-c/bindings/cpp/include/proton/link.hpp
+++ b/proton-c/bindings/cpp/include/proton/link.hpp
@@ -22,34 +22,16 @@
  *
  */
 
-#include "./endpoint.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./message.hpp"
-#include "./source.hpp"
-#include "./target.hpp"
+#include "./endpoint.hpp"
 #include "./internal/object.hpp"
-#include "./sender_options.hpp"
-#include "./receiver_options.hpp"
-
-#include <proton/types.h>
 
 #include <string>
 
-namespace proton {
+struct pn_link_t;
 
-class sender;
-class receiver;
-class error_condition;
-class link_context;
-class proton_event;
-class messaging_adapter;
-class proton_handler;
-class delivery;
-class connection;
-class container;
-class session;
-class sender_iterator;
-class receiver_iterator;
+namespace proton {
 
 /// A named channel for sending or receiving messages.  It is the base
 /// class for sender and receiver.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/listen_handler.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/listen_handler.hpp b/proton-c/bindings/cpp/include/proton/listen_handler.hpp
index acd7d4c..99f7558 100644
--- a/proton-c/bindings/cpp/include/proton/listen_handler.hpp
+++ b/proton-c/bindings/cpp/include/proton/listen_handler.hpp
@@ -22,6 +22,8 @@
  *
  */
 
+#include "./fwd.hpp"
+
 namespace proton {
 
 // XXX Discuss more

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/listener.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/listener.hpp b/proton-c/bindings/cpp/include/proton/listener.hpp
index 2cdf121..4b4ca24 100644
--- a/proton-c/bindings/cpp/include/proton/listener.hpp
+++ b/proton-c/bindings/cpp/include/proton/listener.hpp
@@ -20,14 +20,13 @@
  * under the License.
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 
 #include <string>
 
 namespace proton {
 
-class container;
-
 /// A listener for incoming connections.
 class PN_CPP_CLASS_EXTERN listener {
   public:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/message.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/message.hpp b/proton-c/bindings/cpp/include/proton/message.hpp
index e9f1da4..85ccff6 100644
--- a/proton-c/bindings/cpp/include/proton/message.hpp
+++ b/proton-c/bindings/cpp/include/proton/message.hpp
@@ -22,28 +22,24 @@
  *
  */
 
-#include "./annotation_key.hpp"
-#include "./codec/map.hpp"
-#include "./duration.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./message_id.hpp"
+#include "./duration.hpp"
+#include "./timestamp.hpp"
 #include "./value.hpp"
 
 #include "./internal/cached_map.hpp"
 #include "./internal/pn_unique_ptr.hpp"
 
+#include <proton/type_compat.h>
+
 #include <string>
 #include <vector>
-#include <utility>
 
 struct pn_message_t;
 
 namespace proton {
 
-class delivery;
-class message_id;
-class annotation_key;
-
 /// An AMQP message.
 ///
 /// Value semantics: A message can be copied or assigned to make a new

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/message_id.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/message_id.hpp b/proton-c/bindings/cpp/include/proton/message_id.hpp
index 5e0de90..ee12a17 100644
--- a/proton-c/bindings/cpp/include/proton/message_id.hpp
+++ b/proton-c/bindings/cpp/include/proton/message_id.hpp
@@ -26,6 +26,8 @@
 #include "./scalar_base.hpp"
 #include "./uuid.hpp"
 
+#include <proton/type_compat.h>
+
 #include <string>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/messaging_handler.hpp b/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
index acdcd30..6653c43 100644
--- a/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
+++ b/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
@@ -22,26 +22,11 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 
 namespace proton {
 
-class error_condition;
-class container;
-class event;
-class transport;
-class connection;
-class session;
-class sender;
-class receiver;
-class tracker;
-class delivery;
-class message;
-class messaging_adapter;
-
-namespace io {
-class connection_driver;
-}
 
 /// A handler for Proton messaging events.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/receiver.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/receiver.hpp b/proton-c/bindings/cpp/include/proton/receiver.hpp
index 986765e..f92ac96 100644
--- a/proton-c/bindings/cpp/include/proton/receiver.hpp
+++ b/proton-c/bindings/cpp/include/proton/receiver.hpp
@@ -22,18 +22,16 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./endpoint.hpp"
 #include "./link.hpp"
 
-#include <proton/types.h>
+#include <proton/type_compat.h>
 
-#include <string>
-
-struct pn_connection_t;
+struct pn_link_t;
+struct pn_session_t;
 
 namespace proton {
-template <class T> class thread_safe;
 
 /// A channel for receiving messages.
 class

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/receiver_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/receiver_options.hpp b/proton-c/bindings/cpp/include/proton/receiver_options.hpp
index 7b1b511..413e4d4 100644
--- a/proton-c/bindings/cpp/include/proton/receiver_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/receiver_options.hpp
@@ -22,23 +22,13 @@
  *
  */
 
-#include "./internal/config.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
 #include "./delivery_mode.hpp"
-#include "./terminus.hpp"
-
-#include <vector>
-#include <string>
 
 namespace proton {
 
-class proton_handler;
-class receiver;
-class source_options;
-class target_options;
-
 /// Options for creating a receiver.
 ///
 /// Options can be "chained" like this:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp b/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
index 66ec6b0..766feb7 100644
--- a/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
+++ b/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
@@ -28,9 +28,8 @@
 #include "./internal/export.hpp"
 #include "./duration.hpp"
 #include "./timestamp.hpp"
-#include "./types.hpp"
 
-#include <string>
+#include <proton/type_compat.h>
 
 namespace proton {
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/scalar.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/scalar.hpp b/proton-c/bindings/cpp/include/proton/scalar.hpp
index 27de576..0559dd9 100644
--- a/proton-c/bindings/cpp/include/proton/scalar.hpp
+++ b/proton-c/bindings/cpp/include/proton/scalar.hpp
@@ -22,12 +22,9 @@
 
 #include "./scalar_base.hpp"
 
-namespace proton {
+#include <proton/type_compat.h>
 
-namespace codec {
-class decoder;
-class encoder;
-}
+namespace proton {
 
 /// A holder for an instance of any scalar AMQP type.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/scalar_base.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/scalar_base.hpp b/proton-c/bindings/cpp/include/proton/scalar_base.hpp
index ba594c3..ca3161a 100644
--- a/proton-c/bindings/cpp/include/proton/scalar_base.hpp
+++ b/proton-c/bindings/cpp/include/proton/scalar_base.hpp
@@ -34,12 +34,14 @@
 #include "./types_fwd.hpp"
 #include "./uuid.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 #include <string>
 #include <typeinfo>
 
 namespace proton {
-class message;
+
 class scalar_base;
 
 namespace codec {
@@ -150,7 +152,7 @@ class scalar_base : private internal::comparable<scalar_base> {
     binary bytes_; // Hold binary data.
 
     /// @cond INTERNAL
-  friend class proton::message;
+  friend class message;
   friend class codec::encoder;
   friend class codec::decoder;
   template<class T> friend T internal::get(const scalar_base& s);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/sender.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/sender.hpp b/proton-c/bindings/cpp/include/proton/sender.hpp
index 5d34b23..8979bb4 100644
--- a/proton-c/bindings/cpp/include/proton/sender.hpp
+++ b/proton-c/bindings/cpp/include/proton/sender.hpp
@@ -22,19 +22,14 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./link.hpp"
-#include "./message.hpp"
-#include "./tracker.hpp"
 
-#include <proton/types.h>
-
-#include <string>
-
-struct pn_connection_t;
+struct pn_link_t;
+struct pn_session_t;
 
 namespace proton {
-template <class T> class thread_safe;
 
 /// A channel for sending messages.
 class

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/sender_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/sender_options.hpp b/proton-c/bindings/cpp/include/proton/sender_options.hpp
index 0a618ff..9d7bb42 100644
--- a/proton-c/bindings/cpp/include/proton/sender_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/sender_options.hpp
@@ -22,23 +22,13 @@
  *
  */
 
-#include "./internal/config.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
 #include "./delivery_mode.hpp"
-#include "./terminus.hpp"
-
-#include <vector>
-#include <string>
 
 namespace proton {
 
-class proton_handler;
-class sender;
-class source_options;
-class target_options;
-
 /// Options for creating a sender.
 ///
 /// Options can be "chained" like this:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/session.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/session.hpp b/proton-c/bindings/cpp/include/proton/session.hpp
index 5053f4c..cbdf1b9 100644
--- a/proton-c/bindings/cpp/include/proton/session.hpp
+++ b/proton-c/bindings/cpp/include/proton/session.hpp
@@ -22,26 +22,18 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./endpoint.hpp"
 #include "./receiver.hpp"
 #include "./sender.hpp"
-#include "./session_options.hpp"
-
-#include <proton/types.h>
-#include <proton/link.h>
 
 #include <string>
 
-struct pn_connection_t;
 struct pn_session_t;
 
 namespace proton {
 
-class container;
-class messaging_handler;
-template <class T> class thread_safe;
-
 /// A container of senders and receivers.
 class
 PN_CPP_CLASS_EXTERN session : public internal::object<pn_session_t>, public endpoint {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/session_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/session_options.hpp b/proton-c/bindings/cpp/include/proton/session_options.hpp
index 8bef3e8..eb47a89 100644
--- a/proton-c/bindings/cpp/include/proton/session_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/session_options.hpp
@@ -22,16 +22,12 @@
  *
  */
 
-#include "./internal/config.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
 
 namespace proton {
 
-class messaging_handler;
-class session;
-
 /// Options for creating a session.
 ///
 /// Options can be "chained" (see proton::connection_options).

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/source.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/source.hpp b/proton-c/bindings/cpp/include/proton/source.hpp
index 05485c3..321af9a 100644
--- a/proton-c/bindings/cpp/include/proton/source.hpp
+++ b/proton-c/bindings/cpp/include/proton/source.hpp
@@ -22,20 +22,18 @@
  *
  */
 
-#include "./value.hpp"
-#include "./terminus.hpp"
-#include "./codec/map.hpp"
-
-#include "./internal/cached_map.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
+#include "./internal/cached_map.hpp"
+#include "./symbol.hpp"
+#include "./terminus.hpp"
+#include "./value.hpp"
 
 #include <string>
 
-namespace proton {
+struct pn_terminus_t;
 
-class sender;
-class receiver;
+namespace proton {
 
 /// A point of origin for messages.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/source_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/source_options.hpp b/proton-c/bindings/cpp/include/proton/source_options.hpp
index d530990..f7dde48 100644
--- a/proton-c/bindings/cpp/include/proton/source_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/source_options.hpp
@@ -22,20 +22,15 @@
  *
  */
 
-#include "./internal/config.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
-#include "./delivery_mode.hpp"
+#include "./duration.hpp"
 #include "./source.hpp"
 
-#include <vector>
 #include <string>
 
 namespace proton {
 
-class proton_handler;
-
 /// Options for creating a source node for a sender or receiver.
 ///
 /// Options can be "chained" (@see proton::connection_options).

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/ssl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/ssl.hpp b/proton-c/bindings/cpp/include/proton/ssl.hpp
index 82087e2..c6c4c93 100644
--- a/proton-c/bindings/cpp/include/proton/ssl.hpp
+++ b/proton-c/bindings/cpp/include/proton/ssl.hpp
@@ -23,7 +23,6 @@
  */
 
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
 
 #include <proton/ssl.h>
 
@@ -31,7 +30,9 @@
 
 namespace proton {
 
-class connection_options;
+namespace internal {
+template <class T> class factory;
+}
 
 /// SSL information.
 class ssl {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/target.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/target.hpp b/proton-c/bindings/cpp/include/proton/target.hpp
index 5ba5281..746133a 100644
--- a/proton-c/bindings/cpp/include/proton/target.hpp
+++ b/proton-c/bindings/cpp/include/proton/target.hpp
@@ -22,17 +22,19 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
-#include "./value.hpp"
 #include "./terminus.hpp"
 
 #include <string>
 
+struct pn_terminus_t;
+
 namespace proton {
 
-class sender;
-class receiver;
+namespace internal {
+template <class T> class factory;
+}
 
 /// A destination for messages.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/target_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/target_options.hpp b/proton-c/bindings/cpp/include/proton/target_options.hpp
index e4fa2f6..547dbbe 100644
--- a/proton-c/bindings/cpp/include/proton/target_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/target_options.hpp
@@ -22,22 +22,15 @@
  *
  */
 
-#include "./internal/config.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
-#include "./delivery_mode.hpp"
+#include "./duration.hpp"
 #include "./target.hpp"
-#include "./terminus.hpp"
 
-#include <vector>
 #include <string>
 
 namespace proton {
 
-class proton_handler;
-class target;
-
 /// Options for creating a target node for a sender or receiver.
 ///
 /// Options can be "chained" (see proton::connection_options).

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/terminus.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/terminus.hpp b/proton-c/bindings/cpp/include/proton/terminus.hpp
index 6c10486..b63a8ad 100644
--- a/proton-c/bindings/cpp/include/proton/terminus.hpp
+++ b/proton-c/bindings/cpp/include/proton/terminus.hpp
@@ -22,15 +22,22 @@
  *
  */
 
+#include "./types_fwd.hpp"
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
-#include "./value.hpp"
 
-#include <proton/link.h>
+#include <proton/terminus.h>
+
 #include <string>
 
+struct pn_link_t;
+struct pn_terminus_t;
+
 namespace proton {
 
+namespace internal {
+template <class T> class factory;
+}
+
 /// One end of a link, either a source or a target.
 ///
 /// The source terminus is where messages originate; the target

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/thread_safe.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/thread_safe.hpp b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
index edd7af4..7851245 100644
--- a/proton-c/bindings/cpp/include/proton/thread_safe.hpp
+++ b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
@@ -22,9 +22,11 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/config.hpp"
 #include "./connection.hpp"
 #include "./event_loop.hpp"
+#include "./function.hpp"
 #include "./internal/object.hpp"
 #include "./internal/type_traits.hpp"
 
@@ -32,12 +34,6 @@
 
 namespace proton {
 
-class connection;
-class session;
-class link;
-class sender;
-class receiver;
-
 namespace internal {
 template <class T> struct endpoint_traits;
 template<> struct endpoint_traits<connection> {};

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/timestamp.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/timestamp.hpp b/proton-c/bindings/cpp/include/proton/timestamp.hpp
index c0de3e5..6e4281b 100644
--- a/proton-c/bindings/cpp/include/proton/timestamp.hpp
+++ b/proton-c/bindings/cpp/include/proton/timestamp.hpp
@@ -22,6 +22,8 @@
 
 #include "./duration.hpp"
 
+#include <proton/type_compat.h>
+
 namespace proton {
 
 /// A 64-bit timestamp in milliseconds since the Unix epoch.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/transfer.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/transfer.hpp b/proton-c/bindings/cpp/include/proton/transfer.hpp
index c4f984a..ea073f6 100644
--- a/proton-c/bindings/cpp/include/proton/transfer.hpp
+++ b/proton-c/bindings/cpp/include/proton/transfer.hpp
@@ -22,12 +22,14 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/object.hpp"
 
-#include <proton/delivery.h>
 #include <proton/disposition.h>
 
+struct pn_delivery_t;
+
 namespace proton {
 
 /// The base class for delivery and tracker.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/transport.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/transport.hpp b/proton-c/bindings/cpp/include/proton/transport.hpp
index 10641e0..614eff2 100644
--- a/proton-c/bindings/cpp/include/proton/transport.hpp
+++ b/proton-c/bindings/cpp/include/proton/transport.hpp
@@ -22,22 +22,14 @@
  *
  */
 
-#include "./internal/object.hpp"
-#include "./types.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
+#include "./internal/object.hpp"
 
 struct pn_transport_t;
 
 namespace proton {
 
-class connection;
-class error_condition;
-class sasl;
-
-namespace io {
-class connection_driver;
-}
-
 /// A network channel supporting an AMQP connection.
 class transport : public internal::object<pn_transport_t> {
     /// @cond INTERNAL

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/types.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/types.hpp b/proton-c/bindings/cpp/include/proton/types.hpp
index 5aa52fd..d21cb8f 100644
--- a/proton-c/bindings/cpp/include/proton/types.hpp
+++ b/proton-c/bindings/cpp/include/proton/types.hpp
@@ -29,13 +29,14 @@
 
 // TODO aconway 2016-03-15: described types, described arrays.
 
+#include "./internal/config.hpp"
+
 #include "./annotation_key.hpp"
 #include "./binary.hpp"
 #include "./codec/deque.hpp"
 #include "./codec/list.hpp"
 #include "./codec/map.hpp"
 #include "./codec/vector.hpp"
-#include "./internal/config.hpp"
 #include "./decimal.hpp"
 #include "./duration.hpp"
 #include "./message_id.hpp"
@@ -45,7 +46,6 @@
 #include "./types_fwd.hpp"
 #include "./uuid.hpp"
 #include "./value.hpp"
-#include "./internal/config.hpp"
 
 #if PN_CPP_HAS_CPP11
 #include "./codec/forward_list.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/types_fwd.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/types_fwd.hpp b/proton-c/bindings/cpp/include/proton/types_fwd.hpp
index ec35c87..ff53b0c 100644
--- a/proton-c/bindings/cpp/include/proton/types_fwd.hpp
+++ b/proton-c/bindings/cpp/include/proton/types_fwd.hpp
@@ -29,9 +29,9 @@
 
 #include "./internal/config.hpp"
 
-#include <proton/type_compat.h>
-
-#include <string>
+#if PN_CPP_HAS_NULLPTR
+#include <cstddef>
+#endif
 
 namespace proton {
 
@@ -44,7 +44,6 @@ class symbol;
 class timestamp;
 class duration;
 class uuid;
-class uuid;
 class value;
 
 struct null {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/url.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/url.hpp b/proton-c/bindings/cpp/include/proton/url.hpp
index 78271b6..52e8d43 100644
--- a/proton-c/bindings/cpp/include/proton/url.hpp
+++ b/proton-c/bindings/cpp/include/proton/url.hpp
@@ -23,9 +23,10 @@
  */
 
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types_fwd.hpp"
 #include "./error.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 #include <string>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/uuid.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/uuid.hpp b/proton-c/bindings/cpp/include/proton/uuid.hpp
index 6f3bb1c..a60c944 100644
--- a/proton-c/bindings/cpp/include/proton/uuid.hpp
+++ b/proton-c/bindings/cpp/include/proton/uuid.hpp
@@ -22,8 +22,8 @@
  *
  */
 
-#include "./byte_array.hpp"
 #include "./internal/export.hpp"
+#include "./byte_array.hpp"
 
 #include <string>
 #include <iosfwd>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/value.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/value.hpp b/proton-c/bindings/cpp/include/proton/value.hpp
index b24f02e..3ac1763 100644
--- a/proton-c/bindings/cpp/include/proton/value.hpp
+++ b/proton-c/bindings/cpp/include/proton/value.hpp
@@ -28,6 +28,8 @@
 #include "./scalar.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/connection.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/connection.cpp b/proton-c/bindings/cpp/src/connection.cpp
index dcc1ad5..113932c 100644
--- a/proton-c/bindings/cpp/src/connection.cpp
+++ b/proton-c/bindings/cpp/src/connection.cpp
@@ -25,7 +25,10 @@
 #include "proton/container.hpp"
 #include "proton/error.hpp"
 #include "proton/event_loop.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/session.hpp"
+#include "proton/session_options.hpp"
 #include "proton/transport.hpp"
 
 #include "connector.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/container.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container.cpp b/proton-c/bindings/cpp/src/container.cpp
index 0e64a58..914ee56 100644
--- a/proton-c/bindings/cpp/src/container.cpp
+++ b/proton-c/bindings/cpp/src/container.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "proton/container.hpp"
+#include "proton/error_condition.hpp"
 
 #include "proton/listen_handler.hpp"
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/container_test.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container_test.cpp b/proton-c/bindings/cpp/src/container_test.cpp
index 062bb94..564a4ba 100644
--- a/proton-c/bindings/cpp/src/container_test.cpp
+++ b/proton-c/bindings/cpp/src/container_test.cpp
@@ -21,10 +21,12 @@
 #include "test_bits.hpp"
 #include "proton/connection.hpp"
 #include "proton/connection_options.hpp"
+#include "proton/container.hpp"
 #include "proton/default_container.hpp"
 #include "proton/messaging_handler.hpp"
 #include "proton/listener.hpp"
 #include "proton/listen_handler.hpp"
+#include "proton/thread_safe.hpp"
 
 #include <cstdlib>
 #include <ctime>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/delivery.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/delivery.cpp b/proton-c/bindings/cpp/src/delivery.cpp
index cae2bf0..0562304 100644
--- a/proton-c/bindings/cpp/src/delivery.cpp
+++ b/proton-c/bindings/cpp/src/delivery.cpp
@@ -25,6 +25,8 @@
 
 #include "proton_bits.hpp"
 
+#include <proton/delivery.h>
+
 namespace {
 
 void settle_delivery(pn_delivery_t* o, uint64_t state) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/handler.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/handler.cpp b/proton-c/bindings/cpp/src/handler.cpp
index 453aa42..5cf6208 100644
--- a/proton-c/bindings/cpp/src/handler.cpp
+++ b/proton-c/bindings/cpp/src/handler.cpp
@@ -21,6 +21,7 @@
 #include "proton/messaging_handler.hpp"
 
 #include "proton/connection.hpp"
+#include "proton/error_condition.hpp"
 #include "proton/receiver.hpp"
 #include "proton/sender.hpp"
 #include "proton/session.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/include/container_impl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/container_impl.hpp b/proton-c/bindings/cpp/src/include/container_impl.hpp
index 0ffc2eb..b0d9634 100644
--- a/proton-c/bindings/cpp/src/include/container_impl.hpp
+++ b/proton-c/bindings/cpp/src/include/container_impl.hpp
@@ -22,12 +22,15 @@
  *
  */
 
+#include "proton/fwd.hpp"
 #include "proton/container.hpp"
 #include "proton/connection.hpp"
 #include "proton/connection_options.hpp"
 #include "proton/duration.hpp"
 #include "proton/sender.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/receiver.hpp"
+#include "proton/receiver_options.hpp"
 
 #include "messaging_adapter.hpp"
 #include "reactor.hpp"
@@ -41,10 +44,8 @@
 namespace proton {
 
 class dispatch_helper;
-class connection;
 class connector;
 class acceptor;
-class container;
 class url;
 class listen_handler;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/include/proton_event.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/proton_event.hpp b/proton-c/bindings/cpp/src/include/proton_event.hpp
index 9b33701..00fdadf 100644
--- a/proton-c/bindings/cpp/src/include/proton_event.hpp
+++ b/proton-c/bindings/cpp/src/include/proton_event.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "proton/fwd.hpp"
 #include "proton/error.hpp"
 
 #include <proton/event.h>
@@ -29,7 +30,6 @@
 namespace proton {
 
 class proton_handler;
-class container;
 
 /** Event information for a proton::proton_handler */
 class proton_event

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/include/reactor.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/reactor.hpp b/proton-c/bindings/cpp/src/include/reactor.hpp
index 21df5ce..7aba5f0 100644
--- a/proton-c/bindings/cpp/src/include/reactor.hpp
+++ b/proton-c/bindings/cpp/src/include/reactor.hpp
@@ -23,6 +23,7 @@
 /// @cond INTERNAL
 /// XXX remove
 
+#include "proton/fwd.hpp"
 #include "proton/internal/object.hpp"
 #include "proton/duration.hpp"
 #include "proton/timestamp.hpp"
@@ -33,11 +34,7 @@ struct pn_io_t;
 
 namespace proton {
 
-class connection;
-class container;
 class acceptor;
-class url;
-class messaging_handler;
 
 class reactor : public internal::object<pn_reactor_t> {
   public:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/message.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/message.cpp b/proton-c/bindings/cpp/src/message.cpp
index 9a9634c..eecfa3b 100644
--- a/proton-c/bindings/cpp/src/message.cpp
+++ b/proton-c/bindings/cpp/src/message.cpp
@@ -28,12 +28,13 @@
 #include "proton/sender.hpp"
 #include "proton/timestamp.hpp"
 
-#include <proton/message.h>
-
 #include "msg.hpp"
 #include "proton_bits.hpp"
 #include "types_internal.hpp"
 
+#include <proton/delivery.h>
+#include <proton/message.h>
+
 #include <string>
 #include <algorithm>
 #include <assert.h>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/messaging_adapter.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/messaging_adapter.cpp b/proton-c/bindings/cpp/src/messaging_adapter.cpp
index 928c3be..17c84cd 100644
--- a/proton-c/bindings/cpp/src/messaging_adapter.cpp
+++ b/proton-c/bindings/cpp/src/messaging_adapter.cpp
@@ -22,8 +22,10 @@
 #include "messaging_adapter.hpp"
 
 #include "proton/delivery.hpp"
-#include "proton/sender.hpp"
 #include "proton/error.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/tracker.hpp"
 #include "proton/transport.hpp"
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/receiver.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/receiver.cpp b/proton-c/bindings/cpp/src/receiver.cpp
index 2c417f0..68d55d0 100644
--- a/proton-c/bindings/cpp/src/receiver.cpp
+++ b/proton-c/bindings/cpp/src/receiver.cpp
@@ -18,9 +18,13 @@
  * under the License.
  *
  */
-#include "proton/link.hpp"
 #include "proton/receiver.hpp"
+
 #include "proton/error.hpp"
+#include "proton/link.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/source.hpp"
+#include "proton/target.hpp"
 
 #include "msg.hpp"
 #include "proton_bits.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/sender.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/sender.cpp b/proton-c/bindings/cpp/src/sender.cpp
index f7ec686..70e9fa6 100644
--- a/proton-c/bindings/cpp/src/sender.cpp
+++ b/proton-c/bindings/cpp/src/sender.cpp
@@ -19,8 +19,12 @@
  *
  */
 
-#include "proton/link.hpp"
 #include "proton/sender.hpp"
+
+#include "proton/link.hpp"
+#include "proton/sender_options.hpp"
+#include "proton/source.hpp"
+#include "proton/target.hpp"
 #include "proton/tracker.hpp"
 
 #include <proton/delivery.h>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/session.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/session.cpp b/proton-c/bindings/cpp/src/session.cpp
index 03d8cd1..de152d6 100644
--- a/proton-c/bindings/cpp/src/session.cpp
+++ b/proton-c/bindings/cpp/src/session.cpp
@@ -20,15 +20,17 @@
  */
 #include "proton/session.hpp"
 
-#include <proton/connection.h>
-#include <proton/session.h>
-#include "proton/session.hpp"
 #include "proton/connection.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/session_options.hpp"
 
 #include "contexts.hpp"
 #include "proton_bits.hpp"
 
+#include <proton/connection.h>
+#include <proton/session.h>
+
 #include <string>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/terminus.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/terminus.cpp b/proton-c/bindings/cpp/src/terminus.cpp
index 2c8da03..8065fe4 100644
--- a/proton-c/bindings/cpp/src/terminus.cpp
+++ b/proton-c/bindings/cpp/src/terminus.cpp
@@ -21,10 +21,10 @@
 
 #include "proton/terminus.hpp"
 
-#include "proton_bits.hpp"
+#include "proton/duration.hpp"
+#include "proton/value.hpp"
 
-#include "proton/link.hpp"
-#include <proton/link.h>
+#include "proton_bits.hpp"
 
 namespace proton {
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/tracker.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/tracker.cpp b/proton-c/bindings/cpp/src/tracker.cpp
index 1d309a5..3b15ed5 100644
--- a/proton-c/bindings/cpp/src/tracker.cpp
+++ b/proton-c/bindings/cpp/src/tracker.cpp
@@ -25,6 +25,8 @@
 
 #include "proton_bits.hpp"
 
+#include <proton/delivery.h>
+
 namespace proton {
 
 tracker::tracker(pn_delivery_t *d): transfer(make_wrapper(d)) {}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/tests/tools/apps/cpp/reactor_send.cpp
----------------------------------------------------------------------
diff --git a/tests/tools/apps/cpp/reactor_send.cpp b/tests/tools/apps/cpp/reactor_send.cpp
index 481a305..7841a5e 100644
--- a/tests/tools/apps/cpp/reactor_send.cpp
+++ b/tests/tools/apps/cpp/reactor_send.cpp
@@ -22,11 +22,17 @@
 #include "options.hpp"
 
 #include "proton/binary.hpp"
+#include "proton/codec/decoder.hpp"
 #include "proton/connection.hpp"
+#include "proton/container.hpp"
 #include "proton/default_container.hpp"
-#include "proton/codec/decoder.hpp"
 #include "proton/delivery.hpp"
+#include "proton/message.hpp"
+#include "proton/message_id.hpp"
 #include "proton/messaging_handler.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender.hpp"
+#include "proton/thread_safe.hpp"
 #include "proton/tracker.hpp"
 #include "proton/value.hpp"
 


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


[21/30] qpid-proton git commit: PROTON-1374: update versions to 0.17.0-SNAPSHOT on master

Posted by ac...@apache.org.
PROTON-1374: update versions to 0.17.0-SNAPSHOT on master


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

Branch: refs/heads/go1
Commit: a2465276f1e115d8a516b3b725ab57bcc2aed6b2
Parents: 6a6511d
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 15:17:31 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 15:17:31 2016 +0000

----------------------------------------------------------------------
 examples/engine/java/pom.xml          | 2 +-
 examples/java/messenger/pom.xml       | 2 +-
 examples/java/reactor/pom.xml         | 2 +-
 pom.xml                               | 2 +-
 proton-c/bindings/python/docs/conf.py | 4 ++--
 proton-j/pom.xml                      | 2 +-
 tests/pom.xml                         | 2 +-
 version.txt                           | 2 +-
 8 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/examples/engine/java/pom.xml
----------------------------------------------------------------------
diff --git a/examples/engine/java/pom.xml b/examples/engine/java/pom.xml
index 5218f2b..bf334b0 100644
--- a/examples/engine/java/pom.xml
+++ b/examples/engine/java/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.apache.qpid</groupId>
     <artifactId>proton-project</artifactId>
-    <version>0.16.0-SNAPSHOT</version>
+    <version>0.17.0-SNAPSHOT</version>
     <relativePath>../../../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/examples/java/messenger/pom.xml
----------------------------------------------------------------------
diff --git a/examples/java/messenger/pom.xml b/examples/java/messenger/pom.xml
index 0d50bf8..a23a4a3 100644
--- a/examples/java/messenger/pom.xml
+++ b/examples/java/messenger/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.apache.qpid</groupId>
     <artifactId>proton-project</artifactId>
-    <version>0.16.0-SNAPSHOT</version>
+    <version>0.17.0-SNAPSHOT</version>
     <relativePath>../../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/examples/java/reactor/pom.xml
----------------------------------------------------------------------
diff --git a/examples/java/reactor/pom.xml b/examples/java/reactor/pom.xml
index aa5c47f..3ca3ec3 100644
--- a/examples/java/reactor/pom.xml
+++ b/examples/java/reactor/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.apache.qpid</groupId>
     <artifactId>proton-project</artifactId>
-    <version>0.16.0-SNAPSHOT</version>
+    <version>0.17.0-SNAPSHOT</version>
     <relativePath>../../..</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1f2e8af..7391713 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
 
   <groupId>org.apache.qpid</groupId>
   <artifactId>proton-project</artifactId>
-  <version>0.16.0-SNAPSHOT</version>
+  <version>0.17.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <properties>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/proton-c/bindings/python/docs/conf.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/docs/conf.py b/proton-c/bindings/python/docs/conf.py
index 9e51595..cae646c 100644
--- a/proton-c/bindings/python/docs/conf.py
+++ b/proton-c/bindings/python/docs/conf.py
@@ -48,9 +48,9 @@ copyright = u'2015, Apache Qpid'
 # built documents.
 #
 # The short X.Y version.
-version = '0.16.0'
+version = '0.17.0'
 # The full version, including alpha/beta/rc tags.
-release = '0.16.0-SNAPSHOT'
+release = '0.17.0-SNAPSHOT'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/proton-j/pom.xml
----------------------------------------------------------------------
diff --git a/proton-j/pom.xml b/proton-j/pom.xml
index da7fb38..167bf6e 100644
--- a/proton-j/pom.xml
+++ b/proton-j/pom.xml
@@ -19,7 +19,7 @@
   <parent>
     <groupId>org.apache.qpid</groupId>
     <artifactId>proton-project</artifactId>
-    <version>0.16.0-SNAPSHOT</version>
+    <version>0.17.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/tests/pom.xml
----------------------------------------------------------------------
diff --git a/tests/pom.xml b/tests/pom.xml
index eb9d717..c01089f 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -27,7 +27,7 @@
   <parent>
     <groupId>org.apache.qpid</groupId>
     <artifactId>proton-project</artifactId>
-    <version>0.16.0-SNAPSHOT</version>
+    <version>0.17.0-SNAPSHOT</version>
   </parent>
 
   <description>The Proton python system tests execute against the Java or C implementation, using Maven (via this pom) and CMake/CTest respectively.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/a2465276/version.txt
----------------------------------------------------------------------
diff --git a/version.txt b/version.txt
index e466c4e..636e47c 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-0.16.0-SNAPSHOT
+0.17.0-SNAPSHOT


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


[13/30] qpid-proton git commit: PROTON-1373: C++ API doc improvements

Posted by ac...@apache.org.
PROTON-1373: C++ API doc improvements

 - Fix all warnings
 - Expose C++11 API elements
 - Improve presentation in class list
 - Some simple corrections


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

Branch: refs/heads/go1
Commit: bea617333ec36a97fc3079375d2574ea28de6b7e
Parents: 1c7e70a
Author: Justin Ross <jr...@apache.org>
Authored: Wed Dec 7 18:29:35 2016 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Wed Dec 7 18:29:35 2016 -0800

----------------------------------------------------------------------
 proton-c/bindings/cpp/docs/user.doxygen.in      |  2 +-
 .../cpp/include/proton/codec/encoder.hpp        |  4 ++--
 .../bindings/cpp/include/proton/container.hpp   |  9 +++++++--
 .../cpp/include/proton/default_container.hpp    |  4 ++++
 .../bindings/cpp/include/proton/endpoint.hpp    |  5 +++--
 .../cpp/include/proton/error_condition.hpp      |  4 +++-
 .../bindings/cpp/include/proton/function.hpp    | 14 ++++++++------
 .../cpp/include/proton/internal/type_traits.hpp |  8 ++++----
 .../include/proton/io/container_impl_base.hpp   | 20 ++++++++++----------
 proton-c/bindings/cpp/include/proton/sasl.hpp   |  2 ++
 .../bindings/cpp/include/proton/thread_safe.hpp |  7 ++++++-
 proton-c/bindings/cpp/include/proton/url.hpp    |  2 +-
 12 files changed, 51 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/docs/user.doxygen.in
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/docs/user.doxygen.in b/proton-c/bindings/cpp/docs/user.doxygen.in
index 8ec4e47..a56eb98 100644
--- a/proton-c/bindings/cpp/docs/user.doxygen.in
+++ b/proton-c/bindings/cpp/docs/user.doxygen.in
@@ -43,7 +43,7 @@ ALPHABETICAL_INDEX      = NO
 ENABLE_PREPROCESSING = YES
 MACRO_EXPANSION = YES
 EXPAND_ONLY_PREDEF = YES
-PREDEFINED = protected=private PN_CPP_EXTERN= PN_CPP_OVERRIDE=
+PREDEFINED = protected=private PN_CPP_EXTERN= PN_CPP_OVERRIDE= PN_CPP_HAS_CPP11=1 PN_CPP_HAS_SHARED_PTR=1 PN_CPP_HAS_UNIQUE_PTR=1 PN_CPP_HAS_LONG_LONG=1 PN_CPP_HAS_NULLPTR=1 PN_CPP_HAS_RVALUE_REFERENCES=1 PN_CPP_HAS_OVERRIDE=override PN_CPP_HAS_EXPLICIT_CONVERSIONS=1 PN_CPP_HAS_DEFAULTED_FUNCTIONS=1 PN_CPP_HAS_DELETED_FUNCTIONS=1 PN_CPP_HAS_STD_FUNCTION=1 PN_CPP_HAS_CHRONO=1
 EXCLUDE_SYMBOLS = internal internal::*
 
 # Configuration options related to warning and progress messages

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/codec/encoder.hpp b/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
index 24de309..222e95b 100644
--- a/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
+++ b/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
@@ -38,8 +38,8 @@ class value_base;
 
 namespace codec {
 
-/// **Experimental** - Stream-like encoder from AMQP bytes to C++
-/// values.
+/// **Experimental** - Stream-like encoder from C++ values to AMQP
+/// bytes.
 ///
 /// For internal use only.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/container.hpp b/proton-c/bindings/cpp/include/proton/container.hpp
index bc3a104..0c40f3d 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -46,8 +46,12 @@ namespace proton {
 /// messages.
 class PN_CPP_CLASS_EXTERN container {
   public:
+    /// Create a container.
     PN_CPP_EXTERN container(messaging_handler& h, const std::string& id="");
+
+    /// Create a container.
     PN_CPP_EXTERN container(const std::string& id="");
+
     PN_CPP_EXTERN ~container();
 
     /// Connect to `url` and send an open request to the remote peer.
@@ -205,8 +209,9 @@ class PN_CPP_CLASS_EXTERN container {
     /// @copydoc receiver_options
     PN_CPP_EXTERN class receiver_options receiver_options() const;
 
-    /// Schedule a function to be called after the duration.
-    /// C++03 compatible, for C++11 use the schedule(duration, std::function<void()>)
+    /// Schedule a function to be called after the duration.  C++03
+    /// compatible, for C++11 use schedule(duration,
+    /// std::function<void()>)
     PN_CPP_EXTERN void schedule(duration, void_function0&);
 
 #if PN_CPP_HAS_STD_FUNCTION

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/default_container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/default_container.hpp b/proton-c/bindings/cpp/include/proton/default_container.hpp
index 3b3fce9..0f245a0 100644
--- a/proton-c/bindings/cpp/include/proton/default_container.hpp
+++ b/proton-c/bindings/cpp/include/proton/default_container.hpp
@@ -23,7 +23,11 @@
  */
 
 namespace proton {
+
+/// @cond INTERNAL
 typedef class container default_container;
+/// @endcond
+
 } // proton
 
 #endif // PROTON_DEFAULT_CONTAINER_HPP

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/endpoint.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/endpoint.hpp b/proton-c/bindings/cpp/include/proton/endpoint.hpp
index 36ac981..b041906 100644
--- a/proton-c/bindings/cpp/include/proton/endpoint.hpp
+++ b/proton-c/bindings/cpp/include/proton/endpoint.hpp
@@ -62,13 +62,14 @@ PN_CPP_CLASS_EXTERN endpoint {
 
 #if PN_CPP_HAS_DEFAULTED_FUNCTIONS
     // Make everything explicit for C++11 compilers
-    
+
+    /// @cond INTERNAL
     endpoint() = default;
     endpoint& operator=(const endpoint&) = default;
     endpoint& operator=(endpoint&&) = default;
-
     endpoint(const endpoint&) = default;
     endpoint(endpoint&&) = default;
+    /// @endcond
 #endif
 };
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/error_condition.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/error_condition.hpp b/proton-c/bindings/cpp/include/proton/error_condition.hpp
index fb39332..fb0d461 100644
--- a/proton-c/bindings/cpp/include/proton/error_condition.hpp
+++ b/proton-c/bindings/cpp/include/proton/error_condition.hpp
@@ -55,16 +55,18 @@ class error_condition {
     PN_CPP_EXTERN error_condition(std::string name, std::string description, proton::value properties);
 
 #if PN_CPP_HAS_DEFAULTED_FUNCTIONS
+    /// @cond INTERNAL
     error_condition(const error_condition&) = default;
     error_condition(error_condition&&) = default;
     error_condition& operator=(const error_condition&) = default;
     error_condition& operator=(error_condition&&) = default;
+    /// @endcond
 #endif
 
+#if PN_CPP_HAS_EXPLICIT_CONVERSIONS
     /// If you are using a C++11 compiler, you may use an
     /// error_condition in boolean contexts. The expression will be
     /// true if the error_condition is set.
-#if PN_CPP_HAS_EXPLICIT_CONVERSIONS
     PN_CPP_EXTERN explicit operator bool() const;
 #endif
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/function.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/function.hpp b/proton-c/bindings/cpp/include/proton/function.hpp
index 4fbbe16..ac756c7 100644
--- a/proton-c/bindings/cpp/include/proton/function.hpp
+++ b/proton-c/bindings/cpp/include/proton/function.hpp
@@ -22,14 +22,16 @@
 
 namespace proton {
 
-/// A C++03 compatible void no-argument callback function object, used by
-/// container::schedule() and event_loop::inject()
-/// In C++11 you can use std::bind, std::function or a void-no-argument lambda instead.
+/// A C++03 compatible void no-argument callback function object.
 ///
-/// void_function0 is passed by reference, so instances of sub-classes do not
-/// have to be heap allocated.  Once passed, the instance must not be deleted until
-/// its operator() is called or the container has stopped.
+/// Used by container::schedule() and event_loop::inject().  In C++11
+/// you can use std::bind, std::function or a void-no-argument lambda
+/// instead.
 ///
+/// void_function0 is passed by reference, so instances of sub-classes
+/// do not have to be heap allocated.  Once passed, the instance must
+/// not be deleted until its operator() is called or the container has
+/// stopped.
 class void_function0 {
   public:
     virtual ~void_function0() {}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
index 4c4c7d6..8abba55 100644
--- a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
@@ -22,10 +22,10 @@
  *
  */
 
-/// Type traits for mapping between AMQP and C++ types.
-///
-/// Also provides workarounds for missing type_traits classes on older
-/// C++ compilers.
+// Type traits for mapping between AMQP and C++ types.
+//
+// Also provides workarounds for missing type_traits classes on older
+// C++ compilers.
 
 #include "./config.hpp"
 #include "../types_fwd.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp b/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
index 0aeed78..a04b4ff 100644
--- a/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
+++ b/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
@@ -45,54 +45,54 @@ class container_impl_base : public standard_container {
     using standard_container::open_receiver;
     using standard_container::open_sender;
 
-    /// @copydoc container::client_connection_options
+    /// @see proton::container::client_connection_options
     void client_connection_options(const connection_options & opts) {
         store(client_copts_, opts);
     }
     
-    /// @copydoc container::client_connection_options
+    /// @see proton::container::client_connection_options
     connection_options client_connection_options() const {
         return load(client_copts_);
     }
     
-    /// @copydoc container::server_connection_options
+    /// @see proton::container::server_connection_options
     void server_connection_options(const connection_options & opts) {
         store(server_copts_, opts);
     }
     
-    /// @copydoc container::server_connection_options
+    /// @see proton::container::server_connection_options
     connection_options server_connection_options() const {
         return load(server_copts_);
     }
     
-    /// @copydoc container::sender_options
+    /// @see proton::container::sender_options
     void sender_options(const class sender_options & opts) {
         store(sender_opts_, opts);
     }
     
-    /// @copydoc container::sender_options
+    /// @see proton::container::sender_options
     class sender_options sender_options() const {
         return load(sender_opts_);
     }
     
-    /// @copydoc container::receiver_options
+    /// @see proton::container::receiver_options
     void receiver_options(const class receiver_options & opts) {
         store(receiver_opts_, opts);
     }
     
-    /// @copydoc container::receiver_options
+    /// @see proton::container::receiver_options
     class receiver_options receiver_options() const {
         return load(receiver_opts_);
     }
 
-    /// @copydoc container::open_sender
+    /// @see proton::container::open_sender
     returned<sender> open_sender(
         const std::string &url, const class sender_options &opts, const connection_options &copts)
     {
         return open_link<sender, class sender_options>(url, opts, copts, &connection::open_sender);
     }
 
-    /// @copydoc container::open_receiver
+    /// @see proton::container::open_receiver
     returned<receiver> open_receiver(
         const std::string &url, const class receiver_options &opts, const connection_options &copts)
     {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/sasl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/sasl.hpp b/proton-c/bindings/cpp/include/proton/sasl.hpp
index 137aa28..3857f06 100644
--- a/proton-c/bindings/cpp/include/proton/sasl.hpp
+++ b/proton-c/bindings/cpp/include/proton/sasl.hpp
@@ -46,7 +46,9 @@ class sasl {
     sasl& operator=(sasl&&) = delete;
 #endif
 #if PN_CPP_HAS_DEFAULTED_FUNCTIONS
+    /// @cond INTERNAL
     sasl(sasl&&) = default;
+    /// @endcond
 #endif
 
     /// The result of the SASL negotiation.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/thread_safe.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/thread_safe.hpp b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
index 7851245..28aa3a6 100644
--- a/proton-c/bindings/cpp/include/proton/thread_safe.hpp
+++ b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
@@ -113,7 +113,7 @@ class thread_safe : private internal::pn_ptr_base, private internal::endpoint_tr
     /// @endcond
 };
 
-// return value for functions returning a thread_safe<> object.
+// A return value for functions returning a thread_safe<> object.
 //
 // Temporary return value only, you should release() to get a plain pointer or
 // assign to a smart pointer type.
@@ -161,12 +161,17 @@ class returned : private internal::endpoint_traits<T>
 template <class T> returned<T> make_thread_safe(const T& obj) { return returned<T>(obj); }
 
 #if PN_CPP_HAS_CPP11
+
+/// Create a thread-safe shared_ptr to `obj`.
 template <class T> std::shared_ptr<thread_safe<T> > make_shared_thread_safe(const T& obj) {
     return make_thread_safe(obj);
 }
+
+/// Create a thread-safe unique_ptr to `obj`.
 template <class T> std::unique_ptr<thread_safe<T> > make_unique_thread_safe(const T& obj) {
     return make_thread_safe(obj);
 }
+
 #endif
 
 } // proton

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/bea61733/proton-c/bindings/cpp/include/proton/url.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/url.hpp b/proton-c/bindings/cpp/include/proton/url.hpp
index 52e8d43..b94b24d 100644
--- a/proton-c/bindings/cpp/include/proton/url.hpp
+++ b/proton-c/bindings/cpp/include/proton/url.hpp
@@ -41,7 +41,7 @@ PN_CPP_CLASS_EXTERN url_error : public error {
     /// @endcond
 };
 
-/// A Proton URL.
+/// A URL parser.
 ///
 ///  Proton URLs take the form
 /// `<scheme>://<username>:<password>@<host>:<port>/<path>`.


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


[29/30] qpid-proton git commit: NO-JIRA: Go example error handling and logging improvements

Posted by ac...@apache.org.
NO-JIRA: Go example error handling and logging improvements


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

Branch: refs/heads/go1
Commit: 4abf23afa65fea25efa5d56e11d58af9d1ec98bc
Parents: cd6ecc5
Author: Alan Conway <ac...@redhat.com>
Authored: Tue Jan 3 16:52:44 2017 -0500
Committer: Alan Conway <ac...@redhat.com>
Committed: Tue Jan 3 16:52:44 2017 -0500

----------------------------------------------------------------------
 examples/go/electron/broker.go                  | 23 ++++++++------------
 examples/go/electron/receive.go                 | 12 +++++-----
 examples/go/electron/send.go                    |  4 ++--
 .../go/src/qpid.apache.org/electron/endpoint.go |  4 ++++
 .../go/src/qpid.apache.org/proton/wrappers.go   |  8 +++----
 5 files changed, 26 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4abf23af/examples/go/electron/broker.go
----------------------------------------------------------------------
diff --git a/examples/go/electron/broker.go b/examples/go/electron/broker.go
index d698838..2078d1e 100644
--- a/examples/go/electron/broker.go
+++ b/examples/go/electron/broker.go
@@ -55,7 +55,7 @@ func main() {
 	flag.Parse()
 	b := &broker{
 		queues:    util.MakeQueues(*qsize),
-		container: electron.NewContainer(fmt.Sprintf("broker[%s]", os.Getpid())),
+		container: electron.NewContainer(fmt.Sprintf("broker[%v]", os.Getpid())),
 		acks:      make(chan electron.Outcome),
 		sent:      make(chan sentMessage),
 	}
@@ -113,28 +113,23 @@ type connection struct {
 // and start goroutines to service them.
 func (c *connection) run() {
 	for in := range c.connection.Incoming() {
+		util.Debugf("incoming %v", in)
+
 		switch in := in.(type) {
 
 		case *electron.IncomingSender:
-			if in.Source() == "" {
-				in.Reject(fmt.Errorf("no source"))
-			} else {
-				go c.sender(in.Accept().(electron.Sender))
-			}
+			s := in.Accept().(electron.Sender)
+			go c.sender(s)
 
 		case *electron.IncomingReceiver:
-			if in.Target() == "" {
-				in.Reject(fmt.Errorf("no target"))
-			} else {
-				in.SetPrefetch(true)
-				in.SetCapacity(*credit) // Pre-fetch up to credit window.
-				go c.receiver(in.Accept().(electron.Receiver))
-			}
+			in.SetPrefetch(true)
+			in.SetCapacity(*credit) // Pre-fetch up to credit window.
+			r := in.Accept().(electron.Receiver)
+			go c.receiver(r)
 
 		default:
 			in.Accept() // Accept sessions unconditionally
 		}
-		util.Debugf("incoming: %v", in)
 	}
 	util.Debugf("incoming closed: %v", c.connection)
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4abf23af/examples/go/electron/receive.go
----------------------------------------------------------------------
diff --git a/examples/go/electron/receive.go b/examples/go/electron/receive.go
index 7a505d8..3bbe327 100644
--- a/examples/go/electron/receive.go
+++ b/examples/go/electron/receive.go
@@ -57,7 +57,7 @@ func main() {
 	var wait sync.WaitGroup // Used by main() to wait for all goroutines to end.
 	wait.Add(len(urls))     // Wait for one goroutine per URL.
 
-	container := electron.NewContainer(fmt.Sprintf("receive[%s]", os.Getpid()))
+	container := electron.NewContainer(fmt.Sprintf("receive[%v]", os.Getpid()))
 	connections := make(chan electron.Connection, len(urls)) // Connections to close on exit
 
 	// Start a goroutine to for each URL to receive messages and send them to the messages channel.
@@ -81,12 +81,13 @@ func main() {
 
 			// Loop receiving messages and sending them to the main() goroutine
 			for {
-				if rm, err := r.Receive(); err != nil {
-					util.Debugf("closed %v: %v", urlStr, err)
-					return
-				} else {
+				if rm, err := r.Receive(); err == nil {
 					rm.Accept()
 					messages <- rm.Message
+				} else if err == electron.Closed {
+					return
+				} else {
+					log.Fatalf("receive error %v: %v", urlStr, err)
 				}
 			}
 		}(urlStr)
@@ -103,6 +104,7 @@ func main() {
 	fmt.Printf("Received %d messages\n", *count)
 
 	// Close all connections, this will interrupt goroutines blocked in Receiver.Receive()
+	// with electron.Closed.
 	for i := 0; i < len(urls); i++ {
 		c := <-connections
 		util.Debugf("close %s", c)

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4abf23af/examples/go/electron/send.go
----------------------------------------------------------------------
diff --git a/examples/go/electron/send.go b/examples/go/electron/send.go
index 4ea93ec..68b8b2e 100644
--- a/examples/go/electron/send.go
+++ b/examples/go/electron/send.go
@@ -56,7 +56,7 @@ func main() {
 	var wait sync.WaitGroup
 	wait.Add(len(urls)) // Wait for one goroutine per URL.
 
-	container := electron.NewContainer(fmt.Sprintf("send[%s]", os.Getpid()))
+	container := electron.NewContainer(fmt.Sprintf("send[%v]", os.Getpid()))
 	connections := make(chan electron.Connection, len(urls)) // Connctions to close on exit
 
 	// Start a goroutine for each URL to send messages.
@@ -93,7 +93,7 @@ func main() {
 	for i := 0; i < expect; i++ {
 		out := <-sentChan // Outcome of async sends.
 		if out.Error != nil {
-			util.Debugf("acknowledgement[%v] %v error: %v\n", i, out.Value, out.Error)
+			log.Fatalf("acknowledgement[%v] %v error: %v\n", i, out.Value, out.Error)
 		} else {
 			util.Debugf("acknowledgement[%v]  %v (%v)\n", i, out.Value, out.Status)
 		}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4abf23af/proton-c/bindings/go/src/qpid.apache.org/electron/endpoint.go
----------------------------------------------------------------------
diff --git a/proton-c/bindings/go/src/qpid.apache.org/electron/endpoint.go b/proton-c/bindings/go/src/qpid.apache.org/electron/endpoint.go
index ca93e5b..a6ce6c8 100644
--- a/proton-c/bindings/go/src/qpid.apache.org/electron/endpoint.go
+++ b/proton-c/bindings/go/src/qpid.apache.org/electron/endpoint.go
@@ -29,6 +29,10 @@ import (
 // was closed cleanly.
 var Closed = io.EOF
 
+// EOF is an alias for io.EOF. It is returned as an error when an endpoint
+// was closed cleanly.
+var EOF = io.EOF
+
 // Endpoint is the local end of a communications channel to the remote peer
 // process.  The following interface implement Endpoint: Connection, Session,
 // Sender and Receiver.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4abf23af/proton-c/bindings/go/src/qpid.apache.org/proton/wrappers.go
----------------------------------------------------------------------
diff --git a/proton-c/bindings/go/src/qpid.apache.org/proton/wrappers.go b/proton-c/bindings/go/src/qpid.apache.org/proton/wrappers.go
index 4d55e4f..b6386b8 100644
--- a/proton-c/bindings/go/src/qpid.apache.org/proton/wrappers.go
+++ b/proton-c/bindings/go/src/qpid.apache.org/proton/wrappers.go
@@ -169,14 +169,14 @@ type Endpoint interface {
 	RemoteCondition() Condition
 	// Human readable name
 	String() string
-	// Human readable endpoint type "link", "session" etc.
+	// Human readable endpoint type "sender-link", "session" etc.
 	Type() string
 }
 
 // CloseError sets an error condition (if err != nil) on an endpoint and closes
 // the endpoint if not already closed
 func CloseError(e Endpoint, err error) {
-	if err != nil {
+	if err != nil && !e.Condition().IsSet() {
 		e.Condition().SetError(err)
 	}
 	e.Close()
@@ -262,9 +262,9 @@ func (l Link) String() string {
 
 func (l Link) Type() string {
 	if l.IsSender() {
-		return "link(sender)"
+		return "sender-link"
 	} else {
-		return "link(receiver)"
+		return "receiver-link"
 	}
 }
 


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


[25/30] qpid-proton git commit: PROTON-1375: Don't use default promoted parameter to va_start

Posted by ac...@apache.org.
PROTON-1375: Don't use default promoted parameter to va_start


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

Branch: refs/heads/go1
Commit: 79d06f0705a973a00fc66283462fa12ad729a708
Parents: ce8db5a
Author: Andrew Stitcher <as...@apache.org>
Authored: Wed Dec 14 15:12:23 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Wed Dec 14 15:12:23 2016 -0500

----------------------------------------------------------------------
 proton-c/src/tests/object.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/79d06f07/proton-c/src/tests/object.c
----------------------------------------------------------------------
diff --git a/proton-c/src/tests/object.c b/proton-c/src/tests/object.c
index 4008fc6..8a1d00e 100644
--- a/proton-c/src/tests/object.c
+++ b/proton-c/src/tests/object.c
@@ -50,14 +50,14 @@ static pn_list_t *build_list(size_t capacity, ...)
   return result;
 }
 
-static pn_map_t *build_map(size_t capacity, float load_factor, ...)
+static pn_map_t *build_map(float load_factor, size_t capacity, ...)
 {
   pn_map_t *result = pn_map(PN_OBJECT, PN_OBJECT, capacity, load_factor);
   va_list ap;
 
   void *prev = NULL;
 
-  va_start(ap, load_factor);
+  va_start(ap, capacity);
   int count = 0;
   while (true) {
     void *arg = va_arg(ap, void *);
@@ -397,7 +397,7 @@ static void test_build_list(void)
 
 static void test_build_map(void)
 {
-  pn_map_t *m = build_map(0, 0.75,
+  pn_map_t *m = build_map(0.75, 0,
                           pn_string("key"),
                           pn_string("value"),
                           pn_string("key2"),
@@ -421,7 +421,7 @@ static void test_build_map(void)
 
 static void test_build_map_odd(void)
 {
-  pn_map_t *m = build_map(0, 0.75,
+  pn_map_t *m = build_map(0.75, 0,
                           pn_string("key"),
                           pn_string("value"),
                           pn_string("key2"),
@@ -767,24 +767,24 @@ void test_map_inspect(void)
   // note that when there is more than one entry in a map, the order
   // of the entries is dependent on the hashes involved, it will be
   // deterministic though
-  pn_map_t *m = build_map(0, 0.75, END);
+  pn_map_t *m = build_map(0.75, 0, END);
   test_inspect(m, "{}");
   pn_free(m);
 
-  m = build_map(0, 0.75,
+  m = build_map(0.75, 0,
                 pn_string("key"), pn_string("value"),
                 END);
   test_inspect(m, "{\"key\": \"value\"}");
   pn_free(m);
 
-  m = build_map(0, 0.75,
+  m = build_map(0.75, 0,
                 pn_string("k1"), pn_string("v1"),
                 pn_string("k2"), pn_string("v2"),
                 END);
   test_inspect(m, "{\"k1\": \"v1\", \"k2\": \"v2\"}");
   pn_free(m);
 
-  m = build_map(0, 0.75,
+  m = build_map(0.75, 0,
                 pn_string("k1"), pn_string("v1"),
                 pn_string("k2"), pn_string("v2"),
                 pn_string("k3"), pn_string("v3"),


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


[22/30] qpid-proton git commit: PROTON-1374: update the .so version to 11 on master for 0.17.0

Posted by ac...@apache.org.
PROTON-1374: update the .so version to 11 on master for 0.17.0


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

Branch: refs/heads/go1
Commit: 2389a2179e39fd53912a3e28369b1b409d94c996
Parents: a246527
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 15:18:28 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 15:18:28 2016 +0000

----------------------------------------------------------------------
 proton-c/soversion.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/2389a217/proton-c/soversion.cmake
----------------------------------------------------------------------
diff --git a/proton-c/soversion.cmake b/proton-c/soversion.cmake
index 58cc6f5..665edca 100644
--- a/proton-c/soversion.cmake
+++ b/proton-c/soversion.cmake
@@ -1,2 +1,2 @@
-set (PN_LIB_SOMAJOR 10)
+set (PN_LIB_SOMAJOR 11)
 set (PN_LIB_SOMINOR "0.0")


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


[26/30] qpid-proton git commit: PROTON-1376: Serialize re-construction of generated files for Windows

Posted by ac...@apache.org.
PROTON-1376: Serialize re-construction of generated files for Windows

Windows builds wrongly regenerate files for libraries qpid-proton and
qpid-proton-core. Regeneration creates file churn that sometimes
breaks builds. This patch introduces a phony dependency so that
the generated file reconstruction does not cause a problem.


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

Branch: refs/heads/go1
Commit: 9377d859b5096dfeb3e00c935610784ecbc3c04f
Parents: 79d06f0
Author: Chuck Rolke <cr...@redhat.com>
Authored: Tue Dec 20 13:48:39 2016 -0500
Committer: Chuck Rolke <cr...@redhat.com>
Committed: Tue Dec 20 13:48:39 2016 -0500

----------------------------------------------------------------------
 proton-c/CMakeLists.txt | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/9377d859/proton-c/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/proton-c/CMakeLists.txt b/proton-c/CMakeLists.txt
index 5f26d43..f674eee 100644
--- a/proton-c/CMakeLists.txt
+++ b/proton-c/CMakeLists.txt
@@ -538,6 +538,14 @@ add_library(
   )
 add_dependencies(qpid-proton generated_c_files)
 
+if (MSVC)
+  # Add a phony dependency for Windows builds to serialize creation
+  # of generated files. See issue PROTON-1376.
+  # When a Windows build creates src/encodings.h and src/protocol.h
+  # only once then this can be removed.
+  add_dependencies(qpid-proton qpid-proton-core)
+endif (MSVC)
+
 target_link_libraries (qpid-proton ${UUID_LIB} ${SSL_LIB} ${SASL_LIB} ${TIME_LIB} ${PLATFORM_LIBS})
 
 set_target_properties (


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


[23/30] qpid-proton git commit: PROTON-1350: Install proton-c core library - This was missed from the initial PROTON-1350 commit

Posted by ac...@apache.org.
PROTON-1350: Install proton-c core library
- This was missed from the initial PROTON-1350 commit


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

Branch: refs/heads/go1
Commit: 16da86ebbe08d64e32408c97cc5016ca458351af
Parents: 2389a21
Author: Andrew Stitcher <as...@apache.org>
Authored: Thu Dec 8 15:17:46 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Thu Dec 8 15:17:46 2016 -0500

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


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/16da86eb/proton-c/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/proton-c/CMakeLists.txt b/proton-c/CMakeLists.txt
index ffc6e10..5f26d43 100644
--- a/proton-c/CMakeLists.txt
+++ b/proton-c/CMakeLists.txt
@@ -554,7 +554,7 @@ if (MSVC)
 endif(MSVC)
 
 # Install executables and libraries
-install (TARGETS qpid-proton
+install (TARGETS qpid-proton qpid-proton-core
   EXPORT  proton
   RUNTIME DESTINATION bin
   ARCHIVE DESTINATION ${LIB_INSTALL_DIR}


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


[06/30] qpid-proton git commit: PROTON-1367: Clean up and reorganize the C API docs

Posted by ac...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/connection_driver.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/connection_driver.h b/proton-c/include/proton/connection_driver.h
index af08160..9db8233 100644
--- a/proton-c/include/proton/connection_driver.h
+++ b/proton-c/include/proton/connection_driver.h
@@ -1,5 +1,5 @@
 #ifndef PROTON_CONNECTION_DRIVER_H
-#define PROTON_CONNECTION_DRIVER_H
+#define PROTON_CONNECTION_DRIVER_H 1
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -22,51 +22,55 @@
 
 /**
  * @file
- * **Experimental**: Low-level IO integration
  *
- * @defgroup connection_driver Connection Driver
+ * **Experimental** - Low-level IO integration
  *
- * **Experimental**: Low-level IO integration
- *
- * Associate an @ref engine with AMQP byte-streams from any source.
+ * Associate a @ref connection and @ref transport with AMQP byte
+ * streams from any source.
  *
  * - process AMQP-encoded bytes from some input byte stream
  * - generate ::pn_event_t events for your application to handle
  * - encode resulting AMQP output bytes for some output byte stream
  *
- * The pn_connection_driver_() functions provide a simplified API and extra
- * logic to use ::pn_connection_t and ::pn_transport_t as a unit.  You can also
- * access them directly for features that do not have pn_connection_driver_()
- * functions
+ * The pn_connection_driver_() functions provide a simplified API and
+ * extra logic to use ::pn_connection_t and ::pn_transport_t as a
+ * unit.  You can also access them directly for features that do not
+ * have pn_connection_driver_() functions.
  *
  * The driver buffers events and data, you should run it until
- * pn_connection_driver_finished() is true, to ensure all reading, writing and
- * event handling (including ERROR and FINAL events) is finished.
+ * pn_connection_driver_finished() is true, to ensure all reading,
+ * writing and event handling (including ERROR and FINAL events) is
+ * finished.
  *
  * ## Error handling
  *
- * The pn_connection_driver_*() functions do not return an error code. IO errors set
- * the transport condition and are returned as a PN_TRANSPORT_ERROR. The integration
- * code can set errors using pn_connection_driver_errorf()
+ * The pn_connection_driver_*() functions do not return an error
+ * code. IO errors set the transport condition and are returned as a
+ * PN_TRANSPORT_ERROR. The integration code can set errors using
+ * pn_connection_driver_errorf().
  *
  * ## IO patterns
  *
- * This API supports asynchronous, proactive, non-blocking and reactive IO. An
- * integration does not have to follow the dispatch-read-write sequence above,
- * but note that you should handle all available events before calling
- * pn_connection_driver_read_buffer() and check that `size` is non-zero before
- * starting a blocking or asynchronous read call. A `read` started while there
- * are unprocessed CLOSE events in the buffer may never complete.
+ * This API supports asynchronous, proactive, non-blocking and
+ * reactive IO. An integration does not have to follow the
+ * dispatch-read-write sequence above, but note that you should handle
+ * all available events before calling
+ * pn_connection_driver_read_buffer() and check that `size` is
+ * non-zero before starting a blocking or asynchronous read call. A
+ * `read` started while there are unprocessed CLOSE events in the
+ * buffer may never complete.
  *
- * AMQP is a full-duplex, asynchronous protocol. The "read" and "write" sides of
- * an AMQP connection can close separately
+ * AMQP is a full-duplex, asynchronous protocol. The "read" and
+ * "write" sides of an AMQP connection can close separately.
  *
  * ## Thread safety
  *
- * The @ref connection_driver types are not thread safe, but each connection and its
- * associated types forms an independent unit. Different connections can be
- * processed concurrently by different threads.
+ * The @ref connection_driver types are not thread safe, but each
+ * connection and its associated types forms an independent
+ * unit. Different connections can be processed concurrently by
+ * different threads.
  *
+ * @addtogroup connection_driver
  * @{
  */
 
@@ -81,7 +85,7 @@ extern "C" {
 #endif
 
 /**
- * Struct containing the 3 elements needed to driver AMQP IO and events, aggregated as a unit.
+ * The elements needed to drive AMQP IO and events.
  */
 typedef struct pn_connection_driver_t {
   pn_connection_t *connection;
@@ -235,10 +239,13 @@ PN_EXTERN void pn_connection_driver_vlogf(pn_connection_driver_t *d, const char
  * else return NULL
  */
 PN_EXTERN pn_connection_driver_t* pn_event_batch_connection_driver(pn_event_batch_t *batch);
-///@}
+
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif // PROTON_CONNECTION_DRIVER_H
+#endif /* connection_driver.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/delivery.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/delivery.h b/proton-c/include/proton/delivery.h
index 4225352..dbb73bf 100644
--- a/proton-c/include/proton/delivery.h
+++ b/proton-c/include/proton/delivery.h
@@ -33,11 +33,8 @@ extern "C" {
 
 /**
  * @file
- * Track message delivery
  *
- * @defgroup delivery Delivery
- * Track message delivery
- * @ingroup engine
+ * @addtogroup delivery
  * @{
  */
 
@@ -70,6 +67,7 @@ PN_EXTERN pn_delivery_t *pn_delivery(pn_link_t *link, pn_delivery_tag_t tag);
 
 /**
  * @deprecated
+ *
  * Get the application context that is associated with a delivery object.
  *
  * The application context for a delivery may be set using
@@ -82,6 +80,7 @@ PN_EXTERN void *pn_delivery_get_context(pn_delivery_t *delivery);
 
 /**
  * @deprecated
+ *
  * Set a new application context for a delivery object.
  *
  * The application context for a delivery object may be retrieved using
@@ -245,7 +244,7 @@ PN_EXTERN bool pn_delivery_current(pn_delivery_t *delivery);
  *
  * A settled delivery can never be used again.
  *
- * NOTE: if pn_delivery_current(delivery) is true before the call then
+ * @note If pn_delivery_current(delivery) is true before the call then
  * pn_link_advance(pn_delivery_link(deliver)) is called automatically.
  *
  * @param[in] delivery a delivery object
@@ -302,7 +301,8 @@ PN_EXTERN pn_delivery_t *pn_work_head(pn_connection_t *connection);
  */
 PN_EXTERN pn_delivery_t *pn_work_next(pn_delivery_t *delivery);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/disposition.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/disposition.h b/proton-c/include/proton/disposition.h
index 530b738..95bfe51 100644
--- a/proton-c/include/proton/disposition.h
+++ b/proton-c/include/proton/disposition.h
@@ -33,11 +33,8 @@ extern "C" {
 
 /**
  * @file
- * Outcome of message delivery
  *
- * @defgroup disposition Disposition
- * Outcome of message delivery
- * @ingroup delivery
+ * @addtogroup delivery
  * @{
  */
 
@@ -221,7 +218,8 @@ PN_EXTERN void pn_disposition_set_undeliverable(pn_disposition_t *disposition, b
  */
 PN_EXTERN pn_data_t *pn_disposition_annotations(pn_disposition_t *disposition);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/engine.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/engine.h b/proton-c/include/proton/engine.h
index b24265e..9763e07 100644
--- a/proton-c/include/proton/engine.h
+++ b/proton-c/include/proton/engine.h
@@ -23,13 +23,7 @@
  */
 
 /**
- * @file
- *
- * The AMQP protocol engine
- *
- * @defgroup engine Engine
- *
- * Types and functions that implement the AMQP protocol
+ * @cond INTERNAL
  */
 
 #include <proton/condition.h>
@@ -41,4 +35,8 @@
 #include <proton/event.h>
 #include <proton/transport.h>
 
+/**
+ * @endcond
+ */
+
 #endif /* engine.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/error.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/error.h b/proton-c/include/proton/error.h
index 122e4b6..2986850 100644
--- a/proton-c/include/proton/error.h
+++ b/proton-c/include/proton/error.h
@@ -29,52 +29,99 @@
 extern "C" {
 #endif
 
-/** A pn_error_t has an int error `code` and some string `text` to describe the error */
+/**
+ * @file
+ *
+ * @addtogroup error
+ * @{
+ */
+
+/**
+ * An int error `code` and some string `text` to describe the error.
+ */
 typedef struct pn_error_t pn_error_t;
 
-#define PN_OK (0)
-#define PN_EOS (-1)
-#define PN_ERR (-2)
-#define PN_OVERFLOW (-3)
-#define PN_UNDERFLOW (-4)
-#define PN_STATE_ERR (-5)
-#define PN_ARG_ERR (-6)
-#define PN_TIMEOUT (-7)
-#define PN_INTR (-8)
-#define PN_INPROGRESS (-9)
-#define PN_OUT_OF_MEMORY (-10)
-
-/** @return name of the error code. Returned pointer is to a static constant, do not delete.*/
+#define PN_OK (0)              /**< No error */
+#define PN_EOS (-1)            /**< End of stream */
+#define PN_ERR (-2)            /**< General error */
+#define PN_OVERFLOW (-3)       /**< Overflow error */
+#define PN_UNDERFLOW (-4)      /**< Underflow error */
+#define PN_STATE_ERR (-5)      /**< State error */
+#define PN_ARG_ERR (-6)        /**< Argument error */
+#define PN_TIMEOUT (-7)        /**< Timeout */
+#define PN_INTR (-8)           /**< Interrupt */
+#define PN_INPROGRESS (-9)     /**< In-progress */
+#define PN_OUT_OF_MEMORY (-10) /**< Out-of-momory error */
+
+/**
+ * Get the name of the error code. Returned pointer is to a static
+ * constant, do not delete.
+ */
 PN_EXTERN const char *pn_code(int code);
 
+/**
+ * Create an error object.
+ */    
 PN_EXTERN pn_error_t *pn_error(void);
+    
+/**
+ * Free an error object.
+ */
 PN_EXTERN void pn_error_free(pn_error_t *error);
 
-/** Reset the error to a "no error" state with code == 0. */
+/**
+ * Reset the error to a "no error" state with code == 0.
+ */
 PN_EXTERN void pn_error_clear(pn_error_t *error);
 
-/** Set the error code and text. Makes a copy of text. */
+/**
+ * Set the error code and text. Makes a copy of text.
+ */
 PN_EXTERN int pn_error_set(pn_error_t *error, int code, const char *text);
 
-/** Set the code and set the text using a printf-style formatted string. */
+/**
+ * Set the code and set the text using a printf-style formatted
+ * string.
+ */
 PN_EXTERN int pn_error_vformat(pn_error_t *error, int code, const char *fmt, va_list ap);
 
-/** Set the code and set the text using a printf-style formatted string. */
+/**
+ * Set the code and set the text using a printf-style formatted
+ * string.
+ */
 PN_EXTERN int pn_error_format(pn_error_t *error, int code, const char *fmt, ...);
 
-/** @return the error code. */
+/**
+ * Get the the error code.
+ */
 PN_EXTERN int pn_error_code(pn_error_t *error);
 
-/** @return the error text.  Returned pointer is owned by the pn_error_t. */
+/**
+ * Get the error text.  The returned pointer is owned by the
+ * pn_error_t.
+ */
 PN_EXTERN const char *pn_error_text(pn_error_t *error);
 
+/**
+ * Copy the src error.
+ */    
 PN_EXTERN int pn_error_copy(pn_error_t *error, pn_error_t *src);
 
+/**
+ * @cond INTERNAL
+ */    
 #define PN_RETURN_IF_ERROR(x) \
 do {\
 int r = (x);\
 if (r < 0) return r; \
 } while (0)
+/**
+ * @endcond
+ */
+    
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/event.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/event.h b/proton-c/include/proton/event.h
index 2280dc8..fad221b 100644
--- a/proton-c/include/proton/event.h
+++ b/proton-c/include/proton/event.h
@@ -33,17 +33,13 @@ extern "C" {
 
 /**
  * @file
- * AMQP and transport events
  *
- * @defgroup event Event
- * AMQP and transport events
- * @ingroup engine
+ * @addtogroup event
  * @{
  */
 
 /**
- * An event provides notification of a state change within the
- * protocol engine's object model.
+ * Notification of a state change in the protocol engine.
  *
  * The AMQP endpoint state modeled by the protocol engine is captured
  * by the following object types: @link pn_delivery_t Deliveries
@@ -539,8 +535,9 @@ PN_EXTERN pn_transport_t *pn_event_transport(pn_event_t *event);
 PN_EXTERN pn_record_t *pn_event_attachments(pn_event_t *event);
 
 /**
- * **Experimental**: A batch of events to handle. Call pn_event_batch_next() in
- * a loop until it returns NULL to handle them.
+ * **Experimental** - A batch of events to handle. Call
+ * pn_event_batch_next() in a loop until it returns NULL to handle
+ * them.
  */
 typedef struct pn_event_batch_t pn_event_batch_t;
 
@@ -550,29 +547,31 @@ typedef struct pn_event_batch_t pn_event_batch_t;
  */
 
 /**
- * **Experimental**: Remove the next event from the batch and return it. NULL
- *  means the batch is empty. The returned event pointer is valid until
- *  pn_event_batch_next() is called again on the same batch.
+ * **Experimental** - Remove the next event from the batch and return
+ *  it. NULL means the batch is empty. The returned event pointer is
+ *  valid until pn_event_batch_next() is called again on the same
+ *  batch.
  */
 PN_EXTERN pn_event_t *pn_event_batch_next(pn_event_batch_t *batch);
 
 /**
- *@cond INTERNAL
+ * @cond INTERNAL
+ *
  * pn_event_batch_next() can be re-implemented for different behaviors in different contextxs.
  */
 struct pn_event_batch_t {
   pn_event_t *(*next_event)(pn_event_batch_t *batch);
 };
-
 /**
- *@endcond
+ * @endcond
  */
 
 #ifdef __cplusplus
 }
 #endif
 
-/** @}
+/**
+ * @}
  */
 
 #endif /* event.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/handlers.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/handlers.h b/proton-c/include/proton/handlers.h
index bfa68fc..6518e87 100644
--- a/proton-c/include/proton/handlers.h
+++ b/proton-c/include/proton/handlers.h
@@ -33,11 +33,7 @@ extern "C" {
 /**
  * @file
  *
- * Reactor API for proton.
- *
- * @defgroup handlers Handlers
- * Reactor API for proton.
- * @{
+ * @cond INTERNAL
  */
 
 typedef pn_handler_t pn_handshaker_t;
@@ -48,7 +44,8 @@ PNX_EXTERN pn_handshaker_t *pn_handshaker(void);
 PNX_EXTERN pn_iohandler_t *pn_iohandler(void);
 PNX_EXTERN pn_flowcontroller_t *pn_flowcontroller(int window);
 
-/** @}
+/**
+ * @endcond
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/import_export.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/import_export.h b/proton-c/include/proton/import_export.h
index 0010126..6547a07 100644
--- a/proton-c/include/proton/import_export.h
+++ b/proton-c/include/proton/import_export.h
@@ -22,6 +22,10 @@
  *
  */
 
+/**
+ * @cond INTERNAL
+ */
+
 //
 // Compiler specific mechanisms for managing the import and export of
 // symbols between shared objects.
@@ -59,5 +63,8 @@
 #  define PNX_EXTERN PN_IMPORT
 #endif
 
+/**
+ * @endcond
+ */
 
 #endif /* import_export.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/link.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/link.h b/proton-c/include/proton/link.h
index 3ab811c..aeb3b36 100644
--- a/proton-c/include/proton/link.h
+++ b/proton-c/include/proton/link.h
@@ -36,11 +36,8 @@ extern "C" {
 
 /**
  * @file
- * One-way message link
  *
- * @defgroup link Link
- * One-way message link
- * @ingroup engine
+ * @addtogroup link
  * @{
  */
 
@@ -85,6 +82,7 @@ PN_EXTERN void pn_link_free(pn_link_t *link);
 
 /**
  * @deprecated
+ *
  * Get the application context that is associated with a link object.
  *
  * The application context for a link may be set using
@@ -97,6 +95,7 @@ PN_EXTERN void *pn_link_get_context(pn_link_t *link);
 
 /**
  * @deprecated
+ *
  * Set a new application context for a link object.
  *
  * The application context for a link object may be retrieved using
@@ -565,12 +564,6 @@ PN_EXTERN pn_delivery_t *pn_unsettled_head(pn_link_t *link);
 PN_EXTERN pn_delivery_t *pn_unsettled_next(pn_delivery_t *delivery);
 
 /**
- * @defgroup sender Sender
- * Sending link
- * @{
- */
-
-/**
  * Signal the availability of deliveries for a link.
  *
  * @param[in] sender a sender link object
@@ -591,14 +584,6 @@ PN_EXTERN ssize_t pn_link_send(pn_link_t *sender, const char *bytes, size_t n);
 
 //PN_EXTERN void pn_link_abort(pn_sender_t *sender);
 
-/** @} */
-
-/**
- * @defgroup receiver Receiver
- * Receiving link
- * @{
- */
-
 /**
  * Grant credit for incoming deliveries on a receiver.
  *
@@ -657,9 +642,8 @@ PN_EXTERN ssize_t pn_link_recv(pn_link_t *receiver, char *bytes, size_t n);
  */
 PN_EXTERN bool pn_link_draining(pn_link_t *receiver);
 
-/** @} */
-
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/listener.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/listener.h b/proton-c/include/proton/listener.h
index dda1638..8b70c9a 100644
--- a/proton-c/include/proton/listener.h
+++ b/proton-c/include/proton/listener.h
@@ -1,5 +1,5 @@
 #ifndef PROTON_LISTENER_H
-#define PROTON_LISTENER_H
+#define PROTON_LISTENER_H 1
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -29,17 +29,21 @@ extern "C" {
 /**
  * @file
  *
- * Listener for the @ref proactor
+ * **Experimental** - A listener for incoming connections for the @ref
+ * proactor.
  *
- * @defgroup listener Listener
- * Listen for incoming connections with a @ref proactor
- *
- * @ingroup proactor
+ * @addtogroup proactor
  * @{
  */
 
+/**
+ * @cond INTERNAL
+ */
 typedef struct pn_proactor_t pn_proactor_t;
 typedef struct pn_condition_t pn_condition_t;
+/**
+ * @endcond
+ */
 
 /**
  * A listener accepts connections.
@@ -70,16 +74,28 @@ PN_EXTERN int pn_listener_accept(pn_listener_t*, pn_connection_t *connection);
 PN_EXTERN pn_condition_t *pn_listener_condition(pn_listener_t *l);
 
 /**
+ * @cond INTERNAL
+ */
+    
+/**
+ * @deprecated
+ *
  * Get the application context that is associated with a listener.
  */
 PN_EXTERN void *pn_listener_get_context(pn_listener_t *listener);
 
 /**
+ * @deprecated
+ *
  * Set a new application context for a listener.
  */
 PN_EXTERN void pn_listener_set_context(pn_listener_t *listener, void *context);
 
 /**
+ * @endcond
+ */
+    
+/**
  * Get the attachments that are associated with a listener object.
  */
 PN_EXTERN pn_record_t *pn_listener_attachments(pn_listener_t *listener);
@@ -103,4 +119,4 @@ PN_EXTERN pn_proactor_t *pn_listener_proactor(pn_listener_t *c);
 }
 #endif
 
-#endif // PROTON_LISTENER_H
+#endif /* listener.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/log.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/log.h b/proton-c/include/proton/log.h
index 1387df5..35538f7 100644
--- a/proton-c/include/proton/log.h
+++ b/proton-c/include/proton/log.h
@@ -26,23 +26,32 @@
 extern "C" {
 #endif
 
-/**@file
+/**
+ * @cond INTERNAL
+ */
+    
+/**
+ * @file
  *
  * Control log messages that are not associated with a transport.
  * See pn_transport_trace for transport-related logging.
  */
 
-/** Callback for customized logging. */
+/**
+ * Callback for customized logging.
+ */
 typedef void (*pn_logger_t)(const char *message);
 
-/** Enable/disable global logging.
+/**
+ * Enable/disable global logging.
  *
  * By default, logging is enabled by envionment variable PN_TRACE_LOG.
  * Calling this function overrides the environment setting.
  */
 PN_EXTERN void pn_log_enable(bool enabled);
 
-/** Set the logger.
+/**
+ * Set the logger.
  *
  * By default a logger that prints to stderr is installed.
  *  
@@ -51,6 +60,10 @@ PN_EXTERN void pn_log_enable(bool enabled);
  */
 PN_EXTERN void pn_log_logger(pn_logger_t logger);
 
+/**
+ * @endcond
+ */
+
 #ifdef __cplusplus
 }
 #endif

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/message.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/message.h b/proton-c/include/proton/message.h
index 8741996..b047a43 100644
--- a/proton-c/include/proton/message.h
+++ b/proton-c/include/proton/message.h
@@ -34,10 +34,8 @@ extern "C" {
 
 /**
  * @file
- * Encode/decode AMQP Messages
  *
- * @defgroup message Message
- * Encode/decode AMQP Messages
+ * @addtogroup message
  * @{
  */
 
@@ -729,7 +727,7 @@ PN_EXTERN int pn_message_decode(pn_message_t *msg, const char *bytes, size_t siz
  *
  * If the buffer space provided is insufficient to store the content
  * held in the message, the operation will fail and return a
- * ::PN_OVERFLOW error code.
+ * PN_OVERFLOW error code.
  *
  * @param[in] msg a message object
  * @param[in] bytes the start of empty buffer space

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/messenger.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/messenger.h b/proton-c/include/proton/messenger.h
index 198b6c6..c11e7a5 100644
--- a/proton-c/include/proton/messenger.h
+++ b/proton-c/include/proton/messenger.h
@@ -35,12 +35,12 @@ extern "C" {
 
 /**
  * @file
+ * @deprecated
  *
  * The messenger API provides a high level interface for sending and
  * receiving AMQP messages.
  *
- * @defgroup messenger Messenger
- * **Deprecated**
+ * @addtogroup messenger
  * @{
  */
 
@@ -934,8 +934,7 @@ PNX_EXTERN int pn_messenger_rewrite(pn_messenger_t *messenger, const char *patte
                                    const char *address);
 
 /**
- * Extract @link pn_selectable_t selectables @endlink from a passive
- * messenger.
+ * Extract selectables from a passive messenger.
  *
  * A messenger that is in passive mode (see
  * ::pn_messenger_is_passive()) will never attempt to perform any I/O
@@ -945,17 +944,16 @@ PNX_EXTERN int pn_messenger_rewrite(pn_messenger_t *messenger, const char *patte
  *
  * An application wishing to perform I/O on behalf of a passive
  * messenger must extract all available selectables by calling this
- * operation until it returns NULL. The ::pn_selectable_t interface
- * may then be used by the application to perform I/O outside the
- * messenger.
+ * operation until it returns NULL. The selectable interface may then
+ * be used by the application to perform I/O outside the messenger.
  *
  * All selectables returned by this operation must be serviced until
  * they reach a terminal state and then freed. See
- * ::pn_selectable_is_terminal() for more details.
+ * `pn_selectable_is_terminal()` for more details.
  *
  * By default any given selectable will only ever be returned once by
  * this operation, however if the selectable's registered flag is set
- * to true (see ::pn_selectable_set_registered()), then the selectable
+ * to true (see `pn_selectable_set_registered()`), then the selectable
  * will be returned whenever its interest set may have changed.
  *
  * @param[in] messenger a messenger object
@@ -971,21 +969,18 @@ PNX_EXTERN pn_selectable_t *pn_messenger_selectable(pn_messenger_t *messenger);
  */
 PNX_EXTERN pn_timestamp_t pn_messenger_deadline(pn_messenger_t *messenger);
 
-/**
- * @}
- */
-
-#define PN_FLAGS_CHECK_ROUTES                                                  \
-  (0x1) /** Messenger flag to indicate that a call                             \
-            to pn_messenger_start should check that                            \
-            any defined routes are valid */
+#define PN_FLAGS_CHECK_ROUTES                                                   \
+  (0x1) /**< Messenger flag to indicate that a call                             \
+             to pn_messenger_start should check that                            \
+             any defined routes are valid */
 
-#define PN_FLAGS_ALLOW_INSECURE_MECHS                                          \
-  (0x2) /** Messenger flag to indicate that the PLAIN                          \
-            mechanism is allowed on an unencrypted                             \
-            connection */
+#define PN_FLAGS_ALLOW_INSECURE_MECHS                                           \
+  (0x2) /**< Messenger flag to indicate that the PLAIN                          \
+             mechanism is allowed on an unencrypted                             \
+             connection */
 
-/** Sets control flags to enable additional function for the Messenger.
+/**
+ * Sets control flags to enable additional function for the Messenger.
  *
  * @param[in] messenger the messenger
  * @param[in] flags 0 or PN_FLAGS_CHECK_ROUTES
@@ -995,7 +990,8 @@ PNX_EXTERN pn_timestamp_t pn_messenger_deadline(pn_messenger_t *messenger);
 PNX_EXTERN int pn_messenger_set_flags(pn_messenger_t *messenger,
                                      const int flags);
 
-/** Gets the flags for a Messenger.
+/**
+ * Gets the flags for a Messenger.
  *
  * @param[in] messenger the messenger
  * @return The flags set for the messenger
@@ -1053,6 +1049,10 @@ PNX_EXTERN int
 pn_messenger_set_ssl_peer_authentication_mode(pn_messenger_t *messenger,
                                               const pn_ssl_verify_mode_t mode);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/object.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/object.h b/proton-c/include/proton/object.h
index 0433b58..e7efd94 100644
--- a/proton-c/include/proton/object.h
+++ b/proton-c/include/proton/object.h
@@ -33,6 +33,10 @@
 extern "C" {
 #endif
 
+/**
+ * @cond INTERNAL
+ */
+
 typedef void* pn_handle_t;
 typedef intptr_t pn_shandle_t;
 
@@ -330,6 +334,10 @@ PN_EXTERN void *pn_record_get(pn_record_t *record, pn_handle_t key);
 PN_EXTERN void pn_record_set(pn_record_t *record, pn_handle_t key, void *value);
 PN_EXTERN void pn_record_clear(pn_record_t *record);
 
+/**
+ * @endcond
+ */
+
 #ifdef __cplusplus
 }
 #endif

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/parser.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/parser.h b/proton-c/include/proton/parser.h
index 369ba8f..a95ca86 100644
--- a/proton-c/include/proton/parser.h
+++ b/proton-c/include/proton/parser.h
@@ -29,6 +29,10 @@
 extern "C" {
 #endif
 
+/**
+ * @cond INTERNAL
+ */
+
 typedef struct pn_parser_t pn_parser_t;
 
 PN_EXTERN pn_parser_t *pn_parser(void);
@@ -37,6 +41,10 @@ PN_EXTERN int pn_parser_errno(pn_parser_t *parser);
 PN_EXTERN const char *pn_parser_error(pn_parser_t *parser);
 PN_EXTERN void pn_parser_free(pn_parser_t *parser);
 
+/**
+ * @endcond
+ */
+
 #ifdef __cplusplus
 }
 #endif

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/proactor.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/proactor.h b/proton-c/include/proton/proactor.h
index fdb723b..b8fb16a 100644
--- a/proton-c/include/proton/proactor.h
+++ b/proton-c/include/proton/proactor.h
@@ -1,5 +1,5 @@
 #ifndef PROTON_PROACTOR_H
-#define PROTON_PROACTOR_H
+#define PROTON_PROACTOR_H 1
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -28,26 +28,32 @@
 extern "C" {
 #endif
 
+/**
+ * @cond INTERNAL
+ */
 typedef struct pn_condition_t pn_condition_t;
+/**
+ * @endcond
+ */
 
 /**
  * @file
  *
- * **Experimental**: Multi-threaded IO
- * @defgroup proactor Proactor
+ * **Experimental** - Multithreaded IO
  *
- * **Experimental**: Multi-threaded IO
+ * The proactor associates a @ref connection with a @ref transport,
+ * either by making an outgoing connection or accepting an incoming
+ * one.  It delivers @ref event "events" to application threads for
+ * handling.
  *
- * The proactor associates a @ref connection with a @ref transport, either
- * by making an outgoing connection or accepting an incoming one.
- * It delivers @ref event "events" to application threads for handling.
+ * ## Multi-threading
  *
- * **Multi-threading**:
- * The @ref proactor is thread-safe, but the @ref engine is not.  The proactor
- * ensures that each @ref connection and its associated values (@ref session,
- * @ref link etc.) is handle sequentially, even if there are multiple
- * application threads. See pn_proactor_wait()
+ * The @ref proactor is thread-safe, but the protocol engine is not.
+ * The proactor ensures that each @ref connection and its associated
+ * values (@ref session, @ref link etc.) is handle sequentially, even
+ * if there are multiple application threads. See pn_proactor_wait().
  *
+ * @addtogroup proactor
  * @{
  */
 
@@ -65,112 +71,123 @@ pn_proactor_t *pn_proactor(void);
  * Free the proactor. Abort any open network connections and clean up all
  * associated resources.
  */
-void pn_proactor_free(pn_proactor_t*);
+void pn_proactor_free(pn_proactor_t *proactor);
 
 /**
  * Connect connection to host/port. Connection and transport events will be
  * returned by pn_proactor_wait()
  *
+ * @param[in] proactor the proactor object
  * @param[in] connection the proactor takes ownership, do not free
  * @param[in] host address to connect on
  * @param[in] port port to connect to
  *
  * @return error on immediate error, e.g. an allocation failure.
- * Other errors are indicated by connection or transport events via pn_proactor_wait()
+ * Other errors are indicated by connection or transport events via
+ * pn_proactor_wait()
  */
-int pn_proactor_connect(pn_proactor_t*, pn_connection_t *connection, const char *host, const char *port);
+int pn_proactor_connect(pn_proactor_t *proactor, pn_connection_t *connection,
+                        const char *host, const char *port);
 
 /**
- * Start listening with listener.
- * pn_proactor_wait() will return a PN_LISTENER_ACCEPT event when a connection can be accepted.
+ * Start listening with listener.  pn_proactor_wait() will return a
+ * PN_LISTENER_ACCEPT event when a connection can be accepted.
  *
+ * @param[in] proactor the proactor object
  * @param[in] listener proactor takes ownership of listener, do not free
  * @param[in] host address to listen on
  * @param[in] port port to listen on
  * @param[in] backlog number of connection requests to queue
  *
  * @return error on immediate error, e.g. an allocation failure.
- * Other errors are indicated by pn_listener_condition() on the PN_LISTENER_CLOSE event.
+ * Other errors are indicated by pn_listener_condition() on the
+ * PN_LISTENER_CLOSE event.
  */
-int pn_proactor_listen(pn_proactor_t *, pn_listener_t *listener, const char *host, const char *port, int backlog);
+int pn_proactor_listen(pn_proactor_t *proactor, pn_listener_t *listener,
+                       const char *host, const char *port, int backlog);
 
 /**
  * Wait for events to handle.
  *
- * Handle events in the returned batch by calling pn_event_batch_next() until it
- * returns NULL. You must call pn_proactor_done() when you are finished with the batch.
+ * Handle events in the returned batch by calling
+ * pn_event_batch_next() until it returns NULL. You must call
+ * pn_proactor_done() when you are finished with the batch.
  *
- * If you call pn_proactor_done() before finishing the batch, the remaining
- * events will be returned again by another call pn_proactor_wait().  This is
- * less efficient, but allows you to handle part of a batch and then hand off
- * the rest to another thread.
+ * If you call pn_proactor_done() before finishing the batch, the
+ * remaining events will be returned again by another call
+ * pn_proactor_wait().  This is less efficient, but allows you to
+ * handle part of a batch and then hand off the rest to another
+ * thread.
  *
- * Thread safe: can be called concurrently. Events in a single batch must be
- * handled in sequence, but batches returned by separate calls to
- * pn_proactor_wait() can be handled concurrently.
+ * @note Thread-safe: can be called concurrently. Events in a single
+ * batch must be handled in sequence, but batches returned by separate
+ * calls to pn_proactor_wait() can be handled concurrently.
  */
-pn_event_batch_t *pn_proactor_wait(pn_proactor_t *d);
+pn_event_batch_t *pn_proactor_wait(pn_proactor_t *proactor);
 
 /**
  * Call when done handling a batch of events.
  *
- * Must be called exactly once to match each call to pn_proactor_wait().
+ * Must be called exactly once to match each call to
+ * pn_proactor_wait().
  *
- * Thread safe: may be called from any thread provided the exactly once rule is
- * respected.
+ * @note Thread-safe: may be called from any thread provided the
+ * exactly once rule is respected.
  */
-void pn_proactor_done(pn_proactor_t *d, pn_event_batch_t *events);
+void pn_proactor_done(pn_proactor_t *proactor, pn_event_batch_t *events);
 
 /**
  * Cause PN_PROACTOR_INTERRUPT to be returned to exactly one call of
  * pn_proactor_wait().
  *
  * If threads are blocked in pn_proactor_wait(), one of them will be
- * interrupted, otherwise the interrupt will be returned by a future call to
- * pn_proactor_wait(). Calling pn_proactor_interrupt() N times will return
- * PN_PROACTOR_INTERRUPT to N current or future calls of pn_proactor_wait()
+ * interrupted, otherwise the interrupt will be returned by a future
+ * call to pn_proactor_wait(). Calling pn_proactor_interrupt() N times
+ * will return PN_PROACTOR_INTERRUPT to N current or future calls of
+ * pn_proactor_wait()
  *
- * Thread safe.
+ * @note Thread-safe.
  */
-void pn_proactor_interrupt(pn_proactor_t* d);
+void pn_proactor_interrupt(pn_proactor_t *proactor);
 
 /**
- * Cause PN_PROACTOR_TIMEOUT to be returned to a thread calling wait() after
- * timeout milliseconds. Thread safe.
+ * Cause PN_PROACTOR_TIMEOUT to be returned to a thread calling wait()
+ * after timeout milliseconds. Thread-safe.
  *
- * Note calling pn_proactor_set_timeout() again before the PN_PROACTOR_TIMEOUT is
-  *delivered will cancel the previous timeout and deliver an event only after
- * the new timeout. ::pn_proactor_set_timeout(0) will cancel the timeout
+ * Note that calling pn_proactor_set_timeout() again before the
+ * PN_PROACTOR_TIMEOUT is delivered will cancel the previous timeout
+ * and deliver an event only after the new
+ * timeout. `pn_proactor_set_timeout(0)` will cancel the timeout
  * without setting a new one.
  */
-void pn_proactor_set_timeout(pn_proactor_t* d, pn_millis_t timeout);
+void pn_proactor_set_timeout(pn_proactor_t *proactor, pn_millis_t timeout);
 
 /**
  * Cause a PN_CONNECTION_WAKE event to be returned by the proactor, even if
  * there are no IO events pending for the connection.
  *
- * **Thread safe**: this is the only pn_connection_ function that can be
- * called concurrently.
+ * @note Thread-safe: this is the only pn_connection_ function that
+ * can be called concurrently.
  *
  * Wakes can be "coalesced" - if several pn_connection_wake() calls happen
  * concurrently, there may be only one PN_CONNECTION_WAKE event.
  */
-void pn_connection_wake(pn_connection_t *c);
+void pn_connection_wake(pn_connection_t *connection);
 
 /**
- * Return the proactor associated with a connection or null
+ * Return the proactor associated with a connection or NULL.
  */
-pn_proactor_t *pn_connection_proactor(pn_connection_t *c);
+pn_proactor_t *pn_connection_proactor(pn_connection_t *connection);
 
 /**
  * Return the proactor associated with an event or NULL.
  */
-pn_proactor_t *pn_event_proactor(pn_event_t *);
+pn_proactor_t *pn_event_proactor(pn_event_t *event);
 
 /**
  * Return the listener associated with an event or NULL.
  */
-pn_listener_t *pn_event_listener(pn_event_t *);
+pn_listener_t *pn_event_listener(pn_event_t *event);
 
 /**
  * @}
@@ -180,4 +197,4 @@ pn_listener_t *pn_event_listener(pn_event_t *);
 }
 #endif
 
-#endif // PROTON_PROACTOR_H
+#endif /* proactor.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/reactor.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/reactor.h b/proton-c/include/proton/reactor.h
index b61ea7a..77d78e6 100644
--- a/proton-c/include/proton/reactor.h
+++ b/proton-c/include/proton/reactor.h
@@ -1,4 +1,3 @@
-
 #ifndef PROTON_REACTOR_H
 #define PROTON_REACTOR_H 1
 
@@ -37,11 +36,7 @@ extern "C" {
 /**
  * @file
  *
- * Reactor API for proton.
- *
- * @defgroup reactor Reactor
- * Reactor API for proton.
- * @{
+ * @cond INTERNAL
  */
 
 typedef struct pn_reactor_t pn_reactor_t;
@@ -184,7 +179,8 @@ PNX_EXTERN void pn_record_set_handler(pn_record_t *record, pn_handler_t *handler
  */
 PNX_EXTERN pn_handler_t *pn_event_root(pn_event_t *event);
 
-/** @}
+/**
+ * @endcond
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/sasl.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/sasl.h b/proton-c/include/proton/sasl.h
index e8e0d96..f5d6f2a 100644
--- a/proton-c/include/proton/sasl.h
+++ b/proton-c/include/proton/sasl.h
@@ -32,33 +32,34 @@ extern "C" {
 
 /**
  * @file
- * SASL Secure Transport Layer.
  *
- * @defgroup sasl SASL
- * SASL Secure Transport Layer.
+ * @addtogroup sasl
+ * @{
+ */
+
+/**
  * The SASL layer is responsible for establishing an authenticated
  * and/or encrypted tunnel over which AMQP frames are passed between
  * peers. The peer acting as the SASL Client must provide
  * authentication credentials. The peer acting as the SASL Server must
  * provide authentication against the received credentials.
- *
- * @ingroup transport
- * @{
  */
-
 typedef struct pn_sasl_t pn_sasl_t;
 
-/** The result of the SASL negotiation */
+/**
+ * The result of the SASL negotiation.
+ */
 typedef enum {
-  PN_SASL_NONE=-1,  /** negotiation not completed */
-  PN_SASL_OK=0,     /** authentication succeeded */
-  PN_SASL_AUTH=1,   /** failed due to bad credentials */
-  PN_SASL_SYS=2,    /** failed due to a system error */
-  PN_SASL_PERM=3,   /** failed due to unrecoverable error */
-  PN_SASL_TEMP=4    /** failed due to transient error */
+  PN_SASL_NONE = -1,  /** negotiation not completed */
+  PN_SASL_OK = 0,     /** authentication succeeded */
+  PN_SASL_AUTH = 1,   /** failed due to bad credentials */
+  PN_SASL_SYS = 2,    /** failed due to a system error */
+  PN_SASL_PERM = 3,   /** failed due to unrecoverable error */
+  PN_SASL_TEMP = 4    /** failed due to transient error */
 } pn_sasl_outcome_t;
 
-/** Construct an Authentication and Security Layer object
+/**
+ * Construct an Authentication and Security Layer object.
  *
  * This will return the SASL layer object for the supplied transport
  * object. If there is currently no SASL layer one will be created.
@@ -70,7 +71,8 @@ typedef enum {
  */
 PN_EXTERN pn_sasl_t *pn_sasl(pn_transport_t *transport);
 
-/** Do we support extended SASL negotiation
+/**
+ * Do we support extended SASL negotiation
  *
  * Do we support extended SASL negotiation?
  * All implementations of Proton support ANONYMOUS and EXTERNAL on both
@@ -83,7 +85,8 @@ PN_EXTERN pn_sasl_t *pn_sasl(pn_transport_t *transport);
  */
 PN_EXTERN bool pn_sasl_extended(void);
 
-/** Set the outcome of SASL negotiation
+/**
+ * Set the outcome of SASL negotiation
  *
  * Used by the server to set the result of the negotiation process.
  *
@@ -91,13 +94,15 @@ PN_EXTERN bool pn_sasl_extended(void);
  */
 PN_EXTERN void pn_sasl_done(pn_sasl_t *sasl, pn_sasl_outcome_t outcome);
 
-/** Retrieve the outcome of SASL negotiation.
+/**
+ * Retrieve the outcome of SASL negotiation.
  *
  * @todo
  */
 PN_EXTERN pn_sasl_outcome_t pn_sasl_outcome(pn_sasl_t *sasl);
 
-/** Retrieve the authenticated user
+/**
+ * Retrieve the authenticated user
  *
  * This is usually used at the the server end to find the name of the authenticated user.
  * On the client it will merely return whatever user was passed in to the
@@ -115,7 +120,8 @@ PN_EXTERN pn_sasl_outcome_t pn_sasl_outcome(pn_sasl_t *sasl);
  */
 PN_EXTERN const char *pn_sasl_get_user(pn_sasl_t *sasl);
 
-/** Return the selected SASL mechanism
+/**
+ * Return the selected SASL mechanism
  *
  * The returned value is only reliable after the PN_TRANSPORT_AUTHENTICATED event has been received.
  *
@@ -125,7 +131,8 @@ PN_EXTERN const char *pn_sasl_get_user(pn_sasl_t *sasl);
  */
 PN_EXTERN const char *pn_sasl_get_mech(pn_sasl_t *sasl);
 
-/** SASL mechanisms that are to be considered for authentication
+/**
+ * SASL mechanisms that are to be considered for authentication
  *
  * This can be used on either the client or the server to restrict the SASL
  * mechanisms that may be used to the mechanisms on the list.
@@ -135,7 +142,8 @@ PN_EXTERN const char *pn_sasl_get_mech(pn_sasl_t *sasl);
  */
 PN_EXTERN void pn_sasl_allowed_mechs(pn_sasl_t *sasl, const char *mechs);
 
-/** Boolean to allow use of clear text authentication mechanisms
+/**
+ * Boolean to allow use of clear text authentication mechanisms
  *
  * By default the SASL layer is configured not to allow mechanisms that disclose
  * the clear text of the password over an unencrypted AMQP connection. This specifically
@@ -153,7 +161,8 @@ PN_EXTERN void pn_sasl_allowed_mechs(pn_sasl_t *sasl, const char *mechs);
  */
 PN_EXTERN void pn_sasl_set_allow_insecure_mechs(pn_sasl_t *sasl, bool insecure);
 
-/** Return the current value for allow_insecure_mechs
+/**
+ * Return the current value for allow_insecure_mechs
  *
  * @param[in] sasl the SASL layer
  */
@@ -190,7 +199,9 @@ PN_EXTERN void pn_sasl_config_name(pn_sasl_t *sasl, const char *name);
  */
 PN_EXTERN void pn_sasl_config_path(pn_sasl_t *sasl, const char *path);
 
-/** @} */
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/selectable.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/selectable.h b/proton-c/include/proton/selectable.h
index c6e7489..56cccde 100644
--- a/proton-c/include/proton/selectable.h
+++ b/proton-c/include/proton/selectable.h
@@ -34,12 +34,7 @@ extern "C" {
 /**
  * @file
  *
- * The selectable API provides an interface for integration with third
- * party event loops.
- *
- * @defgroup selectable Selectable
- * **Deprecated**
- * @{
+ * @cond INTERNAL
  */
 
 /**
@@ -268,7 +263,7 @@ PNX_EXTERN void pn_selectable_free(pn_selectable_t *selectable);
 PNX_EXTERN void pn_selectable_collect(pn_selectable_t *selectable, pn_collector_t *collector);
 
 /**
- * @}
+ * @endcond
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/session.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/session.h b/proton-c/include/proton/session.h
index 34f0cfd..8cca7f6 100644
--- a/proton-c/include/proton/session.h
+++ b/proton-c/include/proton/session.h
@@ -35,12 +35,9 @@ extern "C" {
 #endif
 
 /**
- *   @file
- * Serialized session
+ * @file
  *
- * @defgroup session Session
- * Serialized session
- * @ingroup engine
+ * @addtogroup session
  * @{
  */
 
@@ -63,12 +60,13 @@ PN_EXTERN pn_session_t *pn_session(pn_connection_t *connection);
  * longer needed. Freeing a session will free all links on that
  * session and settle any deliveries on those links.
  *
- * @param[in] session a session object to free (or NULL)
+ * @param[in] session the session object to free (or NULL)
  */
 PN_EXTERN void pn_session_free(pn_session_t *session);
 
 /**
  * @deprecated
+ *
  * Get the application context that is associated with a session
  * object.
  *
@@ -82,6 +80,7 @@ PN_EXTERN void *pn_session_get_context(pn_session_t *session);
 
 /**
  * @deprecated
+ *
  * Set a new application context for a session object.
  *
  * The application context for a session object may be retrieved
@@ -103,7 +102,7 @@ PN_EXTERN pn_record_t *pn_session_attachments(pn_session_t *session);
 /**
  * Get the endpoint state flags for a session.
  *
- * @param[in] session the session
+ * @param[in] session the session object
  * @return the session's state flags
  */
 PN_EXTERN pn_state_t pn_session_state(pn_session_t *session);
@@ -119,7 +118,7 @@ PN_EXTERN pn_state_t pn_session_state(pn_session_t *session);
  * The pointer returned by this operation is valid until the
  * session object is freed.
  *
- * @param[in] session the sesion object
+ * @param[in] session the session object
  * @return the session's error object
  */
 PN_EXTERN pn_error_t *pn_session_error(pn_session_t *session);
@@ -175,7 +174,7 @@ PN_EXTERN pn_connection_t *pn_session_connection(pn_session_t *session);
  * Once this operation has completed, the PN_LOCAL_ACTIVE state flag
  * will be set.
  *
- * @param[in] session a session object
+ * @param[in] session the session object
  */
 PN_EXTERN void pn_session_open(pn_session_t *session);
 
@@ -187,7 +186,7 @@ PN_EXTERN void pn_session_open(pn_session_t *session);
  * ::pn_session_open, in this case it is equivalent to calling
  * ::pn_session_open followed by ::pn_session_close.
  *
- * @param[in] session a session object
+ * @param[in] session the session object
  */
 PN_EXTERN void pn_session_close(pn_session_t *session);
 
@@ -236,7 +235,7 @@ PN_EXTERN void pn_session_set_outgoing_window(pn_session_t *session, size_t wind
 /**
  * Get the number of outgoing bytes currently buffered by a session.
  *
- * @param[in] session a session object
+ * @param[in] session the session object
  * @return the number of outgoing bytes currently buffered
  */
 PN_EXTERN size_t pn_session_outgoing_bytes(pn_session_t *session);
@@ -244,7 +243,7 @@ PN_EXTERN size_t pn_session_outgoing_bytes(pn_session_t *session);
 /**
  * Get the number of incoming bytes currently buffered by a session.
  *
- * @param[in] session a session object
+ * @param[in] session the session object
  * @return the number of incoming bytes currently buffered
  */
 PN_EXTERN size_t pn_session_incoming_bytes(pn_session_t *session);
@@ -283,7 +282,8 @@ PN_EXTERN pn_session_t *pn_session_head(pn_connection_t *connection, pn_state_t
  */
 PN_EXTERN pn_session_t *pn_session_next(pn_session_t *session, pn_state_t state);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/ssl.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/ssl.h b/proton-c/include/proton/ssl.h
index 420459a..ee2997f 100644
--- a/proton-c/include/proton/ssl.h
+++ b/proton-c/include/proton/ssl.h
@@ -32,11 +32,12 @@ extern "C" {
 
 /**
  * @file
- * API for using SSL with the Transport Layer.
- *
- * @defgroup ssl SSL
- * @ingroup transport
  *
+ * @addtogroup ssl
+ * @{
+ */
+
+/**    
  * API for using SSL with the Transport Layer.
  *
  * A Transport may be configured to use SSL for encryption and/or authentication.  A
@@ -73,33 +74,40 @@ extern "C" {
  *
  * Support for SSL Client Session resume is provided (see ::pn_ssl_init,
  * ::pn_ssl_resume_status).
- *
- * @{
  */
-
 typedef struct pn_ssl_domain_t pn_ssl_domain_t;
+
+/**
+ * @see pn_ssl
+ */
 typedef struct pn_ssl_t pn_ssl_t;
 
-/** Determines the type of SSL endpoint. */
+/**
+ * Determines the type of SSL endpoint.
+ */
 typedef enum {
-  PN_SSL_MODE_CLIENT=1, /**< Local connection endpoint is an SSL client */
-  PN_SSL_MODE_SERVER    /**< Local connection endpoint is an SSL server */
+  PN_SSL_MODE_CLIENT = 1, /**< Local connection endpoint is an SSL client */
+  PN_SSL_MODE_SERVER      /**< Local connection endpoint is an SSL server */
 } pn_ssl_mode_t;
 
-/** Indicates whether an SSL session has been resumed. */
+/**
+ * Indicates whether an SSL session has been resumed.
+ */
 typedef enum {
   PN_SSL_RESUME_UNKNOWN,        /**< Session resume state unknown/not supported */
   PN_SSL_RESUME_NEW,            /**< Session renegotiated - not resumed */
   PN_SSL_RESUME_REUSED          /**< Session resumed from previous session. */
 } pn_ssl_resume_status_t;
 
-/** Tests for SSL implementation present
+/**
+ * Tests for SSL implementation present
  *
  *  @return true if we support SSL, false if not
  */
 PN_EXTERN bool pn_ssl_present( void );
 
-/** Create an SSL configuration domain
+/**
+ * Create an SSL configuration domain
  *
  * This method allocates an SSL domain object.  This object is used to hold the SSL
  * configuration for one or more SSL sessions.  The SSL session object (pn_ssl_t) is
@@ -109,16 +117,18 @@ PN_EXTERN bool pn_ssl_present( void );
  * with this domain.
  * @return a pointer to the SSL domain, if SSL support is present.
  */
-PN_EXTERN pn_ssl_domain_t *pn_ssl_domain( pn_ssl_mode_t mode);
+PN_EXTERN pn_ssl_domain_t *pn_ssl_domain(pn_ssl_mode_t mode);
 
-/** Release an SSL configuration domain
+/**
+ * Release an SSL configuration domain
  *
  * This method frees an SSL domain object allocated by ::pn_ssl_domain.
  * @param[in] domain the domain to destroy.
  */
-PN_EXTERN void pn_ssl_domain_free( pn_ssl_domain_t *domain );
+PN_EXTERN void pn_ssl_domain_free(pn_ssl_domain_t *domain);
 
-/** Set the certificate that identifies the local node to the remote.
+/**
+ * Set the certificate that identifies the local node to the remote.
  *
  * This certificate establishes the identity for the local node for all SSL sessions
  * created from this domain.  It will be sent to the remote if the remote needs to verify
@@ -141,12 +151,13 @@ PN_EXTERN void pn_ssl_domain_free( pn_ssl_domain_t *domain );
  * protected.
  * @return 0 on success
  */
-PN_EXTERN int pn_ssl_domain_set_credentials( pn_ssl_domain_t *domain,
-                                             const char *credential_1,
-                                             const char *credential_2,
-                                             const char *password);
+PN_EXTERN int pn_ssl_domain_set_credentials(pn_ssl_domain_t *domain,
+                                            const char *credential_1,
+                                            const char *credential_2,
+                                            const char *password);
 
-/** Configure the set of trusted CA certificates used by this domain to verify peers.
+/**
+ * Configure the set of trusted CA certificates used by this domain to verify peers.
  *
  * If the local SSL client/server needs to verify the identity of the remote, it must
  * validate the signature of the remote's certificate.  This function sets the database of
@@ -163,27 +174,31 @@ PN_EXTERN int pn_ssl_domain_set_credentials( pn_ssl_domain_t *domain,
 PN_EXTERN int pn_ssl_domain_set_trusted_ca_db(pn_ssl_domain_t *domain,
                                 const char *certificate_db);
 
-/** Determines the level of peer validation.
+/**
+ * Determines the level of peer validation.
  *
- *  ANONYMOUS_PEER does not require a valid certificate, and permits use of ciphers that
- *  do not provide authentication.
+ * ANONYMOUS_PEER does not require a valid certificate, and permits
+ * use of ciphers that do not provide authentication.
  *
- *  VERIFY_PEER will only connect to those peers that provide a valid identifying
- *  certificate signed by a trusted CA and are using an authenticated cipher.
+ * VERIFY_PEER will only connect to those peers that provide a valid
+ * identifying certificate signed by a trusted CA and are using an
+ * authenticated cipher.
  *
- *  VERIFY_PEER_NAME is like VERIFY_PEER, but also requires the peer's identity as
- *  contained in the certificate to be valid (see ::pn_ssl_set_peer_hostname).
+ * VERIFY_PEER_NAME is like VERIFY_PEER, but also requires the peer's
+ * identity as contained in the certificate to be valid (see
+ * ::pn_ssl_set_peer_hostname).
  *
- *  ANONYMOUS_PEER is configured by default.
+ * ANONYMOUS_PEER is configured by default.
  */
 typedef enum {
-  PN_SSL_VERIFY_NULL=0,   /**< internal use only */
-  PN_SSL_VERIFY_PEER,     /**< require peer to provide a valid identifying certificate */
-  PN_SSL_ANONYMOUS_PEER,  /**< do not require a certificate nor cipher authorization */
-  PN_SSL_VERIFY_PEER_NAME /**< require valid certificate and matching name */
+  PN_SSL_VERIFY_NULL = 0,   /**< internal use only */
+  PN_SSL_VERIFY_PEER,       /**< require peer to provide a valid identifying certificate */
+  PN_SSL_ANONYMOUS_PEER,    /**< do not require a certificate nor cipher authorization */
+  PN_SSL_VERIFY_PEER_NAME   /**< require valid certificate and matching name */
 } pn_ssl_verify_mode_t;
 
-/** Configure the level of verification used on the peer certificate.
+/**
+ * Configure the level of verification used on the peer certificate.
  *
  * This method controls how the peer's certificate is validated, if at all.  By default,
  * neither servers nor clients attempt to verify their peers (PN_SSL_ANONYMOUS_PEER).
@@ -206,10 +221,11 @@ typedef enum {
  * @return 0 on success
  */
 PN_EXTERN int pn_ssl_domain_set_peer_authentication(pn_ssl_domain_t *domain,
-                                          const pn_ssl_verify_mode_t mode,
-                                          const char *trusted_CAs);
+                                                    const pn_ssl_verify_mode_t mode,
+                                                    const char *trusted_CAs);
 
-/** Permit a server to accept connection requests from non-SSL clients.
+/**
+ * Permit a server to accept connection requests from non-SSL clients.
  *
  * This configures the server to "sniff" the incoming client data stream, and dynamically
  * determine whether SSL/TLS is being used.  This option is disabled by default: only
@@ -220,7 +236,8 @@ PN_EXTERN int pn_ssl_domain_set_peer_authentication(pn_ssl_domain_t *domain,
  */
 PN_EXTERN int pn_ssl_domain_allow_unsecured_client(pn_ssl_domain_t *domain);
 
-/** Create a new SSL session object associated with a transport.
+/**
+ * Create a new SSL session object associated with a transport.
  *
  * A transport must have an SSL object in order to "speak" SSL over its connection. This
  * method allocates an SSL object associates it with the transport.
@@ -231,7 +248,8 @@ PN_EXTERN int pn_ssl_domain_allow_unsecured_client(pn_ssl_domain_t *domain);
  */
 PN_EXTERN pn_ssl_t *pn_ssl(pn_transport_t *transport);
 
-/** Initialize an SSL session.
+/**
+ * Initialize an SSL session.
  *
  * This method configures an SSL object using the configuration provided by the given
  * domain.
@@ -244,15 +262,17 @@ PN_EXTERN pn_ssl_t *pn_ssl(pn_transport_t *transport);
  * and stored for future session restore (see ::::pn_ssl_resume_status).
  * @return 0 on success, else an error code.
  */
-PN_EXTERN int pn_ssl_init( pn_ssl_t *ssl,
-                 pn_ssl_domain_t *domain,
-                 const char *session_id);
+PN_EXTERN int pn_ssl_init(pn_ssl_t *ssl,
+                          pn_ssl_domain_t *domain,
+                          const char *session_id);
 
-/** Get the name of the Cipher that is currently in use.
+/**
+ * Get the name of the Cipher that is currently in use.
  *
- * Gets a text description of the cipher that is currently active, or returns FALSE if SSL
- * is not active (no cipher).  Note that the cipher in use may change over time due to
- * renegotiation or other changes to the SSL state.
+ * Gets a text description of the cipher that is currently active, or
+ * returns FALSE if SSL is not active (no cipher).  Note that the
+ * cipher in use may change over time due to renegotiation or other
+ * changes to the SSL state.
  *
  * @param[in] ssl the ssl client/server to query.
  * @param[in,out] buffer buffer of size bytes to hold cipher name
@@ -261,14 +281,16 @@ PN_EXTERN int pn_ssl_init( pn_ssl_t *ssl,
  */
 PN_EXTERN bool pn_ssl_get_cipher_name(pn_ssl_t *ssl, char *buffer, size_t size);
 
-/** Get the SSF (security strength factor) of the Cipher that is currently in use.
+/**
+ * Get the SSF (security strength factor) of the Cipher that is currently in use.
  *
  * @param[in] ssl the ssl client/server to query.
  * @return the ssf, note that 0 means no security.
  */
 PN_EXTERN int pn_ssl_get_ssf(pn_ssl_t *ssl);
 
-/** Get the name of the SSL protocol that is currently in use.
+/**
+ * Get the name of the SSL protocol that is currently in use.
  *
  * Gets a text description of the SSL protocol that is currently active, or returns FALSE if SSL
  * is not active.  Note that the protocol may change over time due to renegotiation.
@@ -281,7 +303,8 @@ PN_EXTERN int pn_ssl_get_ssf(pn_ssl_t *ssl);
  */
 PN_EXTERN bool pn_ssl_get_protocol_name(pn_ssl_t *ssl, char *buffer, size_t size);
 
-/** Check whether the state has been resumed.
+/**
+ * Check whether the state has been resumed.
  *
  * Used for client session resume.  When called on an active session, indicates whether
  * the state has been resumed from a previous session.
@@ -293,9 +316,10 @@ PN_EXTERN bool pn_ssl_get_protocol_name(pn_ssl_t *ssl, char *buffer, size_t size
  * @param[in] ssl the ssl session to check
  * @return status code indicating whether or not the session has been resumed.
  */
-PN_EXTERN pn_ssl_resume_status_t pn_ssl_resume_status( pn_ssl_t *ssl );
+PN_EXTERN pn_ssl_resume_status_t pn_ssl_resume_status(pn_ssl_t *ssl);
 
-/** Set the expected identity of the remote peer.
+/**
+ * Set the expected identity of the remote peer.
  *
  * By default, SSL will use the hostname associated with the connection that
  * the transport is bound to (see ::pn_connection_set_hostname).  This method
@@ -316,10 +340,10 @@ PN_EXTERN pn_ssl_resume_status_t pn_ssl_resume_status( pn_ssl_t *ssl );
  * given in RFC1034, Section 3.5.
  * @return 0 on success.
  */
-PN_EXTERN int pn_ssl_set_peer_hostname( pn_ssl_t *ssl, const char *hostname);
+PN_EXTERN int pn_ssl_set_peer_hostname(pn_ssl_t *ssl, const char *hostname);
 
-
-/** Access the configured peer identity.
+/**
+ * Access the configured peer identity.
  *
  * Return the expected identity of the remote peer, as set by ::pn_ssl_set_peer_hostname.
  *
@@ -331,9 +355,10 @@ PN_EXTERN int pn_ssl_set_peer_hostname( pn_ssl_t *ssl, const char *hostname);
  * no hostname set.
  * @return 0 on success.
  */
-PN_EXTERN int pn_ssl_get_peer_hostname( pn_ssl_t *ssl, char *hostname, size_t *bufsize );
+PN_EXTERN int pn_ssl_get_peer_hostname(pn_ssl_t *ssl, char *hostname, size_t *bufsize);
 
-/** Get the subject from the peers certificate.
+/**
+ * Get the subject from the peers certificate.
  *
  * @param[in] ssl the ssl client/server to query.
  * @return A null terminated string representing the full subject,
@@ -353,7 +378,6 @@ typedef enum {
   PN_SSL_CERT_SUBJECT_COMMON_NAME
 } pn_ssl_cert_subject_subfield;
 
-
 /**
  * Enumeration identifying hashing algorithm.
  */
@@ -396,7 +420,9 @@ PN_EXTERN int pn_ssl_get_cert_fingerprint(pn_ssl_t *ssl0,
  */
 PN_EXTERN const char* pn_ssl_get_remote_subject_subfield(pn_ssl_t *ssl0, pn_ssl_cert_subject_subfield field);
 
-/** @} */
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/terminus.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/terminus.h b/proton-c/include/proton/terminus.h
index 43d4d98..345bdda 100644
--- a/proton-c/include/proton/terminus.h
+++ b/proton-c/include/proton/terminus.h
@@ -33,11 +33,8 @@ extern "C" {
 
 /**
  * @file
- * Message terminus (source or target)
  *
- * @defgroup terminus Terminus
- * Message terminus (source or target)
- * @ingroup link
+ * @addtogroup terminus
  * @{
  */
 
@@ -299,7 +296,8 @@ PN_EXTERN pn_data_t *pn_terminus_filter(pn_terminus_t *terminus);
  */
 PN_EXTERN int pn_terminus_copy(pn_terminus_t *terminus, pn_terminus_t *src);
 
-/** @}
+/**
+ * @}
  */
 
 #ifdef __cplusplus

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/transport.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/transport.h b/proton-c/include/proton/transport.h
index 9683a42..adb74bd 100644
--- a/proton-c/include/proton/transport.h
+++ b/proton-c/include/proton/transport.h
@@ -33,13 +33,8 @@ extern "C" {
 
 /**
  * @file
- * Network transport
  *
- * @defgroup transport Transport
- * Network transport
- *
- * State of a network connection being used as a transport for an AMQP connection.
- * @ingroup engine
+ * @addtogroup transport
  * @{
  */
 
@@ -128,29 +123,38 @@ PN_EXTERN void pn_transport_set_server(pn_transport_t *transport);
  */
 PN_EXTERN void pn_transport_free(pn_transport_t *transport);
 
-/** Retrieve the authenticated user
+/**
+ * @deprecated
  *
- * This is usually used at the the server end to find the name of the authenticated user.
- * On the client it will merely return whatever user was passed in to the
- * pn_connection_set_user() API of the bound connection.
+ * Retrieve the authenticated user.
  *
- * The returned value is only reliable after the PN_TRANSPORT_AUTHENTICATED event has been received.
+ * This is usually used at the the server end to find the name of the
+ * authenticated user.  On the client it will merely return whatever
+ * user was passed in to the pn_connection_set_user() API of the bound
+ * connection.
+ *
+ * The returned value is only reliable after the
+ * PN_TRANSPORT_AUTHENTICATED event has been received.
  *
  * @param[in] transport the transport
  *
- * @return
- * If a the user is anonymous (either no SASL layer is negotiated or the SASL ANONYMOUS mechanism is used)
- * then the user will be "anonymous"
- * Otherwise a string containing the user is returned.
+ * @return If a the user is anonymous (either no SASL layer is
+ * negotiated or the SASL ANONYMOUS mechanism is used) then the user
+ * will be "anonymous" Otherwise a string containing the user is
+ * returned.
  */
 PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
 
 /**
- * Set whether a non authenticated transport connection is allowed
+ * @deprecated
+ *
+ * Set whether a non-authenticated transport connection is allowed.
+ *
+ * There are several ways within the AMQP protocol suite to get
+ * unauthenticated connections:
  *
- * There are several ways within the AMQP protocol suite to get unauthenticated connections:
  * - Use no SASL layer (with either no TLS or TLS without client certificates)
- * - Use an SASL layer but the ANONYMOUS mechanism
+ * - Use a SASL layer but the ANONYMOUS mechanism
  *
  * The default if this option is not set is to allow unauthenticated connections.
  *
@@ -160,6 +164,8 @@ PN_EXTERN const char *pn_transport_get_user(pn_transport_t *transport);
 PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool required);
 
 /**
+ * @deprecated
+ *
  * Tell whether the transport connection is authenticated
  *
  * Note that this property may not be stable until the PN_CONNECTION_REMOTE_OPEN
@@ -171,11 +177,13 @@ PN_EXTERN void pn_transport_require_auth(pn_transport_t *transport, bool require
 PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Set whether a non encrypted transport connection is allowed
  *
  * There are several ways within the AMQP protocol suite to get encrypted connections:
- * - Use TLS/SSL
- * - Use an SASL with a mechanism that supports saecurity layers
+ * - Use TLS
+ * - Use a SASL with a mechanism that supports saecurity layers
  *
  * The default if this option is not set is to allow unencrypted connections.
  *
@@ -185,6 +193,8 @@ PN_EXTERN bool pn_transport_is_authenticated(pn_transport_t *transport);
 PN_EXTERN void pn_transport_require_encryption(pn_transport_t *transport, bool required);
 
 /**
+ * @deprecated
+ *
  * Tell whether the transport connection is encrypted
  *
  * Note that this property may not be stable until the PN_CONNECTION_REMOTE_OPEN
@@ -212,7 +222,7 @@ PN_EXTERN pn_condition_t *pn_transport_condition(pn_transport_t *transport);
 /**
  * @deprecated
  */
-PN_EXTERN  pn_error_t *pn_transport_error(pn_transport_t *transport);
+PN_EXTERN pn_error_t *pn_transport_error(pn_transport_t *transport);
 
 /**
  * Binds the transport to an AMQP connection.
@@ -252,7 +262,7 @@ PN_EXTERN void pn_transport_trace(pn_transport_t *transport, pn_trace_t trace);
 PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tracer);
 
 /**
- * Get the tracning function used by a transport.
+ * Get the tracing function used by a transport.
  *
  * @param[in] transport a transport object
  * @return the tracing function used by a transport
@@ -260,6 +270,8 @@ PN_EXTERN void pn_transport_set_tracer(pn_transport_t *transport, pn_tracer_t tr
 PN_EXTERN pn_tracer_t pn_transport_get_tracer(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Get the application context that is associated with a transport object.
  *
  * The application context for a transport may be set using
@@ -272,6 +284,7 @@ PN_EXTERN void *pn_transport_get_context(pn_transport_t *transport);
 
 /**
  * @deprecated
+ *
  * Set a new application context for a transport object.
  *
  * The application context for a transport object may be retrieved using
@@ -291,6 +304,8 @@ PN_EXTERN void pn_transport_set_context(pn_transport_t *transport, void *context
 PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Log a message using a transport's logging mechanism.
  *
  * This can be useful in a debugging context as the log message will
@@ -302,6 +317,8 @@ PN_EXTERN pn_record_t *pn_transport_attachments(pn_transport_t *transport);
 PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
 
 /**
+ * @deprecated
+ *
  * Log a printf formatted message using a transport's logging
  * mechanism.
  *
@@ -315,6 +332,8 @@ PN_EXTERN void pn_transport_log(pn_transport_t *transport, const char *message);
 PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va_list ap);
 
 /**
+ * @deprecated
+ *
  * Log a printf formatted message using a transport's logging
  * mechanism.
  *
@@ -327,6 +346,8 @@ PN_EXTERN void pn_transport_vlogf(pn_transport_t *transport, const char *fmt, va
 PN_EXTERN void pn_transport_logf(pn_transport_t *transport, const char *fmt, ...);
 
 /**
+ * @deprecated
+ *
  * Get the maximum allowed channel for a transport.
  * This will be the minimum of 
  *   1. limit imposed by this proton implementation
@@ -339,6 +360,8 @@ PN_EXTERN void pn_transport_logf(pn_transport_t *transport, const char *fmt, ...
 PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Set the maximum allowed channel number for a transport.
  * Note that this is the maximum channel number allowed, giving a 
  * valid channel number range of [0..channel_max]. Therefore the 
@@ -358,6 +381,8 @@ PN_EXTERN uint16_t pn_transport_get_channel_max(pn_transport_t *transport);
 PN_EXTERN int pn_transport_set_channel_max(pn_transport_t *transport, uint16_t channel_max);
 
 /**
+ * @deprecated
+ *
  * Get the maximum allowed channel of a transport's remote peer.
  *
  * @param[in] transport a transport object
@@ -366,6 +391,8 @@ PN_EXTERN int pn_transport_set_channel_max(pn_transport_t *transport, uint16_t c
 PN_EXTERN uint16_t pn_transport_remote_channel_max(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Get the maximum frame size of a transport.
  *
  * @param[in] transport a transport object
@@ -374,6 +401,8 @@ PN_EXTERN uint16_t pn_transport_remote_channel_max(pn_transport_t *transport);
 PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Set the maximum frame size of a transport.
  *
  * @param[in] transport a transport object
@@ -382,6 +411,8 @@ PN_EXTERN uint32_t pn_transport_get_max_frame(pn_transport_t *transport);
 PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t size);
 
 /**
+ * @deprecated
+ *
  * Get the maximum frame size of a transport's remote peer.
  *
  * @param[in] transport a transport object
@@ -390,6 +421,8 @@ PN_EXTERN void pn_transport_set_max_frame(pn_transport_t *transport, uint32_t si
 PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Get the idle timeout for a transport.
  *
  * A zero idle timeout means heartbeats are disabled.
@@ -400,6 +433,8 @@ PN_EXTERN uint32_t pn_transport_get_remote_max_frame(pn_transport_t *transport);
 PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport);
 
 /**
+ * @deprecated
+ *
  * Set the idle timeout for a transport.
  *
  * A zero idle timeout means heartbeats are disabled.
@@ -410,6 +445,8 @@ PN_EXTERN pn_millis_t pn_transport_get_idle_timeout(pn_transport_t *transport);
 PN_EXTERN void pn_transport_set_idle_timeout(pn_transport_t *transport, pn_millis_t timeout);
 
 /**
+ * @deprecated
+ *
  * Get the idle timeout for a transport's remote peer.
  *
  * A zero idle timeout means heartbeats are disabled.
@@ -423,6 +460,7 @@ PN_EXTERN pn_millis_t pn_transport_get_remote_idle_timeout(pn_transport_t *trans
  * @deprecated
  */
 PN_EXTERN ssize_t pn_transport_input(pn_transport_t *transport, const char *bytes, size_t available);
+
 /**
  * @deprecated
  */
@@ -618,7 +656,8 @@ PN_EXTERN uint64_t pn_transport_get_frames_output(const pn_transport_t *transpor
  */
 PN_EXTERN uint64_t pn_transport_get_frames_input(const pn_transport_t *transport);
 
-/** Access the AMQP Connection associated with the transport.
+/**
+ * Access the AMQP Connection associated with the transport.
  *
  * @param[in] transport a transport object
  * @return the connection context for the transport, or NULL if
@@ -630,7 +669,8 @@ PN_EXTERN pn_connection_t *pn_transport_connection(pn_transport_t *transport);
 }
 #endif
 
-/** @}
+/**
+ * @}
  */
 
 #endif /* transport.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/type_compat.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/type_compat.h b/proton-c/include/proton/type_compat.h
index 9a7422c..fe96994 100644
--- a/proton-c/include/proton/type_compat.h
+++ b/proton-c/include/proton/type_compat.h
@@ -22,6 +22,10 @@
  *
  */
 
+/**
+ * @cond INTERNAL
+ */
+
 // Get Boolean
 #if !defined(__cplusplus) && !defined(__bool_true_false_are_defined)
 # if __STDC_VERSION__ >= 199901L || __GNUC__ >= 3 || _MSC_VER >=1800
@@ -139,4 +143,8 @@ typedef unsigned __int64 uint64_t;
 # endif
 #endif // PNI_DEFINE_SSIZE_T
 
+/**
+ * @endcond
+ */
+
 #endif /* type_compat.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/types.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/types.h b/proton-c/include/proton/types.h
index 190f089..2ceadd3 100644
--- a/proton-c/include/proton/types.h
+++ b/proton-c/include/proton/types.h
@@ -1,7 +1,6 @@
 #ifndef PROTON_TYPES_H
 #define PROTON_TYPES_H 1
 
-
 /*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -29,11 +28,90 @@
 
 /**
  * @file
- * AMQP type system
+ *
+ * @defgroup core Core
+ * @brief Core protocol entities and event handling
+ *
+ * @defgroup connection Connection
+ * @brief A channel for communication between two peers on a network
+ * @ingroup core
+ *
+ * @defgroup session Session
+ * @brief A container of links
+ * @ingroup core
+ *
+ * @defgroup link Link
+ * @brief A channel for transferring messages
+ * @ingroup core
+ *
+ * @defgroup terminus Terminus
+ * @brief A source or target for messages
+ * @ingroup core
+ *
+ * @defgroup message Message
+ * @brief A mutable holder of application content
+ * @ingroup core
+ *
+ * @defgroup delivery Delivery
+ * @brief A message transfer
+ * @ingroup core
+ *
+ * @defgroup condition Condition
+ * @brief An endpoint error state
+ * @ingroup core
+ *
+ * @defgroup event Event
+ * @brief Protocol and transport events
+ * @ingroup core
+ *
+ * @defgroup transport Transport
+ * @brief A network channel supporting an AMQP connection
+ * @ingroup core
+ *
+ * @defgroup sasl SASL
+ * @brief SASL secure transport layer
+ * @ingroup core
+ *
+ * @defgroup ssl SSL
+ * @brief SSL secure transport layer
+ * @ingroup core
+ *
+ * @defgroup error Error
+ * @brief A Proton error
+ * @ingroup core
  *
  * @defgroup types Types
- * AMQP type system
- * @{
+ * @brief Protocol and API data types
+ *
+ * @defgroup amqp_types AMQP types
+ * @brief AMQP data types
+ * @ingroup types
+ *
+ * @defgroup api_types API types
+ * @brief Additional data types used in the API
+ * @ingroup types
+ *
+ * @defgroup codec Codec
+ * @brief AMQP data encoding and decoding
+ *
+ * @defgroup io IO
+ * @brief IO integration interfaces
+ *
+ * @defgroup connection_driver Connection Driver
+ * @brief **Experimental** - Low-level IO integration
+ * @ingroup io
+ *
+ * @defgroup proactor Proactor
+ * @brief **Experimental** - Multithreaded IO
+ * @ingroup io
+ *
+ * @defgroup messenger Messenger
+ * @deprecated
+ * @brief **Deprecated** - The Messenger API
+ *
+ * @defgroup url URL
+ * @deprecated
+ * @brief **Deprecated** - A URL parser
  */
 
 #ifdef __cplusplus
@@ -41,54 +119,116 @@ extern "C" {
 #endif
 
 /**
- * @defgroup primitives Primitive Types
- * Primitive types
- * @{
+ * A sequence number.
+ *
+ * @ingroup api_types
  */
-
 typedef int32_t  pn_sequence_t;
+
+/**
+ * A span of time in milliseconds.
+ *
+ * @ingroup api_types
+ */
 typedef uint32_t pn_millis_t;
+
+/**
+ * The maximum value for @ref pn_millis_t.
+ *
+ * @ingroup api_types
+ */
 #define PN_MILLIS_MAX (~0U)
+
+/**
+ * A span of time in seconds.
+ *
+ * @ingroup api_types
+ */
 typedef uint32_t pn_seconds_t;
 
-typedef int64_t  pn_timestamp_t;
+/**
+ * A 64-bit timestamp in milliseconds since the Unix epoch.
+ *
+ * @ingroup amqp_types
+ */
+typedef int64_t pn_timestamp_t;
 
+/**
+ * A 32-bit Unicode code point.
+ *
+ * @ingroup amqp_types
+ */
 typedef uint32_t pn_char_t;
+
+/**
+ * A 32-bit decimal floating-point number.
+ *
+ * @ingroup amqp_types
+ */
 typedef uint32_t pn_decimal32_t;
+
+/**
+ * A 64-bit decimal floating-point number.
+ *
+ * @ingroup amqp_types
+ */
 typedef uint64_t pn_decimal64_t;
+
+/**
+ * A 128-bit decimal floating-point number.
+ *
+ * @ingroup amqp_types
+ */
 typedef struct {
   char bytes[16];
 } pn_decimal128_t;
+
+/**
+ * A 16-byte universally unique identifier.
+ *
+ * @ingroup amqp_types
+ */
 typedef struct {
   char bytes[16];
 } pn_uuid_t;
 
-/** A const byte buffer. */
+/**
+ * A const byte buffer.
+ *
+ * @ingroup api_types
+ */
 typedef struct pn_bytes_t {
   size_t size;
   const char *start;
 } pn_bytes_t;
 
+/**
+ * Create a @ref pn_bytes_t
+ *
+ * @ingroup api_types
+ */
 PN_EXTERN pn_bytes_t pn_bytes(size_t size, const char *start);
+
 static const pn_bytes_t pn_bytes_null = { 0, NULL };
 
-/** A non-const byte buffer. */
+/**
+ * A non-const byte buffer.
+ *
+ * @ingroup api_types
+ */
 typedef struct pn_rwbytes_t {
   size_t size;
   char *start;
 } pn_rwbytes_t;
 
-PN_EXTERN pn_rwbytes_t pn_rwbytes(size_t size, char *start);
-static const pn_bytes_t pn_rwbytes_null = { 0, NULL };
-
-/** @}
- */
-
 /**
- * @defgroup abstract Abstract Types
- * Abstract types
- * @{
+ * Create a @ref pn_rwbytes_t
+ *
+ * @ingroup api_types
  */
+PN_EXTERN pn_rwbytes_t pn_rwbytes(size_t size, char *start);
+
+static const pn_bytes_t pn_rwbytes_null = { 0, NULL };
 
 /**
  * Holds the state flags for an AMQP endpoint.
@@ -122,8 +262,7 @@ typedef int pn_state_t;
  * contains zero or more ::pn_session_t objects, which in turn contain
  * zero or more ::pn_link_t objects. Each ::pn_link_t object contains
  * an ordered sequence of ::pn_delivery_t objects. A link is either a
- * @link sender Sender @endlink, or a @link receiver Receiver
- * @endlink, but never both.
+ * sender or a receiver but never both.
  *
  * @ingroup connection
  */
@@ -146,8 +285,8 @@ typedef struct pn_session_t pn_session_t;
  * A pn_link_t object encapsulates all of the endpoint state
  * associated with an AMQP Link. A pn_link_t object contains an
  * ordered sequence of ::pn_delivery_t objects representing in-flight
- * deliveries. A pn_link_t may be either a @link sender Sender
- * @endlink, or a @link receiver Receiver @endlink, but never both.
+ * deliveries. A pn_link_t may be either sender or a receiver but
+ * never both.
  *
  * A pn_link_t object maintains a pointer to the *current* delivery
  * within the ordered sequence of deliveries contained by the link
@@ -274,21 +413,19 @@ typedef struct pn_collector_t pn_collector_t;
 typedef struct pn_transport_t pn_transport_t;
 
 /**
- * An event handler
+ * @cond INTERNAL
  *
- * A pn_handler_t is target of ::pn_event_t dispatched by the ::pn_reactor_t
+ * An event handler
  *
- * @ingroup reactor
+ * A pn_handler_t is target of ::pn_event_t dispatched by the pn_reactor_t
  */
 typedef struct pn_handler_t pn_handler_t;
-
-/** @}
+/**
+ * @endcond
  */
+
 #ifdef __cplusplus
 }
 #endif
 
-/** @}
- */
-
 #endif /* types.h */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/7bae4756/proton-c/include/proton/url.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/url.h b/proton-c/include/proton/url.h
index 4ff9536..49faa30 100644
--- a/proton-c/include/proton/url.h
+++ b/proton-c/include/proton/url.h
@@ -1,5 +1,6 @@
 #ifndef PROTON_URL_H
-#define PROTON_URL_H
+#define PROTON_URL_H 1
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -25,23 +26,29 @@
 extern "C" {
 #endif
 
-
 /**
  * @file
- * Parsing URLs.
  *
- * @defgroup url URL
- * Parsing URLs.
-! * @{
+ * **Deprecated**
+ *
+ * @deprecated
+ *
+ * @addtogroup url
+ * @{
  */
 
-/** A parsed URL */
+/**
+ * A parsed URL
+ */
 typedef struct pn_url_t pn_url_t;
 
-/** Create an empty URL */
+/**
+ * Create an empty URL
+ */
 PNX_EXTERN pn_url_t *pn_url(void);
 
-/** Parse a string URL as a pn_url_t.
+/**
+ * Parse a string URL as a pn_url_t.
  *
  * URL syntax:
  *
@@ -55,31 +62,34 @@ PNX_EXTERN pn_url_t *pn_url(void);
  *
  * `path` can contain any character
  *
- *@param[in] url A URL string.
- *@return The parsed pn_url_t or NULL if url is not a valid URL string.
+ * @param[in] url A URL string.
+ * @return The parsed pn_url_t or NULL if url is not a valid URL string.
  */
 PNX_EXTERN pn_url_t *pn_url_parse(const char *url);
 
-/** Free a URL */
+/**
+ * Free a URL */
 PNX_EXTERN void pn_url_free(pn_url_t *url);
 
-/** Clear the contents of the URL. */
+/**
+ * Clear the contents of the URL.
+ */
 PNX_EXTERN void pn_url_clear(pn_url_t *url);
 
 /**
  * Return the string form of a URL.
  *
- *  The returned string is owned by the pn_url_t and will become invalid if it
- *  is modified.
+ * The returned string is owned by the pn_url_t and will become
+ * invalid if it is modified.
  */
 PNX_EXTERN const char *pn_url_str(pn_url_t *url);
 
 /**
- *@name Getters for parts of the URL.
+ * @name Getters for parts of the URL.
  *
- *Values belong to the URL. May return NULL if the value is not set.
+ * Values belong to the URL. May return NULL if the value is not set.
  *
- *@{
+ * @{
  */
 PNX_EXTERN const char *pn_url_get_scheme(pn_url_t *url);
 PNX_EXTERN const char *pn_url_get_username(pn_url_t *url);
@@ -87,14 +97,17 @@ PNX_EXTERN const char *pn_url_get_password(pn_url_t *url);
 PNX_EXTERN const char *pn_url_get_host(pn_url_t *url);
 PNX_EXTERN const char *pn_url_get_port(pn_url_t *url);
 PNX_EXTERN const char *pn_url_get_path(pn_url_t *url);
-///@}
+/**
+ * @}
+ */
 
 /**
- *@name Setters for parts of the URL.
+ * @name Setters for parts of the URL.
  *
- *Values are copied. Value can be NULL to indicate the part is not set.
+ * Values are copied. Value can be NULL to indicate the part is not
+ * set.
  *
- *@{
+ * @{
  */
 PNX_EXTERN void pn_url_set_scheme(pn_url_t *url, const char *scheme);
 PNX_EXTERN void pn_url_set_username(pn_url_t *url, const char *username);
@@ -102,12 +115,16 @@ PNX_EXTERN void pn_url_set_password(pn_url_t *url, const char *password);
 PNX_EXTERN void pn_url_set_host(pn_url_t *url, const char *host);
 PNX_EXTERN void pn_url_set_port(pn_url_t *url, const char *port);
 PNX_EXTERN void pn_url_set_path(pn_url_t *url, const char *path);
-///@}
+/**
+ * @}
+ */
 
-///@}
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif
+#endif /* url.h */


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


[17/30] qpid-proton git commit: NO-JIRA: remove stale link

Posted by ac...@apache.org.
NO-JIRA: remove stale link


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

Branch: refs/heads/go1
Commit: 6c80c46f1449e5484857f38d238b9ab96057b550
Parents: 74d4b59
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 11:42:04 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 11:42:04 2016 +0000

----------------------------------------------------------------------
 DEVELOPERS.md | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/6c80c46f/DEVELOPERS.md
----------------------------------------------------------------------
diff --git a/DEVELOPERS.md b/DEVELOPERS.md
index 6231532..4e9b06b 100644
--- a/DEVELOPERS.md
+++ b/DEVELOPERS.md
@@ -1,9 +1,6 @@
 Qpid Proton Developer Information
 =================================
 
-Please see http://qpid.apache.org/proton/development.html for the current
-roadmap.
-
 Development Environment
 -----------------------
 


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


[28/30] qpid-proton git commit: PROTON-1379: [C++ binding] Add #if'd #include [closes #92]

Posted by ac...@apache.org.
PROTON-1379: [C++ binding] Add #if'd #include <functional>
[closes #92]


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

Branch: refs/heads/go1
Commit: cd6ecc5fd9cc29cd2fa594c59166dd9d432fd4b9
Parents: 673c75e
Author: Jiri Danek <jd...@redhat.com>
Authored: Fri Dec 23 15:18:28 2016 +0100
Committer: Andrew Stitcher <as...@apache.org>
Committed: Fri Dec 23 10:48:31 2016 -0500

----------------------------------------------------------------------
 proton-c/bindings/cpp/include/proton/container.hpp | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cd6ecc5f/proton-c/bindings/cpp/include/proton/container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/container.hpp b/proton-c/bindings/cpp/include/proton/container.hpp
index 0c40f3d..6f10c3c 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -29,6 +29,9 @@
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
 
+#ifdef PN_CPP_HAS_STD_FUNCTION
+#include <functional>
+#endif
 #include <string>
 
 namespace proton {


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


[14/30] qpid-proton git commit: PROTON-1372: [C++ binding] Pimpl event_loop - To make sure that we maintain C++03/C++11 cross compatibility.

Posted by ac...@apache.org.
PROTON-1372: [C++ binding] Pimpl event_loop
- To make sure that we maintain C++03/C++11 cross compatibility.


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

Branch: refs/heads/go1
Commit: f89d24d855fe684d97ef640235a04afdbb08c885
Parents: bea6173
Author: Andrew Stitcher <as...@apache.org>
Authored: Thu Dec 8 03:25:57 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Thu Dec 8 03:49:58 2016 -0500

----------------------------------------------------------------------
 .../bindings/cpp/include/proton/event_loop.hpp  | 38 ++++++++++++++-----
 .../cpp/include/proton/internal/config.hpp      |  4 ++
 .../cpp/include/proton/internal/object.hpp      |  2 +-
 .../cpp/include/proton/io/connection_driver.hpp |  5 ++-
 .../bindings/cpp/include/proton/thread_safe.hpp | 23 ++++++------
 proton-c/bindings/cpp/src/container_impl.cpp    | 27 ++++++--------
 proton-c/bindings/cpp/src/event_loop.cpp        | 28 +++++++++++---
 proton-c/bindings/cpp/src/include/contexts.hpp  |  2 +-
 .../cpp/src/include/event_loop_impl.hpp         | 39 ++++++++++++++++++++
 .../bindings/cpp/src/io/connection_driver.cpp   | 12 +++++-
 proton-c/bindings/cpp/src/thread_safe_test.cpp  |  4 +-
 11 files changed, 135 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/include/proton/event_loop.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/event_loop.hpp b/proton-c/bindings/cpp/include/proton/event_loop.hpp
index d43ba4f..f49d211 100644
--- a/proton-c/bindings/cpp/include/proton/event_loop.hpp
+++ b/proton-c/bindings/cpp/include/proton/event_loop.hpp
@@ -25,6 +25,7 @@
 #include "./fwd.hpp"
 #include "./internal/config.hpp"
 #include "./internal/export.hpp"
+#include "./internal/pn_unique_ptr.hpp"
 
 #include <functional>
 
@@ -41,31 +42,48 @@ namespace proton {
 /// and have it executed in the same sequence.
 ///
 class PN_CPP_CLASS_EXTERN event_loop {
+    /// @cond internal
+    class impl;
+    event_loop& operator=(impl* i);
+    /// @endcond
+
   public:
-    virtual ~event_loop() {}
+    /// Create event_loop
+    PN_CPP_EXTERN event_loop();
+
+    PN_CPP_EXTERN ~event_loop();
+
+#if PN_CPP_HAS_EXPLICIT_CONVERSIONS
+    /// When using C++11 (or later) you can use event_loop in a bool context
+    /// to indicate if there is an event loop set.
+    PN_CPP_EXTERN explicit operator bool() const { return bool(impl_); }
+#endif
+
+    /// No event loop set.
+    PN_CPP_EXTERN bool operator !() const { return !impl_; }
 
     /// Arrange to have f() called in the event_loop's sequence: possibly
     /// deferred, possibly in another thread.
     ///
     /// @return true if f() has or will be called, false if the event_loop is ended
     /// and f() cannot be injected.
-    virtual bool inject(void_function0& f) = 0;
+    PN_CPP_EXTERN bool inject(void_function0& f);
 
 #if PN_CPP_HAS_STD_FUNCTION
     /// @copydoc inject(void_function0&)
-    virtual bool inject(std::function<void()> f) = 0;
+    PN_CPP_EXTERN bool inject(std::function<void()> f);
 #endif
 
-  protected:
-    event_loop() {}
-
   private:
-    PN_CPP_EXTERN static event_loop* get(pn_connection_t*);
-    PN_CPP_EXTERN static event_loop* get(pn_session_t*);
-    PN_CPP_EXTERN static event_loop* get(pn_link_t*);
+    PN_CPP_EXTERN static event_loop& get(pn_connection_t*);
+    PN_CPP_EXTERN static event_loop& get(pn_session_t*);
+    PN_CPP_EXTERN static event_loop& get(pn_link_t*);
+
+    internal::pn_unique_ptr<impl> impl_;
 
     /// @cond INTERNAL
-  friend class connection;
+  friend class container;
+  friend class io::connection_driver;
   template <class T> friend class thread_safe;
     /// @endcond
 };

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/include/proton/internal/config.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/internal/config.hpp b/proton-c/bindings/cpp/include/proton/internal/config.hpp
index 612e1e3..563a304 100644
--- a/proton-c/bindings/cpp/include/proton/internal/config.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/config.hpp
@@ -87,6 +87,10 @@
 #define PN_CPP_HAS_STD_FUNCTION PN_CPP_HAS_CPP11
 #endif
 
+#ifndef PN_CPP_HAS_STD_BIND
+#define PN_CPP_HAS_STD_BIND PN_CPP_HAS_CPP11
+#endif
+
 #ifndef PN_CPP_HAS_CHRONO
 #define PN_CPP_HAS_CHRONO PN_CPP_HAS_CPP11
 #endif

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/include/proton/internal/object.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/internal/object.hpp b/proton-c/bindings/cpp/include/proton/internal/object.hpp
index 78a990c..d492b80 100644
--- a/proton-c/bindings/cpp/include/proton/internal/object.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/object.hpp
@@ -101,7 +101,7 @@ template <class T> class object : private comparable<object<T> > {
     friend bool operator==(const object& a, const object& b) { return a.object_ == b.object_; }
     friend bool operator<(const object& a, const object& b) { return a.object_ < b.object_; }
     friend std::ostream& operator<<(std::ostream& o, const object& a) { o << a.object_.inspect(); return o; }
-  template <class U> friend class proton::thread_safe;
+    template <class U> friend class proton::thread_safe;
 };
 
 /// Factory class used internally to make wrappers and extract proton objects

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/include/proton/io/connection_driver.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/io/connection_driver.hpp b/proton-c/bindings/cpp/include/proton/io/connection_driver.hpp
index d5da718..4a0efe9 100644
--- a/proton-c/bindings/cpp/include/proton/io/connection_driver.hpp
+++ b/proton-c/bindings/cpp/include/proton/io/connection_driver.hpp
@@ -111,7 +111,10 @@ PN_CPP_CLASS_EXTERN connection_driver {
     /// the user pins it in memory using the proton::thread_safe<> template.
     /// The event_loop is deleted when, and only when, the proton::connection is.
     ///
-    PN_CPP_EXTERN connection_driver(proton::container&, event_loop* loop = 0);
+    PN_CPP_EXTERN connection_driver(proton::container&);
+#if PN_CPP_HAS_RVALUE_REFERENCES
+    PN_CPP_EXTERN connection_driver(proton::container&, event_loop&& loop);
+#endif
 
     PN_CPP_EXTERN ~connection_driver();
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/include/proton/thread_safe.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/thread_safe.hpp b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
index 28aa3a6..608a1ca 100644
--- a/proton-c/bindings/cpp/include/proton/thread_safe.hpp
+++ b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
@@ -43,8 +43,6 @@ template<> struct endpoint_traits<sender> {};
 template<> struct endpoint_traits<receiver> {};
 }
 
-template <class T> class returned;
-
 /// **Experimental** - A thread-safe object wrapper.
 ///
 /// The proton::object subclasses (proton::connection, proton::sender etc.) are
@@ -78,11 +76,11 @@ class thread_safe : private internal::pn_ptr_base, private internal::endpoint_tr
 
     ~thread_safe() {
         if (ptr()) {
-            if (event_loop()) {
-#if PN_CPP_HAS_CPP11
-                event_loop()->inject(std::bind(&decref, ptr()));
+            if (!!event_loop()) {
+#if PN_CPP_HAS_STD_BIND
+                event_loop().inject(std::bind(&decref, ptr()));
 #else
-                event_loop()->inject(*new inject_decref(ptr()));
+                event_loop().inject(*new inject_decref(ptr()));
 #endif
             } else {
                 decref(ptr());
@@ -91,7 +89,7 @@ class thread_safe : private internal::pn_ptr_base, private internal::endpoint_tr
     }
 
     /// Get the event loop for this object.
-    class event_loop* event_loop() { return event_loop::get(ptr()); }
+    class event_loop& event_loop() { return event_loop::get(ptr()); }
 
     /// Get the thread-unsafe proton object wrapped by this thread_safe<T>
     T unsafe() { return T(ptr()); }
@@ -140,12 +138,13 @@ class returned : private internal::endpoint_traits<T>
     /// Implicit conversion to target, usable only in a safe context.
     operator T() { return ptr_->unsafe(); }
 
-#if PN_CPP_HAS_CPP11
+#if PN_CPP_HAS_SHARED_PTR
     /// Release to a std::shared_ptr
     operator std::shared_ptr<thread_safe<T> >() {
         return std::shared_ptr<thread_safe<T> >(release());
     }
-
+#endif
+#if PN_CPP_HAS_UNIQUE_PTR
     /// Release to a std::unique_ptr
     operator std::unique_ptr<thread_safe<T> >() {
         return std::unique_ptr<thread_safe<T> >(release());
@@ -160,13 +159,13 @@ class returned : private internal::endpoint_traits<T>
 /// Make a thread-safe wrapper for `obj`.
 template <class T> returned<T> make_thread_safe(const T& obj) { return returned<T>(obj); }
 
-#if PN_CPP_HAS_CPP11
-
+#if PN_CPP_HAS_SHARED_PTR
 /// Create a thread-safe shared_ptr to `obj`.
 template <class T> std::shared_ptr<thread_safe<T> > make_shared_thread_safe(const T& obj) {
     return make_thread_safe(obj);
 }
-
+#endif
+#if PN_CPP_HAS_UNIQUE_PTR
 /// Create a thread-safe unique_ptr to `obj`.
 template <class T> std::unique_ptr<thread_safe<T> > make_unique_thread_safe(const T& obj) {
     return make_thread_safe(obj);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/src/container_impl.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container_impl.cpp b/proton-c/bindings/cpp/src/container_impl.cpp
index 5f13b82..9cec831 100644
--- a/proton-c/bindings/cpp/src/container_impl.cpp
+++ b/proton-c/bindings/cpp/src/container_impl.cpp
@@ -38,6 +38,7 @@
 #include "connector.hpp"
 #include "container_impl.hpp"
 #include "contexts.hpp"
+#include "event_loop_impl.hpp"
 #include "messaging_adapter.hpp"
 #include "msg.hpp"
 #include "proton_bits.hpp"
@@ -160,24 +161,20 @@ container::impl::~impl() {
         close_acceptor(i->second);
 }
 
-namespace {
 // FIXME aconway 2016-06-07: this is not thread safe. It is sufficient for using
 // default_container::schedule() inside a handler but not for inject() from
 // another thread.
-struct immediate_event_loop : public event_loop {
-    virtual bool inject(void_function0& f) PN_CPP_OVERRIDE {
-        try { f(); } catch(...) {}
-        return true;
-    }
+bool event_loop::impl::inject(void_function0& f) {
+    try { f(); } catch(...) {}
+    return true;
+}
 
-#if PN_CPP_HAS_CPP11
-    virtual bool inject(std::function<void()> f) PN_CPP_OVERRIDE {
-        try { f(); } catch(...) {}
-        return true;
-    }
-#endif
-};
+#if PN_CPP_HAS_STD_FUNCTION
+bool event_loop::impl::inject(std::function<void()> f) {
+    try { f(); } catch(...) {}
+    return true;
 }
+#endif
 
 returned<connection> container::impl::connect(const std::string &urlstr, const connection_options &user_opts) {
     connection_options opts = client_connection_options(); // Defaults
@@ -195,7 +192,7 @@ returned<connection> container::impl::connect(const std::string &urlstr, const c
     internal::pn_unique_ptr<connector> ctor(new connector(conn, opts, url));
     connection_context& cc(connection_context::get(conn));
     cc.handler.reset(ctor.release());
-    cc.event_loop.reset(new immediate_event_loop);
+    cc.event_loop_ = new event_loop::impl;
 
     pn_connection_t *pnc = unwrap(conn);
     pn_connection_set_container(pnc, id_.c_str());
@@ -347,7 +344,7 @@ void container::impl::configure_server_connection(connection &c) {
         pn_record_t *record = pn_connection_attachments(unwrap(c));
         pn_record_set_handler(record, chandler.get());
     }
-    connection_context::get(c).event_loop.reset(new immediate_event_loop);
+    connection_context::get(c).event_loop_ = new event_loop::impl;
 }
 
 void container::impl::run() {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/src/event_loop.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/event_loop.cpp b/proton-c/bindings/cpp/src/event_loop.cpp
index 3d373c4..ea4ee71 100644
--- a/proton-c/bindings/cpp/src/event_loop.cpp
+++ b/proton-c/bindings/cpp/src/event_loop.cpp
@@ -17,24 +17,40 @@
  * under the License.
  */
 
+#include "proton/event_loop.hpp"
+
 #include "contexts.hpp"
+#include "event_loop_impl.hpp"
 
 #include <proton/session.h>
 #include <proton/link.h>
 
-#include "proton/event_loop.hpp"
-
 namespace proton {
 
-event_loop* event_loop::get(pn_connection_t* c) {
-    return connection_context::get(c).event_loop.get();
+event_loop::event_loop() {}
+event_loop::~event_loop() {}
+
+event_loop& event_loop::operator=(impl* i) { impl_.reset(i); return *this; }
+
+bool event_loop::inject(void_function0& f) {
+    return impl_->inject(f);
+}
+
+#if PN_CPP_HAS_STD_FUNCTION
+bool event_loop::inject(std::function<void()> f) {
+    return impl_->inject(f);
+}
+#endif
+
+event_loop& event_loop::get(pn_connection_t* c) {
+    return connection_context::get(c).event_loop_;
 }
 
-event_loop* event_loop::get(pn_session_t* s) {
+event_loop& event_loop::get(pn_session_t* s) {
     return get(pn_session_connection(s));
 }
 
-event_loop* event_loop::get(pn_link_t* l) {
+event_loop& event_loop::get(pn_link_t* l) {
     return get(pn_link_session(l));
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/src/include/contexts.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/contexts.hpp b/proton-c/bindings/cpp/src/include/contexts.hpp
index 4306489..e80c434 100644
--- a/proton-c/bindings/cpp/src/include/contexts.hpp
+++ b/proton-c/bindings/cpp/src/include/contexts.hpp
@@ -93,7 +93,7 @@ class connection_context : public context {
     io::link_namer* link_gen;      // Link name generator.
 
     internal::pn_unique_ptr<proton_handler> handler;
-    internal::pn_unique_ptr<class event_loop> event_loop;
+    event_loop event_loop_;
 
     static connection_context& get(pn_connection_t *c) { return ref<connection_context>(id(c)); }
     static connection_context& get(const connection& c) { return ref<connection_context>(id(c)); }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/src/include/event_loop_impl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/event_loop_impl.hpp b/proton-c/bindings/cpp/src/include/event_loop_impl.hpp
new file mode 100644
index 0000000..b34a981
--- /dev/null
+++ b/proton-c/bindings/cpp/src/include/event_loop_impl.hpp
@@ -0,0 +1,39 @@
+#ifndef PROTON_CPP_EVENT_LOOP_IMPL_HPP
+#define PROTON_CPP_EVENT_LOOP_IMPL_HPP
+
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include "proton/fwd.hpp"
+
+namespace proton {
+
+class event_loop::impl {
+  public:
+    bool inject(void_function0& f);
+#if PN_CPP_HAS_CPP11
+    bool inject(std::function<void()> f);
+#endif
+};
+
+}
+
+#endif // PROTON_CPP_EVENT_LOOP_IMPL_HPP

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/src/io/connection_driver.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/io/connection_driver.cpp b/proton-c/bindings/cpp/src/io/connection_driver.cpp
index ca9f68e..148a00b 100644
--- a/proton-c/bindings/cpp/src/io/connection_driver.cpp
+++ b/proton-c/bindings/cpp/src/io/connection_driver.cpp
@@ -49,13 +49,21 @@ void connection_driver::init() {
 
 connection_driver::connection_driver() : handler_(0), container_(0) { init(); }
 
-connection_driver::connection_driver(class container& cont, event_loop* loop) : handler_(0), container_(&cont) {
+connection_driver::connection_driver(class container& cont) : handler_(0), container_(&cont) {
     init();
     connection_context& ctx = connection_context::get(connection());
     ctx.container = container_;
-    ctx.event_loop.reset(loop);
 }
 
+#if PN_CPP_HAS_RVALUE_REFERENCES
+connection_driver::connection_driver(class container& cont, event_loop&& loop) : handler_(0), container_(&cont) {
+    init();
+    connection_context& ctx = connection_context::get(connection());
+    ctx.container = container_;
+    ctx.event_loop_ = loop.impl_.get();
+}
+#endif
+
 connection_driver::~connection_driver() {
     pn_connection_driver_destroy(&driver_);
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/f89d24d8/proton-c/bindings/cpp/src/thread_safe_test.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/thread_safe_test.cpp b/proton-c/bindings/cpp/src/thread_safe_test.cpp
index 5b5d487..3a72f7f 100644
--- a/proton-c/bindings/cpp/src/thread_safe_test.cpp
+++ b/proton-c/bindings/cpp/src/thread_safe_test.cpp
@@ -50,7 +50,7 @@ void test_new() {
     ASSERT_EQUAL(1, pn_refcount(c)); // Engine gone, thread_safe keeping c alive.
     delete p;
 
-#if PN_CPP_HAS_CPP11
+#if PN_CPP_HAS_SHARED_PTR
     {
         std::shared_ptr<thread_safe<connection> > sp;
         {
@@ -60,6 +60,8 @@ void test_new() {
         }
         ASSERT_EQUAL(1, pn_refcount(c)); // Engine gone, sp keeping c alive.
     }
+#endif
+#if PN_CPP_HAS_UNIQUE_PTR
     {
         std::unique_ptr<thread_safe<connection> > up;
         {


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


[02/30] qpid-proton git commit: PROTON-1355: add ability to control sni directly as well

Posted by ac...@apache.org.
PROTON-1355: add ability to control sni directly as well


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

Branch: refs/heads/go1
Commit: b47ebb7e4473e1efd5ee6c735b17ca0595e48184
Parents: 7d404b6
Author: Gordon Sim <gs...@redhat.com>
Authored: Fri Nov 18 13:50:36 2016 +0000
Committer: Gordon Sim <gs...@redhat.com>
Committed: Wed Nov 30 20:49:13 2016 +0000

----------------------------------------------------------------------
 proton-c/bindings/python/proton/reactor.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/b47ebb7e/proton-c/bindings/python/proton/reactor.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/proton/reactor.py b/proton-c/bindings/python/proton/reactor.py
index 3562aa9..e4dab95 100644
--- a/proton-c/bindings/python/proton/reactor.py
+++ b/proton-c/bindings/python/proton/reactor.py
@@ -534,6 +534,7 @@ class Connector(Handler):
         self.user = None
         self.password = None
         self.virtual_host = None
+        self.ssl_sni = None
 
     def _connect(self, connection, reactor):
         assert(reactor is not None)
@@ -565,7 +566,7 @@ class Connector(Handler):
             if not self.ssl_domain:
                 raise SSLUnavailable("amqps: SSL libraries not found")
             self.ssl = SSL(transport, self.ssl_domain)
-            self.ssl.peer_hostname = self.virtual_host if self.virtual_host != None else url.host
+            self.ssl.peer_hostname = self.ssl_sni or self.virtual_host or url.host
 
     def on_connection_local_open(self, event):
         self._connect(event.connection, event.reactor)
@@ -724,6 +725,7 @@ class Container(Reactor):
         if connector.virtual_host:
             # only set hostname if virtual-host is a non-empty string
             conn.hostname = connector.virtual_host
+        connector.ssl_sni = kwargs.get('sni')
 
         conn._overrides = connector
         if url: connector.address = Urls([url])


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


[03/30] qpid-proton git commit: PROTON-1336: make reactor teardown sequence work with Windows io objects

Posted by ac...@apache.org.
PROTON-1336: make reactor teardown sequence work with Windows io objects


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

Branch: refs/heads/go1
Commit: 9adbca2818a0aaf860f7d0854e6267d08117a2b1
Parents: b47ebb7
Author: Clifford Jansen <cl...@apache.org>
Authored: Thu Dec 1 12:10:22 2016 -0800
Committer: Clifford Jansen <cl...@apache.org>
Committed: Thu Dec 1 12:10:22 2016 -0800

----------------------------------------------------------------------
 proton-c/src/reactor/io/windows/io.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/9adbca28/proton-c/src/reactor/io/windows/io.c
----------------------------------------------------------------------
diff --git a/proton-c/src/reactor/io/windows/io.c b/proton-c/src/reactor/io/windows/io.c
index 3ae6722..07692d1 100644
--- a/proton-c/src/reactor/io/windows/io.c
+++ b/proton-c/src/reactor/io/windows/io.c
@@ -92,8 +92,11 @@ void pn_io_initialize(void *obj)
 void pn_io_finalize(void *obj)
 {
   pn_io_t *io = (pn_io_t *) obj;
-  pn_error_free(io->error);
+  pn_selector_t *sel = io->iocp->selector;
   pn_free(io->iocp);
+  if (sel)
+    pn_decref(sel);
+  pn_error_free(io->error);
   WSACleanup();
 }
 
@@ -368,8 +371,10 @@ bool pn_wouldblock(pn_io_t *io)
 
 pn_selector_t *pn_io_selector(pn_io_t *io)
 {
-  if (io->iocp->selector == NULL)
+  if (io->iocp->selector == NULL) {
     io->iocp->selector = pni_selector_create(io->iocp);
+    pn_incref(io->iocp->selector);
+  }
   return io->iocp->selector;
 }
 


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


[09/30] qpid-proton git commit: PROTON-1367: Use an exclusion method that doesn't require absolute paths; remove some unused config options

Posted by ac...@apache.org.
PROTON-1367: Use an exclusion method that doesn't require absolute paths; remove some unused config options


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

Branch: refs/heads/go1
Commit: 325e399e3fe3e8a7fd2dc032c1ea69ec9476b780
Parents: 140cf99
Author: Justin Ross <jr...@apache.org>
Authored: Fri Dec 2 15:33:39 2016 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Fri Dec 2 15:33:39 2016 -0800

----------------------------------------------------------------------
 proton-c/docs/api/user.doxygen.in | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/325e399e/proton-c/docs/api/user.doxygen.in
----------------------------------------------------------------------
diff --git a/proton-c/docs/api/user.doxygen.in b/proton-c/docs/api/user.doxygen.in
index 7c4a771..4a02bd2 100644
--- a/proton-c/docs/api/user.doxygen.in
+++ b/proton-c/docs/api/user.doxygen.in
@@ -28,9 +28,7 @@ REPEAT_BRIEF            = YES
 ALWAYS_DETAILED_SEC     = NO
 INLINE_INHERITED_MEMB   = YES
 JAVADOC_AUTOBRIEF       = YES
-#MULTILINE_CPP_IS_BRIEF  = NO
 INHERIT_DOCS            = YES
-BUILTIN_STL_SUPPORT     = YES
 INLINE_SIMPLE_STRUCTS   = YES
 HIDE_UNDOC_CLASSES      = YES
 HIDE_COMPOUND_REFERENCE = YES
@@ -45,7 +43,6 @@ ENABLE_PREPROCESSING = YES
 MACRO_EXPANSION = YES
 EXPAND_ONLY_PREDEF = YES
 PREDEFINED = PN_EXTERN= PNX_EXTERN=
-#EXCLUDE_SYMBOLS =
 
 # Configuration options related to warning and progress messages
 
@@ -56,18 +53,18 @@ WARNINGS               = YES
 
 INPUT = @CMAKE_SOURCE_DIR@/proton-c/include @CMAKE_SOURCE_DIR@/proton-c/docs @CMAKE_SOURCE_DIR@/examples/c
 FILE_PATTERNS          = *.h *.md *.dox
-EXCLUDE = \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/cid.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/engine.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/handlers.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/import_export.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/log.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/object.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/parser.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/reactor.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/selectable.h \
-  @CMAKE_SOURCE_DIR@/proton-c/include/proton/type_compat.h
-EXCLUDE_PATTERNS       = @CMAKE_SOURCE_DIR@/examples/*.c @CMAKE_SOURCE_DIR@/examples/*.h
+EXCLUDE_PATTERNS       = */examples/*.c \
+                         */examples/*.h \
+                         */include/proton/cid.h \
+                         */include/proton/engine.h \
+                         */include/proton/handlers.h \
+                         */include/proton/import_export.h \
+                         */include/proton/log.h \
+                         */include/proton/object.h \
+                         */include/proton/parser.h \
+                         */include/proton/reactor.h \
+                         */include/proton/selectable.h \
+                         */include/proton/type_compat.h
 FULL_PATH_NAMES        = YES
 RECURSIVE              = YES
 STRIP_FROM_PATH        = @CMAKE_SOURCE_DIR@/proton-c/include


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


[19/30] qpid-proton git commit: PROTON-1355: dummy commit for PR cleanup. This closes #90

Posted by ac...@apache.org.
PROTON-1355: dummy commit for PR cleanup. This closes #90


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

Branch: refs/heads/go1
Commit: e99d0742090befffbaa31f484627e96bd112a1b6
Parents: db05c13
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 12:03:05 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 12:03:05 2016 +0000

----------------------------------------------------------------------

----------------------------------------------------------------------



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


[10/30] qpid-proton git commit: PROTON-1311: C interface to get/set the link max-msessage-size

Posted by ac...@apache.org.
PROTON-1311: C interface to get/set the link max-msessage-size


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

Branch: refs/heads/go1
Commit: 0a2d28e13978603f2a699a4bff91adf3dd90d309
Parents: 325e399
Author: Clifford Jansen <cl...@apache.org>
Authored: Sat Dec 3 17:42:40 2016 -0800
Committer: Clifford Jansen <cl...@apache.org>
Committed: Sat Dec 3 17:45:03 2016 -0800

----------------------------------------------------------------------
 proton-c/bindings/python/proton/__init__.py | 10 ++++++++
 proton-c/include/proton/link.h              | 30 ++++++++++++++++++++++++
 proton-c/src/core/engine-internal.h         |  2 ++
 proton-c/src/core/engine.c                  | 17 ++++++++++++++
 proton-c/src/core/transport.c               | 13 ++++++----
 tests/python/proton_tests/engine.py         | 11 +++++++++
 6 files changed, 79 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0a2d28e1/proton-c/bindings/python/proton/__init__.py
----------------------------------------------------------------------
diff --git a/proton-c/bindings/python/proton/__init__.py b/proton-c/bindings/python/proton/__init__.py
index 516daf1..d3f6922 100644
--- a/proton-c/bindings/python/proton/__init__.py
+++ b/proton-c/bindings/python/proton/__init__.py
@@ -2868,6 +2868,16 @@ class Link(Wrapper, Endpoint):
   def drained(self):
     return pn_link_drained(self._impl)
 
+  @property
+  def remote_max_message_size(self):
+    return pn_link_remote_max_message_size(self._impl)
+
+  def _get_max_message_size(self):
+    return pn_link_max_message_size(self._impl)
+  def _set_max_message_size(self, mode):
+    pn_link_set_max_message_size(self._impl, mode)
+  max_message_size = property(_get_max_message_size, _set_max_message_size)
+
   def detach(self):
     return pn_link_detach(self._impl)
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0a2d28e1/proton-c/include/proton/link.h
----------------------------------------------------------------------
diff --git a/proton-c/include/proton/link.h b/proton-c/include/proton/link.h
index 8ec162e..d52e6e7 100644
--- a/proton-c/include/proton/link.h
+++ b/proton-c/include/proton/link.h
@@ -647,6 +647,36 @@ PN_EXTERN ssize_t pn_link_recv(pn_link_t *receiver, char *bytes, size_t n);
 PN_EXTERN bool pn_link_draining(pn_link_t *receiver);
 
 /**
+ * **Experimental** - Get the maximum message size for a link.
+ *
+ * A zero maximum message size means the size is unlimited.
+ *
+ * @param[in] link a link object
+ * @return the maximum message size for a link.
+ */
+PN_EXTERN uint64_t pn_link_max_message_size(pn_link_t *link);
+
+/**
+ * **Experimental** - Set the maximum message size for a link.
+ *
+ * A zero maximum message size means the size is unlimited.
+ *
+ * @param[in] link a link object
+ * @param[in] size the maximum message size for the link
+ */
+PN_EXTERN void pn_link_set_max_message_size(pn_link_t *link, uint64_t size);
+
+/**
+ * **Experimental** - Get the remote view of the maximum message size for a link.
+ *
+ * A zero maximum message size means the size is unlimited.
+ *
+ * @param[in] link a link object
+ * @return the remote view of the maximum message size for a link
+ */
+PN_EXTERN uint64_t pn_link_remote_max_message_size(pn_link_t *link);
+
+/**
  * @}
  */
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0a2d28e1/proton-c/src/core/engine-internal.h
----------------------------------------------------------------------
diff --git a/proton-c/src/core/engine-internal.h b/proton-c/src/core/engine-internal.h
index fdaf272..1dbe91c 100644
--- a/proton-c/src/core/engine-internal.h
+++ b/proton-c/src/core/engine-internal.h
@@ -291,6 +291,8 @@ struct pn_link_t {
   pn_delivery_t *current;
   pn_record_t *context;
   size_t unsettled_count;
+  uint64_t max_message_size;
+  uint64_t remote_max_message_size;
   pn_sequence_t available;
   pn_sequence_t credit;
   pn_sequence_t queued;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0a2d28e1/proton-c/src/core/engine.c
----------------------------------------------------------------------
diff --git a/proton-c/src/core/engine.c b/proton-c/src/core/engine.c
index 99d311b..8c2aeb0 100644
--- a/proton-c/src/core/engine.c
+++ b/proton-c/src/core/engine.c
@@ -1176,6 +1176,8 @@ pn_link_t *pn_link_new(int type, pn_session_t *session, const char *name)
   pni_terminus_init(&link->remote_target, PN_UNSPECIFIED);
   link->unsettled_head = link->unsettled_tail = link->current = NULL;
   link->unsettled_count = 0;
+  link->max_message_size = 0;
+  link->remote_max_message_size = 0;
   link->available = 0;
   link->credit = 0;
   link->queued = 0;
@@ -1956,6 +1958,21 @@ bool pn_link_draining(pn_link_t *receiver)
   return receiver->drain && (pn_link_credit(receiver) > pn_link_queued(receiver));
 }
 
+uint64_t pn_link_max_message_size(pn_link_t *link)
+{
+  return link->max_message_size;
+}
+
+void pn_link_set_max_message_size(pn_link_t *link, uint64_t size)
+{
+  link->max_message_size = size;
+}
+
+uint64_t pn_link_remote_max_message_size(pn_link_t *link)
+{
+  return link->remote_max_message_size;
+}
+
 pn_link_t *pn_delivery_link(pn_delivery_t *delivery)
 {
   assert(delivery);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0a2d28e1/proton-c/src/core/transport.c
----------------------------------------------------------------------
diff --git a/proton-c/src/core/transport.c b/proton-c/src/core/transport.c
index e3b88b1..444145a 100644
--- a/proton-c/src/core/transport.c
+++ b/proton-c/src/core/transport.c
@@ -1342,13 +1342,14 @@ int pn_do_attach(pn_transport_t *transport, uint8_t frame_type, uint16_t channel
   pn_bytes_t dist_mode;
   bool snd_settle, rcv_settle;
   uint8_t snd_settle_mode, rcv_settle_mode;
-  int err = pn_data_scan(args, "D.[SIo?B?BD.[SIsIo.s]D.[SIsIo]..I]", &name, &handle,
+  uint64_t max_msgsz;
+  int err = pn_data_scan(args, "D.[SIo?B?BD.[SIsIo.s]D.[SIsIo]..IL]", &name, &handle,
                          &is_sender,
                          &snd_settle, &snd_settle_mode,
                          &rcv_settle, &rcv_settle_mode,
                          &source, &src_dr, &src_exp, &src_timeout, &src_dynamic, &dist_mode,
                          &target, &tgt_dr, &tgt_exp, &tgt_timeout, &tgt_dynamic,
-                         &idc);
+                         &idc, &max_msgsz);
   if (err) return err;
   char strbuf[128];      // avoid malloc for most link names
   char *strheap = (name.size >= sizeof(strbuf)) ? (char *) malloc(name.size + 1) : NULL;
@@ -1444,6 +1445,10 @@ int pn_do_attach(pn_transport_t *transport, uint8_t frame_type, uint16_t channel
     link->state.delivery_count = idc;
   }
 
+  if (max_msgsz) {
+    link->remote_max_message_size = max_msgsz;
+  }
+
   pn_collector_put(transport->connection->collector, PN_OBJECT, link, PN_LINK_REMOTE_OPEN);
   return 0;
 }
@@ -1988,7 +1993,7 @@ static int pni_process_link_setup(pn_transport_t *transport, pn_endpoint_t *endp
         if (err) return err;
       } else {
         int err = pn_post_frame(transport, AMQP_FRAME_TYPE, ssn_state->local_channel,
-                                "DL[SIoBB?DL[SIsIoC?sCnCC]?DL[SIsIoCC]nnI]", ATTACH,
+                                "DL[SIoBB?DL[SIsIoC?sCnCC]?DL[SIsIoCC]nnIL]", ATTACH,
                                 pn_string_get(link->name),
                                 state->local_handle,
                                 endpoint->type == RECEIVER,
@@ -2013,7 +2018,7 @@ static int pni_process_link_setup(pn_transport_t *transport, pn_endpoint_t *endp
                                 link->target.dynamic,
                                 link->target.properties,
                                 link->target.capabilities,
-                                0);
+                                0, link->max_message_size);
         if (err) return err;
       }
     }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/0a2d28e1/tests/python/proton_tests/engine.py
----------------------------------------------------------------------
diff --git a/tests/python/proton_tests/engine.py b/tests/python/proton_tests/engine.py
index d011210..497bb7d 100644
--- a/tests/python/proton_tests/engine.py
+++ b/tests/python/proton_tests/engine.py
@@ -746,6 +746,17 @@ class LinkTest(Test):
     assert self.snd.remote_rcv_settle_mode == Link.RCV_SECOND
     assert self.rcv.remote_snd_settle_mode == Link.SND_UNSETTLED
 
+  def test_max_message_size(self):
+    if "java" in sys.platform:
+      raise Skipped()
+    assert self.snd.max_message_size == 0
+    assert self.rcv.remote_max_message_size == 0
+    self.snd.max_message_size = 13579
+    self.snd.open()
+    self.rcv.open()
+    self.pump()
+    assert self.rcv.remote_max_message_size == 13579
+
   def test_cleanup(self):
     snd, rcv = self.link("test-link")
     snd.open()


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


[16/30] qpid-proton git commit: NO-JIRA: remove stale TODO file

Posted by ac...@apache.org.
NO-JIRA: remove stale TODO file


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

Branch: refs/heads/go1
Commit: 74d4b59f64f6172a9a2b1b719d4955381c06364c
Parents: 30d01e9
Author: Robert Gemmell <ro...@apache.org>
Authored: Thu Dec 8 11:39:48 2016 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Thu Dec 8 11:39:48 2016 +0000

----------------------------------------------------------------------
 TODO | 8 --------
 1 file changed, 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/74d4b59f/TODO
----------------------------------------------------------------------
diff --git a/TODO b/TODO
deleted file mode 100644
index 7a0cc1a..0000000
--- a/TODO
+++ /dev/null
@@ -1,8 +0,0 @@
-Qpid Proton TODO List
-==============================================================================
-
-Beyond this simple laundry list, you can find the list of bugs and
-enhancements to be fixed by going to the Apache Proton JIRA instance:
-
-    http://issues.apache.org/jira/browser/PROTON
-


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


[12/30] qpid-proton git commit: PROTON-1371: [C++ binding] Change container implementation to use handle-body - This avoids the problem of a virtual member functions in the vtable being different depending on whether compiled with C++11 or C++03.

Posted by ac...@apache.org.
PROTON-1371: [C++ binding] Change container implementation to use handle-body
- This avoids the problem of a virtual member functions in the vtable being
  different depending on whether compiled with C++11 or C++03.


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

Branch: refs/heads/go1
Commit: 1c7e70a28e547a393eea0522290d95d5d38fb7fd
Parents: 5147ed3
Author: Andrew Stitcher <as...@apache.org>
Authored: Wed Dec 7 03:58:25 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Wed Dec 7 13:23:03 2016 -0500

----------------------------------------------------------------------
 examples/cpp/CMakeLists.txt                     |  18 +-
 proton-c/bindings/cpp/CMakeLists.txt            |   2 +-
 .../bindings/cpp/include/proton/connection.hpp  |   2 +-
 .../cpp/include/proton/connection_options.hpp   |   3 +-
 .../bindings/cpp/include/proton/container.hpp   | 211 +++++--------------
 .../cpp/include/proton/default_container.hpp    |  46 +---
 proton-c/bindings/cpp/include/proton/fwd.hpp    |   1 -
 .../bindings/cpp/src/connection_options.cpp     |   4 +-
 proton-c/bindings/cpp/src/connector.cpp         |  22 +-
 proton-c/bindings/cpp/src/container.cpp         |  83 ++++++--
 proton-c/bindings/cpp/src/container_impl.cpp    |  94 ++++-----
 proton-c/bindings/cpp/src/contexts.cpp          |   2 +-
 proton-c/bindings/cpp/src/include/connector.hpp |   3 +-
 .../bindings/cpp/src/include/container_impl.hpp |  75 ++++---
 proton-c/bindings/cpp/src/include/reactor.hpp   |   2 -
 proton-c/bindings/cpp/src/receiver_options.cpp  |   2 +-
 proton-c/bindings/cpp/src/sender_options.cpp    |   2 +-
 proton-c/bindings/cpp/src/session_options.cpp   |   2 +-
 18 files changed, 221 insertions(+), 353 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/examples/cpp/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
index 4c094db..304d899 100644
--- a/examples/cpp/CMakeLists.txt
+++ b/examples/cpp/CMakeLists.txt
@@ -66,15 +66,15 @@ if(HAS_CPP11)
   endforeach()
 
   # Linux-only multi-threaded examples (TODO make these portable)
-  if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-    set(container_src mt/epoll_container.cpp)
-    foreach(example
-        broker)
-      add_executable(mt_${example} mt/${example}.cpp ${container_src})
-      target_link_libraries(mt_${example} pthread)
-    endforeach()
-    add_cpp_test(cpp-example-mt ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example_test.py -v MtBrokerTest)
-  endif()
+#   if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+#     set(container_src mt/epoll_container.cpp)
+#     foreach(example
+#         broker)
+#       add_executable(mt_${example} mt/${example}.cpp ${container_src})
+#       target_link_libraries(mt_${example} pthread)
+#     endforeach()
+#     add_cpp_test(cpp-example-mt ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example_test.py -v MtBrokerTest)
+#   endif()
 endif()
 
 add_cpp_test(cpp-example-container ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/example_test.py -v ContainerExampleTest)

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/CMakeLists.txt b/proton-c/bindings/cpp/CMakeLists.txt
index 5e0a8c7..0cc4024 100644
--- a/proton-c/bindings/cpp/CMakeLists.txt
+++ b/proton-c/bindings/cpp/CMakeLists.txt
@@ -172,7 +172,7 @@ macro(add_cpp_test test)
 endmacro(add_cpp_test)
 
 add_cpp_test(codec_test)
-add_cpp_test(engine_test)
+#add_cpp_test(engine_test)
 add_cpp_test(thread_safe_test)
 add_cpp_test(interop_test ${CMAKE_SOURCE_DIR}/tests)
 add_cpp_test(message_test)

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/include/proton/connection.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection.hpp b/proton-c/bindings/cpp/include/proton/connection.hpp
index aac3bb7..a4046be 100644
--- a/proton-c/bindings/cpp/include/proton/connection.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection.hpp
@@ -132,7 +132,7 @@ PN_CPP_CLASS_EXTERN connection : public internal::object<pn_connection_t>, publi
 
     /// @cond INTERNAL
   friend class internal::factory<connection>;
-  friend class connector;
+  friend class container;
   friend class proton::thread_safe<connection>;
     /// @endcond
 };

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/include/proton/connection_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection_options.hpp b/proton-c/bindings/cpp/include/proton/connection_options.hpp
index 6957fad..9c7923e 100644
--- a/proton-c/bindings/cpp/include/proton/connection_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection_options.hpp
@@ -156,8 +156,7 @@ class connection_options {
     internal::pn_unique_ptr<impl> impl_;
 
     /// @cond INTERNAL
-  friend class container_impl;
-  friend class connector;
+  friend class container;
   friend class io::connection_driver;
   friend class connection;
     /// @endcond

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/include/proton/container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/container.hpp b/proton-c/bindings/cpp/include/proton/container.hpp
index 6fe81dc..bc3a104 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -23,15 +23,11 @@
  */
 
 #include "./fwd.hpp"
-#include "./connection_options.hpp"
-#include "./function.hpp"
-#include "./listener.hpp"
-#include "./receiver_options.hpp"
-#include "./sender_options.hpp"
-#include "./thread_safe.hpp"
+#include "./types_fwd.hpp"
 
 #include "./internal/config.hpp"
 #include "./internal/export.hpp"
+#include "./internal/pn_unique_ptr.hpp"
 
 #include <string>
 
@@ -50,7 +46,9 @@ namespace proton {
 /// messages.
 class PN_CPP_CLASS_EXTERN container {
   public:
-    PN_CPP_EXTERN virtual ~container();
+    PN_CPP_EXTERN container(messaging_handler& h, const std::string& id="");
+    PN_CPP_EXTERN container(const std::string& id="");
+    PN_CPP_EXTERN ~container();
 
     /// Connect to `url` and send an open request to the remote peer.
     ///
@@ -63,15 +61,15 @@ class PN_CPP_CLASS_EXTERN container {
     /// The handler in the composed options is used to call
     /// proton::messaging_handler::on_connection_open() when the remote peer's
     /// open response is received.
-    virtual returned<connection> connect(const std::string& url, const connection_options &) = 0;
+    PN_CPP_EXTERN returned<connection> connect(const std::string& url, const connection_options &);
 
     /// Connect to `url` and send an open request to the remote peer.
-    virtual returned<connection> connect(const std::string& url) = 0;
+    PN_CPP_EXTERN returned<connection> connect(const std::string& url);
 
     /// @cond INTERNAL
     /// Stop listening on url, must match the url string given to listen().
     /// You can also use the proton::listener object returned by listen()
-    virtual void stop_listening(const std::string& url) = 0;
+    PN_CPP_EXTERN void stop_listening(const std::string& url);
     /// @endcond
 
     /// Start listening on url.
@@ -82,28 +80,28 @@ class PN_CPP_CLASS_EXTERN container {
     /// @param url identifies a listening url.
     /// @param lh handles listening events
     /// @return listener lets you stop listening
-    virtual listener listen(const std::string& url, listen_handler& lh) = 0;
+    PN_CPP_EXTERN listener listen(const std::string& url, listen_handler& lh);
 
     /// Listen with a fixed set of options for all accepted connections.
     /// See listen(const std::string&, listen_handler&)
-    virtual listener listen(const std::string& url, const connection_options&) = 0;
+    PN_CPP_EXTERN listener listen(const std::string& url, const connection_options&);
 
     /// Start listening on URL.
     /// New connections will use the handler from server_connection_options()
-    virtual listener listen(const std::string& url) = 0;
+    PN_CPP_EXTERN listener listen(const std::string& url);
 
     /// Run the container in this thread.
     /// Returns when the container stops.
     /// @see auto_stop() and stop().
     ///
     /// With a multithreaded container, call run() in multiple threads to create a thread pool.
-    virtual void run() = 0;
+    PN_CPP_EXTERN void run();
 
     /// If true, stop the container when all active connections and listeners are closed.
     /// If false the container will keep running till stop() is called.
     ///
     /// auto_stop is set by default when a new container is created.
-    virtual void auto_stop(bool) = 0;
+    PN_CPP_EXTERN void auto_stop(bool);
 
     /// **Experimental** - Stop the container with an error_condition
     /// err.
@@ -112,231 +110,118 @@ class PN_CPP_CLASS_EXTERN container {
     ///  - Process final handler events and injected functions
     ///  - If `!err.empty()`, handlers will receive on_transport_error
     ///  - run() will return in all threads.
-    virtual void stop(const error_condition& err) = 0;
+    PN_CPP_EXTERN void stop(const error_condition& err);
 
     /// **Experimental** - Stop the container with an empty error
     /// condition.
     ///
     /// @see stop(const error_condition&)
-    virtual void stop() = 0;
+    PN_CPP_EXTERN void stop();
 
     /// Open a connection and sender for `url`.
-    virtual returned<sender> open_sender(const std::string &url) = 0;
+    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url);
 
     /// Open a connection and sender for `url`.
     ///
     /// Supplied sender options will override the container's
     /// template options.
-    virtual returned<sender> open_sender(const std::string &url,
-                                         const proton::sender_options &o) = 0;
+    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url,
+                                         const proton::sender_options &o);
 
     /// Open a connection and sender for `url`.
     ///
     /// Supplied connection options will override the
     /// container's template options.
-    virtual returned<sender> open_sender(const std::string &url,
-                                         const connection_options &c) = 0;
+    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url,
+                                         const connection_options &c);
 
     /// Open a connection and sender for `url`.
     ///
     /// Supplied sender or connection options will override the
     /// container's template options.
-    virtual returned<sender> open_sender(const std::string &url,
+    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url,
                                          const proton::sender_options &o,
-                                         const connection_options &c) = 0;
+                                         const connection_options &c);
 
     /// Open a connection and receiver for `url`.
-    virtual returned<receiver> open_receiver(const std::string&url) = 0;
+    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url);
 
 
     /// Open a connection and receiver for `url`.
     ///
     /// Supplied receiver options will override the container's
     /// template options.
-    virtual returned<receiver> open_receiver(const std::string&url,
-                                             const proton::receiver_options &o) = 0;
+    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url,
+                                             const proton::receiver_options &o);
 
     /// Open a connection and receiver for `url`.
     ///
     /// Supplied receiver or connection options will override the
     /// container's template options.
-    virtual returned<receiver> open_receiver(const std::string&url,
-                                             const connection_options &c) = 0;
+    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url,
+                                             const connection_options &c);
 
     /// Open a connection and receiver for `url`.
     ///
     /// Supplied receiver or connection options will override the
     /// container's template options.
-    virtual returned<receiver> open_receiver(const std::string&url,
+    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url,
                                              const proton::receiver_options &o,
-                                             const connection_options &c) = 0;
+                                             const connection_options &c);
 
     /// A unique identifier for the container.
-    virtual std::string id() const = 0;
+    PN_CPP_EXTERN std::string id() const;
 
     /// Connection options that will be to outgoing connections. These
     /// are applied first and overriden by options provided in
     /// connect() and messaging_handler::on_connection_open().
-    virtual void client_connection_options(const connection_options &) = 0;
+    PN_CPP_EXTERN void client_connection_options(const connection_options &);
 
     /// @copydoc client_connection_options
-    virtual connection_options client_connection_options() const = 0;
+    PN_CPP_EXTERN connection_options client_connection_options() const;
 
     /// Connection options that will be applied to incoming
     /// connections. These are applied first and overridden by options
     /// provided in listen(), listen_handler::on_accept() and
     /// messaging_handler::on_connection_open().
-    virtual void server_connection_options(const connection_options &) = 0;
+    PN_CPP_EXTERN void server_connection_options(const connection_options &);
 
     /// @copydoc server_connection_options
-    virtual connection_options server_connection_options() const = 0;
+    PN_CPP_EXTERN connection_options server_connection_options() const;
 
     /// Sender options applied to senders created by this
     /// container. They are applied before messaging_handler::on_sender_open()
     /// and can be overridden.
-    virtual void sender_options(const class sender_options &) = 0;
+    PN_CPP_EXTERN void sender_options(const class sender_options &);
 
     /// @copydoc sender_options
-    virtual class sender_options sender_options() const = 0;
+    PN_CPP_EXTERN class sender_options sender_options() const;
 
     /// Receiver options applied to receivers created by this
     /// container. They are applied before messaging_handler::on_receiver_open()
     /// and can be overridden.
-    virtual void receiver_options(const class receiver_options &) = 0;
+    PN_CPP_EXTERN void receiver_options(const class receiver_options &);
 
     /// @copydoc receiver_options
-    virtual class receiver_options receiver_options() const = 0;
+    PN_CPP_EXTERN class receiver_options receiver_options() const;
 
-#if PN_CPP_HAS_STD_FUNCTION
-    /// Schedule a function to be called after the duration
-    virtual void schedule(duration, std::function<void()>) = 0;
-#endif
     /// Schedule a function to be called after the duration.
     /// C++03 compatible, for C++11 use the schedule(duration, std::function<void()>)
-    virtual void schedule(duration, void_function0&) = 0;
-};
-
-/// @cond INTERNAL
-/// This class is intended for container implementers, it simplifies implementing container
-/// by performing all the default actions for shortened method signatures
-///
-/// Note: This class will only be useful if you want all the ususal defaulted behaviours
-/// in your class as it makes them all non virtual, so you can't use just some of them.
-///
-/// It means that in the usual case the container interface is smaller and a little simpler.
-class PN_CPP_CLASS_EXTERN standard_container : public container {
-  public:
-    // Pull in base class functions here so we don't need to define them again
-    using container::stop;
-    using container::connect;
-    using container::listen;
-    using container::open_receiver;
-    using container::open_sender;
-
-    PN_CPP_EXTERN returned<connection> connect(const std::string& url);
-    PN_CPP_EXTERN listener listen(const std::string& url, const connection_options&);
-    PN_CPP_EXTERN listener listen(const std::string& url);
-    PN_CPP_EXTERN void stop();
-    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url);
-    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url,
-                                               const proton::sender_options &o);
-    PN_CPP_EXTERN returned<sender> open_sender(const std::string &url,
-                                               const proton::connection_options &o);
-    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url);
-    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url,
-                                                   const proton::receiver_options &o);
-    PN_CPP_EXTERN returned<receiver> open_receiver(const std::string&url,
-                                                   const proton::connection_options &o);
-};
-/// @endcond
-
-/// This is an header only class that can be used to help using containers more natural
-/// by allowing them to be treated as value types.
-template <class Ptr>
-class container_ref : public container {
-  public:
-#if PN_CPP_HAS_RVALUE_REFERENCES
-    /// Move constructor.
-    container_ref(Ptr&& p) : impl_(std::move(p)) {}
-#else
-    /// This class will only work correctly if ownership is transferred here
-    /// so using std::auto_ptr for Ptr is necessary for pre C++11
-    container_ref(Ptr p) : impl_(p) {}
-#endif
-
-    returned<connection> connect(const std::string& url, const connection_options& opts) { return impl_->connect(url, opts); }
-    returned<connection> connect(const std::string& url) { return impl_->connect(url); }
-    listener listen(const std::string& url, listen_handler& l) { return impl_->listen(url, l); }
-    listener listen(const std::string& url, const connection_options& opts) { return impl_->listen(url, opts); }
-    listener listen(const std::string& url) { return impl_->listen(url); }
-
-
-    ///@cond INTERNAL
-    void stop_listening(const std::string& url) { impl_->stop_listening(url); }
-    ///@endcond
-    void run() { impl_->run(); }
-    void auto_stop(bool set) { impl_->auto_stop(set); }
-
-    ///@copydoc container::stop
-    void stop(const error_condition& err) { impl_->stop(err); }
-    ///@copydoc container::stop
-    void stop() { impl_->stop(); }
-
-    ///@copydoc container::open_sender
-    returned<sender> open_sender(
-        const std::string &url,
-        const class sender_options &o,
-        const connection_options &c) { return impl_->open_sender(url, o, c); }
-    ///@copydoc container::open_sender
-    returned<sender> open_sender(
-        const std::string &url,
-        const class connection_options &o) { return impl_->open_sender(url, o); }
-    ///@copydoc container::open_sender
-    returned<sender> open_sender(
-        const std::string &url,
-        const class sender_options &o) { return impl_->open_sender(url, o); }
-    ///@copydoc container::open_sender
-    returned<sender> open_sender(
-        const std::string &url) { return impl_->open_sender(url); }
-
-    ///@copydoc container::open_receiver
-    returned<receiver> open_receiver(
-        const std::string&url,
-        const class receiver_options &o,
-        const connection_options &c) { return impl_->open_receiver(url, o, c); }
-    ///@copydoc container::open_receiver
-    returned<receiver> open_receiver(
-        const std::string&url,
-        const class receiver_options &o) { return impl_->open_receiver(url, o); }
-    ///@copydoc container::open_receiver
-    returned<receiver> open_receiver(
-        const std::string&url,
-        const class connection_options &o) { return impl_->open_receiver(url, o); }
-    ///@copydoc container::open_receiver
-    returned<receiver> open_receiver(
-        const std::string&url) { return impl_->open_receiver(url); }
-
-    std::string id() const { return impl_->id(); }
+    PN_CPP_EXTERN void schedule(duration, void_function0&);
 
 #if PN_CPP_HAS_STD_FUNCTION
-    PN_CPP_EXTERN void schedule(duration d, std::function<void()> f) { return impl_->schedule(d, f); }
+    /// Schedule a function to be called after the duration
+    PN_CPP_EXTERN void schedule(duration, std::function<void()>);
 #endif
-    PN_CPP_EXTERN void schedule(duration d, void_function0& f) { return impl_->schedule(d, f); }
-
-    void client_connection_options(const connection_options& c) { impl_->client_connection_options(c); }
-    connection_options client_connection_options() const { return impl_->client_connection_options(); }
-
-    void server_connection_options(const connection_options &o) { impl_->server_connection_options(o); }
-    connection_options server_connection_options() const { return impl_->server_connection_options(); }
-
-    void sender_options(const class sender_options &o) { impl_->sender_options(o); }
-    class sender_options sender_options() const { return impl_->sender_options(); }
-
-    void receiver_options(const class receiver_options & o) { impl_->receiver_options(o); }
-    class receiver_options receiver_options() const { return impl_->receiver_options(); }
 
   private:
-    Ptr impl_;
+    class impl;
+    internal::pn_unique_ptr<impl> impl_;
+
+  friend class connection_options;
+  friend class session_options;
+  friend class receiver_options;
+  friend class sender_options;
 };
 
 } // proton

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/include/proton/default_container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/default_container.hpp b/proton-c/bindings/cpp/include/proton/default_container.hpp
index 3213c02..3b3fce9 100644
--- a/proton-c/bindings/cpp/include/proton/default_container.hpp
+++ b/proton-c/bindings/cpp/include/proton/default_container.hpp
@@ -22,52 +22,8 @@
  *
  */
 
-#include "./fwd.hpp"
-#include "./container.hpp"
-
-#include "./internal/config.hpp"
-#include "./internal/export.hpp"
-
-#include <memory>
-#include <string>
-
 namespace proton {
-
-// Avoid deprecated diagnostics from auto_ptr
-#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 406 || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#endif
-/// Default container factory for C++03, not recommended unless you only have C++03
-PN_CPP_EXTERN std::auto_ptr<container> make_auto_default_container(messaging_handler&, const std::string& id="");
-/// Default container factory for C++03, not recommended unless you only have C++03
-PN_CPP_EXTERN std::auto_ptr<container> make_auto_default_container(const std::string& id="");
-
-#if PN_CPP_HAS_UNIQUE_PTR
-/// Default container factory
-PN_CPP_EXTERN std::unique_ptr<container> make_default_container(messaging_handler&, const std::string& id="");
-/// Default container factory
-PN_CPP_EXTERN std::unique_ptr<container> make_default_container(const std::string& id="");
-#endif
-
-#if PN_CPP_HAS_UNIQUE_PTR
-class default_container : public container_ref<std::unique_ptr<container> > {
-public:
-  default_container(messaging_handler& h, const std::string& id="") : container_ref(make_default_container(h, id)) {}
-  default_container(const std::string& id="") : container_ref(make_default_container(id)) {}
-};
-#else
-class default_container : public container_ref<std::auto_ptr<container> > {
-public:
-  default_container(messaging_handler& h, const std::string& id="") : container_ref<std::auto_ptr<container> >(make_auto_default_container(h, id)) {}
-  default_container(const std::string& id="") : container_ref<std::auto_ptr<container> >(make_auto_default_container(id)) {}
-};
-#endif
-
-#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 406 || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
-
+typedef class container default_container;
 } // proton
 
 #endif // PROTON_DEFAULT_CONTAINER_HPP

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/include/proton/fwd.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/fwd.hpp b/proton-c/bindings/cpp/include/proton/fwd.hpp
index c494ad3..3ed9283 100644
--- a/proton-c/bindings/cpp/include/proton/fwd.hpp
+++ b/proton-c/bindings/cpp/include/proton/fwd.hpp
@@ -28,7 +28,6 @@ class annotation_key;
 class connection;
 class connection_options;
 class container;
-class container_impl;
 class delivery;
 class error_condition;
 class event;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/connection_options.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/connection_options.cpp b/proton-c/bindings/cpp/src/connection_options.cpp
index 8567ee3..c30b98d 100644
--- a/proton-c/bindings/cpp/src/connection_options.cpp
+++ b/proton-c/bindings/cpp/src/connection_options.cpp
@@ -74,7 +74,7 @@ class connection_options::impl {
      */
     void apply_unbound(connection& c) {
         pn_connection_t *pnc = unwrap(c);
-        connector *outbound = dynamic_cast<connector*>(
+        container::impl::connector *outbound = dynamic_cast<container::impl::connector*>(
             connection_context::get(c).handler.get());
 
         // Only apply connection options if uninit.
@@ -97,7 +97,7 @@ class connection_options::impl {
         // Transport options.  pnt is NULL between reconnect attempts
         // and if there is a pipelined open frame.
         pn_connection_t *pnc = unwrap(c);
-        connector *outbound = dynamic_cast<connector*>(
+        container::impl::connector *outbound = dynamic_cast<container::impl::connector*>(
             connection_context::get(c).handler.get());
 
         pn_transport_t *pnt = pn_connection_transport(pnc);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/connector.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/connector.cpp b/proton-c/bindings/cpp/src/connector.cpp
index 045d4de..0467d60 100644
--- a/proton-c/bindings/cpp/src/connector.cpp
+++ b/proton-c/bindings/cpp/src/connector.cpp
@@ -37,18 +37,18 @@
 
 namespace proton {
 
-connector::connector(connection&c, const connection_options& options, const url& a) :
+container::impl::connector::connector(connection&c, const connection_options& options, const url& a) :
     connection_(c), options_(options), address_(a), reconnect_timer_(0)
 {}
 
-connector::~connector() { delete reconnect_timer_; }
+container::impl::connector::~connector() { delete reconnect_timer_; }
 
-void connector::reconnect_timer(const class reconnect_timer &rt) {
+void container::impl::connector::reconnect_timer(const class reconnect_timer &rt) {
     delete reconnect_timer_;
     reconnect_timer_ = new class reconnect_timer(rt);
 }
 
-void connector::connect() {
+void container::impl::connector::connect() {
     pn_transport_t *pnt = pn_transport();
     transport t(make_wrapper(pnt));
     pn_transport_bind(pnt, unwrap(connection_));
@@ -57,24 +57,24 @@ void connector::connect() {
     options_.apply_bound(connection_);
 }
 
-void connector::on_connection_local_open(proton_event &) {
+void container::impl::connector::on_connection_local_open(proton_event &) {
     connect();
 }
 
-void connector::on_connection_remote_open(proton_event &) {
+void container::impl::connector::on_connection_remote_open(proton_event &) {
     if (reconnect_timer_) {
         reconnect_timer_->reset();
     }
 }
 
-void connector::on_connection_init(proton_event &) {
+void container::impl::connector::on_connection_init(proton_event &) {
 }
 
-void connector::on_transport_tail_closed(proton_event &e) {
+void container::impl::connector::on_transport_tail_closed(proton_event &e) {
     on_transport_closed(e);
 }
 
-void connector::on_transport_closed(proton_event &) {
+void container::impl::connector::on_transport_closed(proton_event &) {
     if (!connection_) return;
     if (connection_.active()) {
         if (reconnect_timer_) {
@@ -88,7 +88,7 @@ void connector::on_transport_closed(proton_event &) {
                 }
                 else {
                     // log "Disconnected, reconnecting in " <<  delay << " milliseconds"
-                    container_impl::schedule(connection_.container(), delay, this);
+                    container::impl::schedule(connection_.container(), delay, this);
                     return;
                 }
             }
@@ -98,7 +98,7 @@ void connector::on_transport_closed(proton_event &) {
     connection_  = 0;
 }
 
-void connector::on_timer_task(proton_event &) {
+void container::impl::connector::on_timer_task(proton_event &) {
     connect();
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/container.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container.cpp b/proton-c/bindings/cpp/src/container.cpp
index 914ee56..3daa925 100644
--- a/proton-c/bindings/cpp/src/container.cpp
+++ b/proton-c/bindings/cpp/src/container.cpp
@@ -22,41 +22,46 @@
 #include "proton/container.hpp"
 #include "proton/error_condition.hpp"
 
+#include "proton/error_condition.hpp"
 #include "proton/listen_handler.hpp"
+#include "proton/listener.hpp"
+#include "proton/thread_safe.hpp"
+
+#include "container_impl.hpp"
 
 namespace proton {
 
+container::container(messaging_handler& h, const std::string& id) :
+    impl_(new impl(*this, id, &h)) {}
+container::container(const std::string& id) :
+    impl_(new impl(*this, id)) {}
 container::~container() {}
 
-/// Functions defined here are convenience overrides that can be trivially
-/// defined in terms of other pure virtual functions on container. Don't make
-/// container implementers wade thru all this boiler-plate.
-
-returned<connection> standard_container::connect(const std::string &url) {
+returned<connection> container::connect(const std::string &url) {
     return connect(url, connection_options());
 }
 
-returned<sender> standard_container::open_sender(const std::string &url) {
+returned<sender> container::open_sender(const std::string &url) {
     return open_sender(url, proton::sender_options(), connection_options());
 }
 
-returned<sender> standard_container::open_sender(const std::string &url, const proton::sender_options &lo) {
+returned<sender> container::open_sender(const std::string &url, const proton::sender_options &lo) {
     return open_sender(url, lo, connection_options());
 }
 
-returned<sender> standard_container::open_sender(const std::string &url, const proton::connection_options &co) {
+returned<sender> container::open_sender(const std::string &url, const proton::connection_options &co) {
     return open_sender(url, sender_options(), co);
 }
 
-returned<receiver> standard_container::open_receiver(const std::string &url) {
+returned<receiver> container::open_receiver(const std::string &url) {
     return open_receiver(url, proton::receiver_options(), connection_options());
 }
 
-returned<receiver> standard_container::open_receiver(const std::string &url, const proton::receiver_options &lo) {
+returned<receiver> container::open_receiver(const std::string &url, const proton::receiver_options &lo) {
     return open_receiver(url, lo, connection_options());
 }
 
-returned<receiver> standard_container::open_receiver(const std::string &url, const proton::connection_options &co) {
+returned<receiver> container::open_receiver(const std::string &url, const proton::connection_options &co) {
     return open_receiver(url, receiver_options(), co);
 }
 
@@ -69,17 +74,65 @@ namespace{
     };
 }
 
-listener standard_container::listen(const std::string& url, const connection_options& opts) {
+listener container::listen(const std::string& url, const connection_options& opts) {
     // Note: listen_opts::on_close() calls delete(this) so this is not a leak.
-    // The container will always call on_closed() even if there are errors or exceptions. 
+    // The container will always call on_closed() even if there are errors or exceptions.
     listen_opts* lh = new listen_opts(opts);
     return listen(url, *lh);
 }
 
-listener standard_container::listen(const std::string &url) {
+listener container::listen(const std::string &url) {
     return listen(url, connection_options());
 }
 
-void standard_container::stop() { stop(error_condition()); }
+void container::stop() { stop(error_condition()); }
+
+returned<connection> container::connect(const std::string& url, const connection_options& opts) {
+    return impl_->connect(url, opts);
+}
+
+listener container::listen(const std::string& url, listen_handler& l) { return impl_->listen(url, l); }
+
+void container::stop_listening(const std::string& url) { impl_->stop_listening(url); }
+
+void container::run() { impl_->run(); }
+
+void container::auto_stop(bool set) { impl_->auto_stop(set); }
+
+void container::stop(const error_condition& err) { impl_->stop(err); }
+
+returned<sender> container::open_sender(
+    const std::string &url,
+    const class sender_options &o,
+    const connection_options &c) {
+    return impl_->open_sender(url, o, c);
+}
+
+returned<receiver> container::open_receiver(
+    const std::string&url,
+    const class receiver_options &o,
+    const connection_options &c) {
+    return impl_->open_receiver(url, o, c);
+}
+
+std::string container::id() const { return impl_->id(); }
+
+void container::schedule(duration d, void_function0& f) { return impl_->schedule(d, f); }
+
+#if PN_CPP_HAS_STD_FUNCTION
+void container::schedule(duration d, std::function<void()> f) { return impl_->schedule(d, f); }
+#endif
+
+void container::client_connection_options(const connection_options& c) { impl_->client_connection_options(c); }
+connection_options container::client_connection_options() const { return impl_->client_connection_options(); }
+
+void container::server_connection_options(const connection_options &o) { impl_->server_connection_options(o); }
+connection_options container::server_connection_options() const { return impl_->server_connection_options(); }
+
+void container::sender_options(const class sender_options &o) { impl_->sender_options(o); }
+class sender_options container::sender_options() const { return impl_->sender_options(); }
+
+void container::receiver_options(const class receiver_options & o) { impl_->receiver_options(o); }
+class receiver_options container::receiver_options() const { return impl_->receiver_options(); }
 
 } // namespace proton

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/container_impl.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container_impl.cpp b/proton-c/bindings/cpp/src/container_impl.cpp
index a818c0f..5f13b82 100644
--- a/proton-c/bindings/cpp/src/container_impl.cpp
+++ b/proton-c/bindings/cpp/src/container_impl.cpp
@@ -19,16 +19,17 @@
  *
  */
 
-#include "proton/default_container.hpp"
 #include "proton/connection_options.hpp"
 #include "proton/connection.hpp"
-#include "proton/session.hpp"
 #include "proton/error.hpp"
 #include "proton/event_loop.hpp"
-#include "proton/sender.hpp"
+#include "proton/listener.hpp"
 #include "proton/receiver.hpp"
+#include "proton/sender.hpp"
+#include "proton/session.hpp"
 #include "proton/ssl.hpp"
 #include "proton/sasl.hpp"
+#include "proton/thread_safe.hpp"
 #include "proton/transport.hpp"
 #include "proton/url.hpp"
 #include "proton/uuid.hpp"
@@ -49,7 +50,7 @@
 
 namespace proton {
 
-class handler_context {
+class container::impl::handler_context {
   public:
     static handler_context& get(pn_handler_t* h) {
         return *reinterpret_cast<handler_context*>(pn_handler_mem(h));
@@ -77,13 +78,13 @@ class handler_context {
 };
 
 // Used to sniff for connector events before the reactor's global handler sees them.
-class override_handler : public proton_handler
+class container::impl::override_handler : public proton_handler
 {
   public:
     internal::pn_ptr<pn_handler_t> base_handler;
-    container_impl &container_impl_;
+    container::impl &container_impl_;
 
-    override_handler(pn_handler_t *h, container_impl &c) : base_handler(h), container_impl_(c) {}
+    override_handler(pn_handler_t *h, container::impl &c) : base_handler(h), container_impl_(c) {}
 
     virtual void on_unhandled(proton_event &pe) {
         proton_event::event_type type = pe.type();
@@ -107,24 +108,25 @@ class override_handler : public proton_handler
     }
 };
 
-internal::pn_ptr<pn_handler_t> container_impl::cpp_handler(proton_handler *h) {
+internal::pn_ptr<pn_handler_t> container::impl::cpp_handler(proton_handler *h) {
     pn_handler_t *handler = h ? pn_handler_new(&handler_context::dispatch,
                                                sizeof(class handler_context),
                                                &handler_context::cleanup) : 0;
     if (handler) {
         handler_context &hc = handler_context::get(handler);
-        hc.container_ = this;
+        hc.container_ = &container_;
         hc.handler_ = h;
     }
     return internal::take_ownership(handler);
 }
 
-container_impl::container_impl(const std::string& id, messaging_handler *mh) :
+container::impl::impl(container& c, const std::string& id, messaging_handler *mh) :
+    container_(c),
     reactor_(reactor::create()),
     id_(id.empty() ? uuid::random().str() : id),
     auto_stop_(true)
 {
-    container_context::set(reactor_, *this);
+    container_context::set(reactor_, container_);
 
     // Set our own global handler that "subclasses" the existing one
     pn_handler_t *global_handler = reactor_.pn_global_handler();
@@ -153,7 +155,7 @@ void close_acceptor(acceptor a) {
 }
 }
 
-container_impl::~container_impl() {
+container::impl::~impl() {
     for (acceptors::iterator i = acceptors_.begin(); i != acceptors_.end(); ++i)
         close_acceptor(i->second);
 }
@@ -177,7 +179,7 @@ struct immediate_event_loop : public event_loop {
 };
 }
 
-returned<connection> container_impl::connect(const std::string &urlstr, const connection_options &user_opts) {
+returned<connection> container::impl::connect(const std::string &urlstr, const connection_options &user_opts) {
     connection_options opts = client_connection_options(); // Defaults
     opts.update(user_opts);
     messaging_handler* mh = opts.handler();
@@ -207,7 +209,7 @@ returned<connection> container_impl::connect(const std::string &urlstr, const co
     return make_thread_safe(conn);
 }
 
-returned<sender> container_impl::open_sender(const std::string &url, const proton::sender_options &o1, const connection_options &o2) {
+returned<sender> container::impl::open_sender(const std::string &url, const proton::sender_options &o1, const connection_options &o2) {
     proton::sender_options lopts(sender_options_);
     lopts.update(o1);
     connection_options copts(client_connection_options_);
@@ -216,7 +218,7 @@ returned<sender> container_impl::open_sender(const std::string &url, const proto
     return make_thread_safe(conn.default_session().open_sender(proton::url(url).path(), lopts));
 }
 
-returned<receiver> container_impl::open_receiver(const std::string &url, const proton::receiver_options &o1, const connection_options &o2) {
+returned<receiver> container::impl::open_receiver(const std::string &url, const proton::receiver_options &o1, const connection_options &o2) {
     proton::receiver_options lopts(receiver_options_);
     lopts.update(o1);
     connection_options copts(client_connection_options_);
@@ -226,7 +228,7 @@ returned<receiver> container_impl::open_receiver(const std::string &url, const p
         conn.default_session().open_receiver(proton::url(url).path(), lopts));
 }
 
-listener container_impl::listen(const std::string& url, listen_handler& lh) {
+listener container::impl::listen(const std::string& url, listen_handler& lh) {
     if (acceptors_.find(url) != acceptors_.end())
         throw error("already listening on " + url);
     connection_options opts = server_connection_options(); // Defaults
@@ -241,9 +243,9 @@ listener container_impl::listen(const std::string& url, listen_handler& lh) {
 
     proton::url u(url);
     pn_acceptor_t *acptr = pn_reactor_acceptor(
-        reactor_.pn_object(), u.host().c_str(), u.port().c_str(), chandler.get());
+        unwrap(reactor_), u.host().c_str(), u.port().c_str(), chandler.get());
     if (!acptr) {
-        std::string err(pn_error_text(pn_reactor_error(reactor_.pn_object())));
+        std::string err(pn_error_text(pn_reactor_error(unwrap(reactor_))));
         lh.on_error(err);
         lh.on_close();
         throw error(err);
@@ -255,23 +257,26 @@ listener container_impl::listen(const std::string& url, listen_handler& lh) {
     lc.ssl = u.scheme() == url::AMQPS;
     listener_context::get(acptr).listen_handler_ = &lh;
     acceptors_[url] = make_wrapper(acptr);
-    return listener(*this, url);
+    return listener(container_, url);
 }
 
-void container_impl::stop_listening(const std::string& url) {
+void container::impl::stop_listening(const std::string& url) {
     acceptors::iterator i = acceptors_.find(url);
     if (i != acceptors_.end())
         close_acceptor(i->second);
 }
 
-void container_impl::schedule(container& c, int delay, proton_handler *h) {
-    container_impl& ci = static_cast<container_impl&>(c);
+void container::impl::schedule(impl& ci, int delay, proton_handler *h) {
     internal::pn_ptr<pn_handler_t> task_handler;
     if (h)
         task_handler = ci.cpp_handler(h);
     ci.reactor_.schedule(delay, task_handler.get());
 }
 
+void container::impl::schedule(container& c, int delay, proton_handler *h) {
+    schedule(*c.impl_.get(), delay, h);
+}
+
 namespace {
 // Abstract base for timer_handler_std and timer_handler_03
 struct timer_handler : public proton_handler, public void_function0 {
@@ -291,7 +296,7 @@ struct timer_handler_03 : public timer_handler {
 };
 }
 
-void container_impl::schedule(duration delay, void_function0& f) {
+void container::impl::schedule(duration delay, void_function0& f) {
     schedule(*this, delay.milliseconds(), new timer_handler_03(f));
 }
 
@@ -304,28 +309,28 @@ struct timer_handler_std : public timer_handler {
 };
 }
 
-void container_impl::schedule(duration delay, std::function<void()> f) {
+void container::impl::schedule(duration delay, std::function<void()> f) {
     schedule(*this, delay.milliseconds(), new timer_handler_std(f));
 }
 #endif
 
-void container_impl::client_connection_options(const connection_options &opts) {
+void container::impl::client_connection_options(const connection_options &opts) {
     client_connection_options_ = opts;
 }
 
-void container_impl::server_connection_options(const connection_options &opts) {
+void container::impl::server_connection_options(const connection_options &opts) {
     server_connection_options_ = opts;
 }
 
-void container_impl::sender_options(const proton::sender_options &opts) {
+void container::impl::sender_options(const proton::sender_options &opts) {
     sender_options_ = opts;
 }
 
-void container_impl::receiver_options(const proton::receiver_options &opts) {
+void container::impl::receiver_options(const proton::receiver_options &opts) {
     receiver_options_ = opts;
 }
 
-void container_impl::configure_server_connection(connection &c) {
+void container::impl::configure_server_connection(connection &c) {
     pn_acceptor_t *pnp = pn_connection_acceptor(unwrap(c));
     listener_context &lc(listener_context::get(pnp));
     pn_connection_set_container(unwrap(c), id_.c_str());
@@ -345,44 +350,19 @@ void container_impl::configure_server_connection(connection &c) {
     connection_context::get(c).event_loop.reset(new immediate_event_loop);
 }
 
-void container_impl::run() {
+void container::impl::run() {
     do {
         reactor_.run();
     } while (!auto_stop_);
 }
 
-void container_impl::stop(const error_condition&) {
+void container::impl::stop(const error_condition&) {
     reactor_.stop();
     auto_stop_ = true;
 }
 
-void container_impl::auto_stop(bool set) {
+void container::impl::auto_stop(bool set) {
     auto_stop_ = set;
 }
 
-#if PN_CPP_HAS_UNIQUE_PTR
-std::unique_ptr<container> make_default_container(messaging_handler& h, const std::string& id) {
-    return std::unique_ptr<container>(new container_impl(id, &h));
-}
-std::unique_ptr<container> make_default_container(const std::string& id) {
-  return std::unique_ptr<container>(new container_impl(id));
-}
-#endif
-
-// Avoid deprecated diagnostics from auto_ptr
-#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 406 || defined(__clang__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#endif
-
-std::auto_ptr<container> make_auto_default_container(messaging_handler& h, const std::string& id) {
-  return std::auto_ptr<container>(new container_impl(id, &h));
-}
-std::auto_ptr<container> make_auto_default_container(const std::string& id) {
-  return std::auto_ptr<container>(new container_impl(id));
-}
-
-#if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 406 || defined(__clang__)
-#pragma GCC diagnostic pop
-#endif
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/contexts.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/contexts.cpp b/proton-c/bindings/cpp/src/contexts.cpp
index 697df66..231506f 100644
--- a/proton-c/bindings/cpp/src/contexts.cpp
+++ b/proton-c/bindings/cpp/src/contexts.cpp
@@ -82,7 +82,7 @@ context::id connection_context::id(const connection& c) {
 }
 
 void container_context::set(const reactor& r, container& c) {
-    set_context(pn_reactor_attachments(r.pn_object()), CONTAINER_CONTEXT, PN_VOID, &c);
+    set_context(pn_reactor_attachments(unwrap(r)), CONTAINER_CONTEXT, PN_VOID, &c);
 }
 
 container &container_context::get(pn_reactor_t *pn_reactor) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/include/connector.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/connector.hpp b/proton-c/bindings/cpp/src/include/connector.hpp
index 5b6707a..6bcd0db 100644
--- a/proton-c/bindings/cpp/src/include/connector.hpp
+++ b/proton-c/bindings/cpp/src/include/connector.hpp
@@ -28,6 +28,7 @@
 #include <proton/reactor.h>
 #include "proton/url.hpp"
 
+#include "container_impl.hpp"
 #include "proton_handler.hpp"
 
 #include <string>
@@ -37,7 +38,7 @@ namespace proton {
 
 class reconnect_timer;
 
-class connector : public proton_handler
+class container::impl::connector : public proton_handler
 {
   public:
     connector(connection &c, const connection_options &options, const url&);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/include/container_impl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/container_impl.hpp b/proton-c/bindings/cpp/src/include/container_impl.hpp
index b0d9634..7443150 100644
--- a/proton-c/bindings/cpp/src/include/container_impl.hpp
+++ b/proton-c/bindings/cpp/src/include/container_impl.hpp
@@ -49,51 +49,49 @@ class acceptor;
 class url;
 class listen_handler;
 
-class container_impl : public standard_container {
+class container::impl {
   public:
-    // Pull in base class functions here so that name search finds all the overloads
-    using standard_container::stop;
-    using standard_container::connect;
-    using standard_container::listen;
-    using standard_container::open_receiver;
-    using standard_container::open_sender;
-
-    container_impl(const std::string& id, messaging_handler* = 0);
-    ~container_impl();
-    std::string id() const PN_CPP_OVERRIDE { return id_; }
-    returned<connection> connect(const std::string&, const connection_options&) PN_CPP_OVERRIDE;
+    impl(container& c, const std::string& id, messaging_handler* = 0);
+    ~impl();
+    std::string id() const { return id_; }
+    returned<connection> connect(const std::string&, const connection_options&);
     returned<sender> open_sender(
-        const std::string&, const proton::sender_options &, const connection_options &) PN_CPP_OVERRIDE;
+        const std::string&, const proton::sender_options &, const connection_options &);
     returned<receiver> open_receiver(
-        const std::string&, const proton::receiver_options &, const connection_options &) PN_CPP_OVERRIDE;
-    listener listen(const std::string&, listen_handler& lh) PN_CPP_OVERRIDE;
-    void stop_listening(const std::string&) PN_CPP_OVERRIDE;
-    void client_connection_options(const connection_options &) PN_CPP_OVERRIDE;
-    connection_options client_connection_options() const PN_CPP_OVERRIDE { return client_connection_options_; }
-    void server_connection_options(const connection_options &) PN_CPP_OVERRIDE;
-    connection_options server_connection_options() const PN_CPP_OVERRIDE { return server_connection_options_; }
-    void sender_options(const proton::sender_options&) PN_CPP_OVERRIDE;
-    class sender_options sender_options() const PN_CPP_OVERRIDE { return sender_options_; }
-    void receiver_options(const proton::receiver_options&) PN_CPP_OVERRIDE;
-    class receiver_options receiver_options() const PN_CPP_OVERRIDE { return receiver_options_; }
-    void run() PN_CPP_OVERRIDE;
-    void stop(const error_condition& err) PN_CPP_OVERRIDE;
-    void auto_stop(bool set) PN_CPP_OVERRIDE;
+        const std::string&, const proton::receiver_options &, const connection_options &);
+    listener listen(const std::string&, listen_handler& lh);
+    void stop_listening(const std::string&);
+    void client_connection_options(const connection_options &);
+    connection_options client_connection_options() const { return client_connection_options_; }
+    void server_connection_options(const connection_options &);
+    connection_options server_connection_options() const { return server_connection_options_; }
+    void sender_options(const proton::sender_options&);
+    class sender_options sender_options() const { return sender_options_; }
+    void receiver_options(const proton::receiver_options&);
+    class receiver_options receiver_options() const { return receiver_options_; }
+    void run();
+    void stop(const error_condition& err);
+    void auto_stop(bool set);
+    void schedule(duration, void_function0&);
 #if PN_CPP_HAS_STD_FUNCTION
-    void schedule(duration, std::function<void()>) PN_CPP_OVERRIDE;
+    void schedule(duration, std::function<void()>);
 #endif
-    void schedule(duration, void_function0&) PN_CPP_OVERRIDE;
 
-    // non-interface functions
+    // non-interface functionality
+    class connector;
+
     void configure_server_connection(connection &c);
+    static void schedule(impl& ci, int delay, proton_handler *h);
     static void schedule(container& c, int delay, proton_handler *h);
     template <class T> static void set_handler(T s, messaging_handler* h);
 
   private:
-    internal::pn_ptr<pn_handler_t> cpp_handler(proton_handler *h);
+    class handler_context;
+    class override_handler;
 
-    typedef std::map<std::string, acceptor> acceptors;
+    internal::pn_ptr<pn_handler_t> cpp_handler(proton_handler *h);
 
+    container& container_;
     reactor reactor_;
     // Keep a list of all the handlers used by the container so they last as long as the container
     std::list<internal::pn_unique_ptr<proton_handler> > handlers_;
@@ -102,19 +100,18 @@ class container_impl : public standard_container {
     connection_options server_connection_options_;
     proton::sender_options sender_options_;
     proton::receiver_options receiver_options_;
-    bool auto_stop_;
+    typedef std::map<std::string, acceptor> acceptors;
     acceptors acceptors_;
-
-  friend class messaging_adapter;
+    bool auto_stop_;
 };
 
 template <class T>
-void container_impl::set_handler(T s, messaging_handler* mh) {
+void container::impl::set_handler(T s, messaging_handler* mh) {
     pn_record_t *record = internal::get_attachments(unwrap(s));
     proton_handler* h = new messaging_adapter(*mh);
-    container_impl& ci = static_cast<container_impl&>(s.container());
-    ci.handlers_.push_back(h);
-    pn_record_set_handler(record, ci.cpp_handler(h).get());
+    impl* ci = s.container().impl_.get();
+    ci->handlers_.push_back(h);
+    pn_record_set_handler(record, ci->cpp_handler(h).get());
 }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/include/reactor.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/reactor.hpp b/proton-c/bindings/cpp/src/include/reactor.hpp
index 7aba5f0..07678e4 100644
--- a/proton-c/bindings/cpp/src/include/reactor.hpp
+++ b/proton-c/bindings/cpp/src/include/reactor.hpp
@@ -90,8 +90,6 @@ class reactor : public internal::object<pn_reactor_t> {
     bool quiesced();
     void yield();
 
-  friend class container_impl;
-  friend class container_context;
   friend class internal::factory<reactor>;
 };
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/receiver_options.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/receiver_options.cpp b/proton-c/bindings/cpp/src/receiver_options.cpp
index f1fcf80..4a4d80f 100644
--- a/proton-c/bindings/cpp/src/receiver_options.cpp
+++ b/proton-c/bindings/cpp/src/receiver_options.cpp
@@ -75,7 +75,7 @@ class receiver_options::impl {
     void apply(receiver& r) {
         if (r.uninitialized()) {
             if (delivery_mode.set) set_delivery_mode(r, delivery_mode.value);
-            if (handler.set && handler.value) container_impl::set_handler(r, handler.value);
+            if (handler.set && handler.value) container::impl::set_handler(r, handler.value);
             if (auto_settle.set) get_context(r).auto_settle = auto_settle.value;
             if (auto_accept.set) get_context(r).auto_accept = auto_accept.value;
             if (credit_window.set) get_context(r).credit_window = credit_window.value;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/sender_options.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/sender_options.cpp b/proton-c/bindings/cpp/src/sender_options.cpp
index bed4a69..4f501e6 100644
--- a/proton-c/bindings/cpp/src/sender_options.cpp
+++ b/proton-c/bindings/cpp/src/sender_options.cpp
@@ -69,7 +69,7 @@ class sender_options::impl {
     void apply(sender& s) {
         if (s.uninitialized()) {
             if (delivery_mode.set) set_delivery_mode(s, delivery_mode.value);
-            if (handler.set && handler.value) container_impl::set_handler(s, handler.value);
+            if (handler.set && handler.value) container::impl::set_handler(s, handler.value);
             if (auto_settle.set) get_context(s).auto_settle = auto_settle.value;
             if (source.set) {
                 proton::source local_s(make_wrapper<proton::source>(pn_link_source(unwrap(s))));

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/1c7e70a2/proton-c/bindings/cpp/src/session_options.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/session_options.cpp b/proton-c/bindings/cpp/src/session_options.cpp
index 8c563d8..2147fd4 100644
--- a/proton-c/bindings/cpp/src/session_options.cpp
+++ b/proton-c/bindings/cpp/src/session_options.cpp
@@ -47,7 +47,7 @@ class session_options::impl {
 
     void apply(session& s) {
         if (s.uninitialized()) {
-            if (handler.set && handler.value) container_impl::set_handler(s, handler.value);
+            if (handler.set && handler.value) container::impl::set_handler(s, handler.value);
         }
     }
 


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