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 2015/10/23 16:36:39 UTC

[37/50] [abbrv] qpid-proton git commit: NO-JIRA: c++ const correctness and other minor fixes.

NO-JIRA: c++ const correctness and other minor fixes.

- Made inspector functions const
- Removed link_prefix, generated generated link names are XXX + "@" + container.id()
- Removed redundant terminus::has_* functions.
- Removed redundant 'acking' class


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

Branch: refs/heads/go1
Commit: cf221b45793fd1d1e12a4f470483c5b4fc2ad39d
Parents: d72f161
Author: Alan Conway <ac...@redhat.com>
Authored: Tue Oct 20 13:22:09 2015 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Tue Oct 20 14:22:40 2015 -0400

----------------------------------------------------------------------
 examples/cpp/server_direct.cpp                  |  2 +-
 proton-c/bindings/cpp/include/proton/acking.hpp | 50 --------------------
 .../cpp/include/proton/blocking_connection.hpp  |  4 +-
 .../cpp/include/proton/blocking_sender.hpp      |  2 +-
 .../bindings/cpp/include/proton/connection.hpp  | 12 ++---
 .../bindings/cpp/include/proton/container.hpp   | 13 ++---
 proton-c/bindings/cpp/include/proton/data.hpp   |  2 +-
 .../bindings/cpp/include/proton/delivery.hpp    | 12 ++---
 .../bindings/cpp/include/proton/endpoint.hpp    | 20 ++++----
 proton-c/bindings/cpp/include/proton/event.hpp  | 14 +++---
 proton-c/bindings/cpp/include/proton/link.hpp   | 41 +++++++---------
 .../bindings/cpp/include/proton/message.hpp     | 16 ++++---
 .../bindings/cpp/include/proton/reactor.hpp     |  2 +-
 .../cpp/include/proton/request_response.hpp     |  2 +-
 .../bindings/cpp/include/proton/session.hpp     | 14 +++---
 .../bindings/cpp/include/proton/terminus.hpp    | 10 ++--
 .../bindings/cpp/include/proton/transport.hpp   |  2 +-
 .../bindings/cpp/src/blocking_connection.cpp    |  4 +-
 proton-c/bindings/cpp/src/blocking_sender.cpp   |  2 +-
 proton-c/bindings/cpp/src/connection.cpp        | 12 ++---
 proton-c/bindings/cpp/src/container.cpp         |  7 +--
 proton-c/bindings/cpp/src/container_impl.cpp    |  2 +-
 proton-c/bindings/cpp/src/container_impl.hpp    |  1 -
 proton-c/bindings/cpp/src/data.cpp              |  2 +
 proton-c/bindings/cpp/src/delivery.cpp          | 13 ++---
 proton-c/bindings/cpp/src/event.cpp             | 14 +++---
 proton-c/bindings/cpp/src/link.cpp              | 31 ++++++------
 proton-c/bindings/cpp/src/message.cpp           |  4 +-
 proton-c/bindings/cpp/src/messaging_event.cpp   | 12 ++---
 proton-c/bindings/cpp/src/messaging_event.hpp   | 12 ++---
 proton-c/bindings/cpp/src/proton_event.cpp      | 14 +++---
 proton-c/bindings/cpp/src/proton_event.hpp      | 16 +++----
 proton-c/bindings/cpp/src/request_response.cpp  |  2 +-
 proton-c/bindings/cpp/src/session.cpp           |  6 +--
 proton-c/bindings/cpp/src/terminus.cpp          | 10 ++--
 proton-c/bindings/cpp/src/transport.cpp         |  2 +-
 36 files changed, 165 insertions(+), 219 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/examples/cpp/server_direct.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/server_direct.cpp b/examples/cpp/server_direct.cpp
index 2b6d8e2..76bb5ad 100644
--- a/examples/cpp/server_direct.cpp
+++ b/examples/cpp/server_direct.cpp
@@ -63,7 +63,7 @@ class server : public proton::messaging_handler {
 
     void on_link_opening(proton::event& e) {
         proton::link& link = e.link();
-        if (link.sender() && link.has_remote_source() && link.remote_source().dynamic()) {
+        if (link.sender() && link.remote_source().dynamic()) {
             link.source().address(generate_address());
             senders[link.source().address()] = link.sender()->ptr();
         }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/acking.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/acking.hpp b/proton-c/bindings/cpp/include/proton/acking.hpp
deleted file mode 100644
index 8a6d75b..0000000
--- a/proton-c/bindings/cpp/include/proton/acking.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef PROTON_CPP_ACKING_H
-#define PROTON_CPP_ACKING_H
-
-/*
- *
- * 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/export.hpp"
-#include "proton/delivery.hpp"
-
-namespace proton {
-
-
-/** acking provides simple functions to acknowledge, or settle, a delivery */
-class acking
-{
-  public:
-    /** accept a delivery */
-    PN_CPP_EXTERN virtual void accept(delivery &d);
-    /** reject a delivery */
-    PN_CPP_EXTERN virtual void reject(delivery &d);
-    /** release a delivery. Mark it delivery::MODIFIED if it has already been delivered,
-     * delivery::RELEASED otherwise.
-     */
-    PN_CPP_EXTERN virtual void release(delivery &d, bool delivered=true);
-    /** settle a delivery with the given delivery::state */
-    PN_CPP_EXTERN virtual void settle(delivery &d, delivery::state s = delivery::REJECTED);
-};
-
-
-}
-
-#endif  /*!PROTON_CPP_ACKING_H*/

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/blocking_connection.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/blocking_connection.hpp b/proton-c/bindings/cpp/include/proton/blocking_connection.hpp
index f7787cb..87e9b2e 100644
--- a/proton-c/bindings/cpp/include/proton/blocking_connection.hpp
+++ b/proton-c/bindings/cpp/include/proton/blocking_connection.hpp
@@ -42,8 +42,8 @@ class blocking_connection
     PN_CPP_EXTERN blocking_connection(const proton::url &url, duration timeout = duration::FOREVER);
     PN_CPP_EXTERN ~blocking_connection();
     PN_CPP_EXTERN void close();
-    PN_CPP_EXTERN duration timeout();
-    PN_CPP_EXTERN class connection& connection();
+    PN_CPP_EXTERN duration timeout() const;
+    PN_CPP_EXTERN class connection& connection() const;
 
   private:
     blocking_connection(const blocking_connection&);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/blocking_sender.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/blocking_sender.hpp b/proton-c/bindings/cpp/include/proton/blocking_sender.hpp
index 713ae6d..b7c2697 100644
--- a/proton-c/bindings/cpp/include/proton/blocking_sender.hpp
+++ b/proton-c/bindings/cpp/include/proton/blocking_sender.hpp
@@ -42,7 +42,7 @@ class blocking_sender : public blocking_link
     PN_CPP_EXTERN delivery& send(const message &msg);
     PN_CPP_EXTERN delivery& send(const message &msg, duration timeout);
 
-    PN_CPP_EXTERN class sender& sender();
+    PN_CPP_EXTERN class sender& sender() const;
 };
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 c7ce447..efbd549 100644
--- a/proton-c/bindings/cpp/include/proton/connection.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection.hpp
@@ -39,9 +39,9 @@ class connection : public counted_facade<pn_connection_t, connection, endpoint>
 {
   public:
     ///@name getters @{
-    PN_CPP_EXTERN class transport& transport();
-    PN_CPP_EXTERN class container& container();
-    PN_CPP_EXTERN std::string hostname();
+    PN_CPP_EXTERN class transport& transport() const;
+    PN_CPP_EXTERN class container& container() const;
+    PN_CPP_EXTERN std::string host() const;
     ///@}
 
     /** Initiate local open, not complete till messaging_handler::on_connection_opened()
@@ -67,13 +67,13 @@ class connection : public counted_facade<pn_connection_t, connection, endpoint>
     PN_CPP_EXTERN receiver& open_receiver(const std::string &addr, bool dynamic=false, handler *h=0);
 
     /** Return links on this connection matching the state mask. */
-    PN_CPP_EXTERN link_range find_links(endpoint::state mask);
+    PN_CPP_EXTERN link_range find_links(endpoint::state mask) const;
 
     /** Return sessions on this connection matching the state mask. */
-    PN_CPP_EXTERN session_range find_sessions(endpoint::state mask);
+    PN_CPP_EXTERN session_range find_sessions(endpoint::state mask) const;
 
     /** Get the endpoint state */
-    PN_CPP_EXTERN endpoint::state state();
+    PN_CPP_EXTERN endpoint::state state() const;
 };
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 ddb12e9..059416f 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -43,6 +43,9 @@ class container_impl;
 
 /**
  * Top level container for connections and other objects, runs the event loop.
+ *
+ * Note that by default, links belonging to the container have generated link-names
+ * of the form
  */
 class container
 {
@@ -71,16 +74,10 @@ class container
     PN_CPP_EXTERN receiver& open_receiver(const url &);
 
     /// Identifier for the container
-    PN_CPP_EXTERN std::string id();
-
-    /// Set the prefix to be used when generating link names. @see proton::session
-    PN_CPP_EXTERN void link_prefix(const std::string&);
-
-    /// Get the prefix to be used when generating link names. @see proton::session
-    PN_CPP_EXTERN std::string link_prefix();
+    PN_CPP_EXTERN std::string id() const;
 
     /// The reactor associated with this container.
-    PN_CPP_EXTERN class reactor& reactor();
+    PN_CPP_EXTERN class reactor& reactor() const;
 
     // Schedule a timer task event in delay milliseconds.
     PN_CPP_EXTERN task& schedule(int delay, handler *h = 0);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/data.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/data.hpp b/proton-c/bindings/cpp/include/proton/data.hpp
index 17e55fb..bbc49c2 100644
--- a/proton-c/bindings/cpp/include/proton/data.hpp
+++ b/proton-c/bindings/cpp/include/proton/data.hpp
@@ -59,7 +59,7 @@ class data : public facade<pn_data_t, data, comparable<data> > {
     PN_CPP_EXTERN class decoder& decoder();
 
     /** Type of the current value*/
-    PN_CPP_EXTERN type_id type() { return decoder().type(); }
+    PN_CPP_EXTERN type_id type() const;
 
     /** Get the current value, don't move the decoder pointer. */
     template<class T> void get(T &t) { decoder() >> t; decoder().backup(); }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 1bd1dea..08389c9 100644
--- a/proton-c/bindings/cpp/include/proton/delivery.hpp
+++ b/proton-c/bindings/cpp/include/proton/delivery.hpp
@@ -43,7 +43,7 @@ class delivery : public counted_facade<pn_delivery_t, delivery> {
     };  // AMQP spec 3.4 delivery State
 
     /** Return true if the delivery has been settled. */
-    PN_CPP_EXTERN bool settled();
+    PN_CPP_EXTERN bool settled() const;
 
     /** Settle the delivery, informs the remote end. */
     PN_CPP_EXTERN void settle();
@@ -72,7 +72,7 @@ class delivery : public counted_facade<pn_delivery_t, delivery> {
      * A delivery is considered readable if it is the current delivery on
      * an incoming link.
      */
-    PN_CPP_EXTERN bool partial();
+    PN_CPP_EXTERN bool partial() const;
 
     /**
      * Check if a delivery is writable.
@@ -80,7 +80,7 @@ class delivery : public counted_facade<pn_delivery_t, delivery> {
      * A delivery is considered writable if it is the current delivery on
      * an outgoing link, and the link has positive credit.
      */
-    PN_CPP_EXTERN bool writable();
+    PN_CPP_EXTERN bool writable() const;
 
     /**
      * Check if a delivery is readable.
@@ -88,7 +88,7 @@ class delivery : public counted_facade<pn_delivery_t, delivery> {
      * A delivery is considered readable if it is the current delivery on
      * an incoming link.
      */
-    PN_CPP_EXTERN bool readable();
+    PN_CPP_EXTERN bool readable() const;
 
     /**
      * Check if a delivery is updated.
@@ -97,7 +97,7 @@ class delivery : public counted_facade<pn_delivery_t, delivery> {
      * new disposition for the delivery. Once a delivery becomes updated,
      * it will remain so until clear() is called.
      */
-    PN_CPP_EXTERN bool updated();
+    PN_CPP_EXTERN bool updated() const;
 
     /**
      * Clear the updated flag for a delivery.
@@ -107,7 +107,7 @@ class delivery : public counted_facade<pn_delivery_t, delivery> {
     /**
      * Get the remote disposition state for a delivery.
      */
-    PN_CPP_EXTERN state remote_state();
+    PN_CPP_EXTERN state remote_state() const;
 };
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 9fb5368..e31fce6 100644
--- a/proton-c/bindings/cpp/include/proton/endpoint.hpp
+++ b/proton-c/bindings/cpp/include/proton/endpoint.hpp
@@ -49,14 +49,14 @@ class endpoint
     typedef int state;
 
     /// endpoint state bit values @{
-    PN_CPP_EXTERN static const int LOCAL_UNINIT;    ///< Local endpoint is un-initialized
-    PN_CPP_EXTERN static const int REMOTE_UNINIT;   ///< Remote endpoint is un-initialized
-    PN_CPP_EXTERN static const int LOCAL_ACTIVE;    ///< Local endpoint is active
-    PN_CPP_EXTERN static const int REMOTE_ACTIVE;   ///< Remote endpoint is active
-    PN_CPP_EXTERN static const int LOCAL_CLOSED;    ///< Local endpoint has been closed
-    PN_CPP_EXTERN static const int REMOTE_CLOSED;   ///< Remote endpoint has been closed
-    PN_CPP_EXTERN static const int LOCAL_MASK;      ///< Mask including all LOCAL_ bits (UNINIT, ACTIVE, CLOSED)
-    PN_CPP_EXTERN static const int REMOTE_MASK;     ///< Mask including all REMOTE_ bits (UNINIT, ACTIVE, CLOSED)
+    PN_CPP_EXTERN static const state LOCAL_UNINIT;    ///< Local endpoint is un-initialized
+    PN_CPP_EXTERN static const state REMOTE_UNINIT;   ///< Remote endpoint is un-initialized
+    PN_CPP_EXTERN static const state LOCAL_ACTIVE;    ///< Local endpoint is active
+    PN_CPP_EXTERN static const state REMOTE_ACTIVE;   ///< Remote endpoint is active
+    PN_CPP_EXTERN static const state LOCAL_CLOSED;    ///< Local endpoint has been closed
+    PN_CPP_EXTERN static const state REMOTE_CLOSED;   ///< Remote endpoint has been closed
+    PN_CPP_EXTERN static const state LOCAL_MASK;      ///< Mask including all LOCAL_ bits (UNINIT, ACTIVE, CLOSED)
+    PN_CPP_EXTERN static const state REMOTE_MASK;     ///< Mask including all REMOTE_ bits (UNINIT, ACTIVE, CLOSED)
     ///@}
 
     // TODO: condition, remote_condition, update_condition, get/handler
@@ -112,11 +112,11 @@ class link_iterator : public iter_base<link, link_iterator> {
   public:
     explicit link_iterator(link* p = 0, endpoint::state s = 0) :
         iter_base(p, s), session_(0) {}
-    explicit link_iterator(const link_iterator& i, session *ssn) :
+    explicit link_iterator(const link_iterator& i, const session *ssn) :
         iter_base(i.ptr_, i.state_), session_(ssn) {}
   private:
     PN_CPP_EXTERN void advance();
-    session* session_;
+    const session* session_;
   friend class iter_base<link, link_iterator>;
 };
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/event.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/event.hpp b/proton-c/bindings/cpp/include/proton/event.hpp
index 82f6cb6..65d8c7b 100644
--- a/proton-c/bindings/cpp/include/proton/event.hpp
+++ b/proton-c/bindings/cpp/include/proton/event.hpp
@@ -46,19 +46,19 @@ class event {
     virtual PN_CPP_EXTERN std::string name() const = 0;
 
     /// Get container.
-    virtual PN_CPP_EXTERN class container &container();
+    virtual PN_CPP_EXTERN class container &container() const;
     /// Get connection.
-    virtual PN_CPP_EXTERN class connection &connection();
+    virtual PN_CPP_EXTERN class connection &connection() const;
     /// Get sender @throws error if no sender.
-    virtual PN_CPP_EXTERN class sender& sender();
+    virtual PN_CPP_EXTERN class sender& sender() const;
     /// Get receiver @throws error if no receiver.
-    virtual PN_CPP_EXTERN class receiver& receiver();
+    virtual PN_CPP_EXTERN class receiver& receiver() const;
     /// Get link @throws error if no link.
-    virtual PN_CPP_EXTERN class link& link();
+    virtual PN_CPP_EXTERN class link& link() const;
     /// Get delivey @throws error if no delivery.
-    virtual PN_CPP_EXTERN class delivery& delivery();
+    virtual PN_CPP_EXTERN class delivery& delivery() const;
     /** Get message @throws error if no message. */
-    virtual PN_CPP_EXTERN class message &message();
+    virtual PN_CPP_EXTERN class message &message() const;
 
   protected:
     PN_CPP_EXTERN event();

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 4e502e1..b4b40e0 100644
--- a/proton-c/bindings/cpp/include/proton/link.hpp
+++ b/proton-c/bindings/cpp/include/proton/link.hpp
@@ -51,37 +51,32 @@ class link : public counted_facade<pn_link_t, link, endpoint>
 
     /** Return sender if this link is a sender, 0 if not. */
     PN_CPP_EXTERN class sender* sender();
+    PN_CPP_EXTERN const class sender* sender() const;
+
     /** Return receiver if this link is a receiver, 0 if not. */
     PN_CPP_EXTERN class receiver* receiver();
+    PN_CPP_EXTERN const class receiver* receiver() const;
+
     /** Credit available on the link */
-    PN_CPP_EXTERN int credit();
-
-    /** True if link has source */
-    PN_CPP_EXTERN bool has_source();
-    /** True if link has target */
-    PN_CPP_EXTERN bool has_target();
-    /** True if link has remote source */
-    PN_CPP_EXTERN bool has_remote_source();
-    /** True if link has remote target */
-    PN_CPP_EXTERN bool has_remote_target();
-
-    /** Local source of the link. @throw error if !has_source() */
-    PN_CPP_EXTERN terminus& source();
-    /** Local target of the link. @throw error if !has_target() */
-    PN_CPP_EXTERN terminus& target();
-    /** Remote source of the link. @throw error if !has_remote_source() */
-    PN_CPP_EXTERN terminus& remote_source();
-    /** Remote target of the link. @throw error if !has_remote_target() */
-    PN_CPP_EXTERN terminus& remote_target();
+    PN_CPP_EXTERN int credit() const;
+
+    /** Local source of the link. */
+    PN_CPP_EXTERN terminus& source() const;
+    /** Local target of the link. */
+    PN_CPP_EXTERN terminus& target() const;
+    /** Remote source of the link. */
+    PN_CPP_EXTERN terminus& remote_source() const;
+    /** Remote target of the link. */
+    PN_CPP_EXTERN terminus& remote_target() const;
 
     /** Link name */
-    PN_CPP_EXTERN std::string name();
+    PN_CPP_EXTERN std::string name() const;
 
     /** Connection that owns this link */
-    PN_CPP_EXTERN class connection &connection();
+    PN_CPP_EXTERN class connection &connection() const;
 
     /** Session that owns this link */
-    PN_CPP_EXTERN class session &session();
+    PN_CPP_EXTERN class session &session() const;
 
     /** Set a custom handler for this link. */
     PN_CPP_EXTERN void handler(class handler &);
@@ -90,7 +85,7 @@ class link : public counted_facade<pn_link_t, link, endpoint>
     PN_CPP_EXTERN void detach_handler();
 
     /** Get the endpoint state */
-    PN_CPP_EXTERN endpoint::state state();
+    PN_CPP_EXTERN endpoint::state state() const;
 };
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 92086d1..14eb9a8 100644
--- a/proton-c/bindings/cpp/include/proton/message.hpp
+++ b/proton-c/bindings/cpp/include/proton/message.hpp
@@ -56,11 +56,12 @@ class message
     ///@name Message properties
     ///@{
 
-    /// Globally unique identifier, can be an a string, an unsigned long, a uuid or a binary value.
+    ///@ Set message identifier, can be a string, unsigned long, uuid or binary.
     PN_CPP_EXTERN void id(const data& id);
-    /// Globally unique identifier, can be an a string, an unsigned long, a uuid or a binary value.
-    PN_CPP_EXTERN const data& id() const;
+    ///@ Get message identifier
     PN_CPP_EXTERN data& id();
+    ///@ Get message identifier reference, allows modification in-place.
+    PN_CPP_EXTERN const data& id() const;
 
     PN_CPP_EXTERN void user(const std::string &user);
     PN_CPP_EXTERN std::string user() const;
@@ -74,10 +75,11 @@ class message
     PN_CPP_EXTERN void reply_to(const std::string &s);
     PN_CPP_EXTERN std::string reply_to() const;
 
-    /// Correlation identifier, can be an a string, an unsigned long, a uuid or a binary value.
+    /// Get correlation identifier, can be a string, unsigned long, uuid or binary.
     PN_CPP_EXTERN void correlation_id(const data&);
-    /// Correlation identifier, can be an a string, an unsigned long, a uuid or a binary value.
+    /// Get correlation identifier.
     PN_CPP_EXTERN const data& correlation_id() const;
+    /// Get correlation identifier reference, allows modification in-place.
     PN_CPP_EXTERN data& correlation_id();
 
     PN_CPP_EXTERN void content_type(const std::string &s);
@@ -86,8 +88,8 @@ class message
     PN_CPP_EXTERN void content_encoding(const std::string &s);
     PN_CPP_EXTERN std::string content_encoding() const;
 
-    PN_CPP_EXTERN void expiry(amqp_timestamp t);
-    PN_CPP_EXTERN amqp_timestamp expiry() const;
+    PN_CPP_EXTERN void expiry_time(amqp_timestamp t);
+    PN_CPP_EXTERN amqp_timestamp expiry_time() const;
 
     PN_CPP_EXTERN void creation_time(amqp_timestamp t);
     PN_CPP_EXTERN amqp_timestamp creation_time() const;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/reactor.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/reactor.hpp b/proton-c/bindings/cpp/include/proton/reactor.hpp
index b9e9427..8508e20 100644
--- a/proton-c/bindings/cpp/include/proton/reactor.hpp
+++ b/proton-c/bindings/cpp/include/proton/reactor.hpp
@@ -56,7 +56,7 @@ class reactor : public facade<pn_reactor_t, reactor> {
     PN_CPP_EXTERN void stop();
 
     /// Identifier for the container
-    PN_CPP_EXTERN std::string id();
+    PN_CPP_EXTERN std::string id() const;
 
     /// Get timeout, process() will return if there is no activity within the timeout.
     PN_CPP_EXTERN duration timeout();

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/include/proton/request_response.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/request_response.hpp b/proton-c/bindings/cpp/include/proton/request_response.hpp
index 9bc4392..957c91a 100644
--- a/proton-c/bindings/cpp/include/proton/request_response.hpp
+++ b/proton-c/bindings/cpp/include/proton/request_response.hpp
@@ -48,7 +48,7 @@ class request_response
      */
     PN_CPP_EXTERN message call(message &request);
     /** Return the dynamic address of our receiver. */
-    PN_CPP_EXTERN std::string reply_to();
+    PN_CPP_EXTERN std::string reply_to() const;
 
   private:
     blocking_connection &connection_;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 b3dc446..0e6aa69 100644
--- a/proton-c/bindings/cpp/include/proton/session.hpp
+++ b/proton-c/bindings/cpp/include/proton/session.hpp
@@ -52,19 +52,19 @@ class session : public counted_facade<pn_session_t, session, endpoint>
     PN_CPP_EXTERN void close();
 
     /// Get connection
-    PN_CPP_EXTERN class connection &connection();
+    PN_CPP_EXTERN class connection &connection() const;
 
     /** An un-opened receiver link, you can set link properties before calling open().
      *
-     *@param name must be unique within a container, if empty a unique name is
-     * generated beginning with connection().container().link_prefix()
+     *@param name if specified must be unique, by default the container generates a name
+     * of the form: <hex-digits> + "@" + container.id()
      */
     PN_CPP_EXTERN receiver& create_receiver(const std::string& name=std::string());
 
     /** An un-opened sender link, you can set link properties before calling open().
      *
-     *@param name must be unique within a container, if empty a unique name is
-     * generated beginning with connection().container().link_prefix()
+     *@param name if specified must be unique, by default the container generates a name
+     * of the form: <hex-digits> + "@" + container.id()
      */
     PN_CPP_EXTERN sender& create_sender(const std::string& name=std::string());
 
@@ -75,10 +75,10 @@ class session : public counted_facade<pn_session_t, session, endpoint>
     PN_CPP_EXTERN receiver& open_receiver(const std::string &addr, bool dynamic=false, handler *h=0);
 
     /** Get the endpoint state */
-    PN_CPP_EXTERN endpoint::state state();
+    PN_CPP_EXTERN endpoint::state state() const;
 
     /** Return the links on this session matching the state mask. */
-    PN_CPP_EXTERN link_range find_links(endpoint::state mask);
+    PN_CPP_EXTERN link_range find_links(endpoint::state mask) const;
 };
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 e058e84..86b56f7 100644
--- a/proton-c/bindings/cpp/include/proton/terminus.hpp
+++ b/proton-c/bindings/cpp/include/proton/terminus.hpp
@@ -59,15 +59,15 @@ class terminus : public counted_facade<pn_terminus_t, terminus>
         MOVE = PN_DIST_MODE_MOVE
     };
 
-    PN_CPP_EXTERN type_t type();
+    PN_CPP_EXTERN type_t type() const;
     PN_CPP_EXTERN void type(type_t);
-    PN_CPP_EXTERN expiry_policy_t expiry_policy();
+    PN_CPP_EXTERN expiry_policy_t expiry_policy() const;
     PN_CPP_EXTERN void expiry_policy(expiry_policy_t);
-    PN_CPP_EXTERN distribution_mode_t distribution_mode();
+    PN_CPP_EXTERN distribution_mode_t distribution_mode() const;
     PN_CPP_EXTERN void distribution_mode(distribution_mode_t);
-    PN_CPP_EXTERN std::string address();
+    PN_CPP_EXTERN std::string address() const;
     PN_CPP_EXTERN void address(const std::string &);
-    PN_CPP_EXTERN bool dynamic();
+    PN_CPP_EXTERN bool dynamic() const;
     PN_CPP_EXTERN void dynamic(bool);
 };
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 c909166..3d602b7 100644
--- a/proton-c/bindings/cpp/include/proton/transport.hpp
+++ b/proton-c/bindings/cpp/include/proton/transport.hpp
@@ -36,7 +36,7 @@ class connection;
 class transport : public counted_facade<pn_transport_t, transport>
 {
   public:
-    class connection* connection();
+    class connection* connection() const;
 };
 
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/blocking_connection.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/blocking_connection.cpp b/proton-c/bindings/cpp/src/blocking_connection.cpp
index 6b0308c..d830872 100644
--- a/proton-c/bindings/cpp/src/blocking_connection.cpp
+++ b/proton-c/bindings/cpp/src/blocking_connection.cpp
@@ -32,8 +32,8 @@ blocking_connection::~blocking_connection() {}
 
 void blocking_connection::close() { impl_->close(); }
 
-duration blocking_connection::timeout() { return impl_->container_->reactor().timeout(); }
+duration blocking_connection::timeout() const { return impl_->container_->reactor().timeout(); }
 
-connection& blocking_connection::connection() { return *impl_->connection_; }
+connection& blocking_connection::connection() const { return *impl_->connection_; }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/blocking_sender.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/blocking_sender.cpp b/proton-c/bindings/cpp/src/blocking_sender.cpp
index 1fca30b..43480d6 100644
--- a/proton-c/bindings/cpp/src/blocking_sender.cpp
+++ b/proton-c/bindings/cpp/src/blocking_sender.cpp
@@ -63,6 +63,6 @@ delivery& blocking_sender::send(const message &msg) {
     return send(msg, connection_.timeout());
 }
 
-sender& blocking_sender::sender() { return *link_->sender(); }
+sender& blocking_sender::sender() const { return *link_->sender(); }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 19657fd..1b35e03 100644
--- a/proton-c/bindings/cpp/src/connection.cpp
+++ b/proton-c/bindings/cpp/src/connection.cpp
@@ -37,7 +37,7 @@
 
 namespace proton {
 
-transport &connection::transport() {
+transport &connection::transport() const {
     return *transport::cast(pn_connection_transport(pn_cast(this)));
 }
 
@@ -45,19 +45,19 @@ void connection::open() { pn_connection_open(pn_cast(this)); }
 
 void connection::close() { pn_connection_close(pn_cast(this)); }
 
-std::string connection::hostname() {
+std::string connection::host() const {
     return std::string(pn_connection_get_hostname(pn_cast(this)));
 }
 
-container& connection::container() {
+container& connection::container() const {
     return container_context(pn_object_reactor(pn_cast(this)));
 }
 
-link_range connection::find_links(endpoint::state mask)  {
+link_range connection::find_links(endpoint::state mask) const {
     return link_range(link_iterator(link::cast(pn_link_head(pn_cast(this), mask))));
 }
 
-session_range connection::find_sessions(endpoint::state mask) {
+session_range connection::find_sessions(endpoint::state mask) const {
     return session_range(
         session_iterator(session::cast(pn_session_head(pn_cast(this), mask))));
 }
@@ -82,6 +82,6 @@ receiver& connection::open_receiver(const std::string &addr, bool dynamic, handl
     return default_session().open_receiver(addr, dynamic, h);
 }
 
-endpoint::state connection::state() { return pn_connection_state(pn_cast(this)); }
+endpoint::state connection::state() const { return pn_connection_state(pn_cast(this)); }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 9b681b9..13f12d9 100644
--- a/proton-c/bindings/cpp/src/container.cpp
+++ b/proton-c/bindings/cpp/src/container.cpp
@@ -49,9 +49,9 @@ container::~container() {}
 
 connection& container::connect(const url &host, handler *h) { return impl_->connect(host, h); }
 
-reactor &container::reactor() { return *impl_->reactor_; }
+reactor &container::reactor() const { return *impl_->reactor_; }
 
-std::string container::id() { return impl_->id_; }
+std::string container::id() const { return impl_->id_; }
 
 void container::run() { impl_->reactor_->run(); }
 
@@ -67,9 +67,6 @@ acceptor& container::listen(const proton::url &url) {
     return impl_->listen(url);
 }
 
-void container::link_prefix(const std::string& s) { impl_->prefix_ = s; }
-std::string  container::link_prefix() { return impl_->prefix_; }
-
 task& container::schedule(int delay, handler *h) { return impl_->schedule(delay, h); }
 
 } // namespace proton

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 cb32d75..fc97a3e 100644
--- a/proton-c/bindings/cpp/src/container_impl.cpp
+++ b/proton-c/bindings/cpp/src/container_impl.cpp
@@ -186,7 +186,7 @@ acceptor& container_impl::listen(const proton::url& url) {
 std::string container_impl::next_link_name() {
     std::ostringstream s;
     // TODO aconway 2015-09-01: atomic operation
-    s << prefix_ << std::hex << ++link_id_;
+    s << std::hex << ++link_id_ << "@" << id_;
     return s.str();
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/container_impl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container_impl.hpp b/proton-c/bindings/cpp/src/container_impl.hpp
index 76d30fb..ec356e2 100644
--- a/proton-c/bindings/cpp/src/container_impl.hpp
+++ b/proton-c/bindings/cpp/src/container_impl.hpp
@@ -68,7 +68,6 @@ class container_impl
     pn_unique_ptr<handler> flow_controller_;
     std::string id_;
     uint64_t link_id_;
-    std::string prefix_;
 
   friend class container;
 };

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/data.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/data.cpp b/proton-c/bindings/cpp/src/data.cpp
index ad82040..53b8c37 100644
--- a/proton-c/bindings/cpp/src/data.cpp
+++ b/proton-c/bindings/cpp/src/data.cpp
@@ -39,6 +39,8 @@ pn_unique_ptr<data> data::create() { return pn_unique_ptr<data>(cast(::pn_data(0
 encoder& data::encoder() { return reinterpret_cast<class encoder&>(*this); }
 decoder& data::decoder() { return reinterpret_cast<class decoder&>(*this); }
 
+type_id data::type() const { return reinterpret_cast<const class decoder&>(*this).type(); }
+
 namespace {
 
 // Compare nodes, return -1 if a<b, 0 if a==b, +1 if a>b

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 b292c70..d02904f 100644
--- a/proton-c/bindings/cpp/src/delivery.cpp
+++ b/proton-c/bindings/cpp/src/delivery.cpp
@@ -24,7 +24,7 @@
 
 namespace proton {
 
-bool delivery::settled() { return pn_delivery_settled(pn_cast(this)); }
+bool delivery::settled() const { return pn_delivery_settled(pn_cast(this)); }
 
 void delivery::settle() { pn_delivery_settle(pn_cast(this)); }
 
@@ -35,10 +35,11 @@ void delivery::settle(delivery::state state) {
     settle();
 }
 
-bool delivery::partial()  { return pn_delivery_partial(pn_cast(this)); }
-bool delivery::readable() { return pn_delivery_readable(pn_cast(this)); }
-bool delivery::writable() { return pn_delivery_writable(pn_cast(this)); }
-bool delivery::updated()  { return pn_delivery_updated(pn_cast(this)); }
+bool delivery::partial()  const { return pn_delivery_partial(pn_cast(this)); }
+bool delivery::readable() const { return pn_delivery_readable(pn_cast(this)); }
+bool delivery::writable() const { return pn_delivery_writable(pn_cast(this)); }
+bool delivery::updated()  const { return pn_delivery_updated(pn_cast(this)); }
+
 void delivery::clear()  { pn_delivery_clear(pn_cast(this)); }
-delivery::state delivery::remote_state() { return state(pn_delivery_remote_state(pn_cast(this))); }
+delivery::state delivery::remote_state() const { return state(pn_delivery_remote_state(pn_cast(this))); }
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/event.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/event.cpp b/proton-c/bindings/cpp/src/event.cpp
index 84927c4..d79df33 100644
--- a/proton-c/bindings/cpp/src/event.cpp
+++ b/proton-c/bindings/cpp/src/event.cpp
@@ -38,32 +38,32 @@ event::event() {}
 
 event::~event() {}
 
-container &event::container() {
+container &event::container() const {
     // Subclasses to override as appropriate
     throw error(MSG("No container context for event"));
 }
 
-connection &event::connection() {
+connection &event::connection() const {
     throw error(MSG("No connection context for event"));
 }
 
-sender& event::sender() {
+sender& event::sender() const {
     throw error(MSG("No sender context for event"));
 }
 
-receiver& event::receiver() {
+receiver& event::receiver() const {
     throw error(MSG("No receiver context for event"));
 }
 
-link& event::link() {
+link& event::link() const {
     throw error(MSG("No link context for event"));
 }
 
-delivery& event::delivery() {
+delivery& event::delivery() const {
     throw error(MSG("No link context for event"));
 }
 
-class message &event::message() {
+class message &event::message() const {
     throw error(MSG("No message associated with event"));
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/link.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/link.cpp b/proton-c/bindings/cpp/src/link.cpp
index 45c23aa..23345b5 100644
--- a/proton-c/bindings/cpp/src/link.cpp
+++ b/proton-c/bindings/cpp/src/link.cpp
@@ -47,27 +47,30 @@ receiver* link::receiver() {
     return pn_link_is_receiver(pn_cast(this)) ? reinterpret_cast<class receiver*>(this) : 0;
 }
 
-int link::credit() {
-    return pn_link_credit(pn_cast(this));
+const sender* link::sender() const {
+    return pn_link_is_sender(pn_cast(this)) ? reinterpret_cast<const class sender*>(this) : 0;
+}
+
+const receiver* link::receiver() const {
+    return pn_link_is_receiver(pn_cast(this)) ? reinterpret_cast<const class receiver*>(this) : 0;
 }
 
-bool link::has_source() { return pn_link_source(pn_cast(this)); }
-bool link::has_target() { return pn_link_target(pn_cast(this)); }
-bool link::has_remote_source() { return pn_link_remote_source(pn_cast(this)); }
-bool link::has_remote_target() { return pn_link_remote_target(pn_cast(this)); }
+int link::credit() const {
+    return pn_link_credit(pn_cast(this));
+}
 
-terminus& link::source() { return *terminus::cast(pn_link_source(pn_cast(this))); }
-terminus& link::target() { return *terminus::cast(pn_link_target(pn_cast(this))); }
-terminus& link::remote_source() { return *terminus::cast(pn_link_remote_source(pn_cast(this))); }
-terminus& link::remote_target() { return *terminus::cast(pn_link_remote_target(pn_cast(this))); }
+terminus& link::source() const { return *terminus::cast(pn_link_source(pn_cast(this))); }
+terminus& link::target() const { return *terminus::cast(pn_link_target(pn_cast(this))); }
+terminus& link::remote_source() const { return *terminus::cast(pn_link_remote_source(pn_cast(this))); }
+terminus& link::remote_target() const { return *terminus::cast(pn_link_remote_target(pn_cast(this))); }
 
-std::string link::name() { return std::string(pn_link_name(pn_cast(this)));}
+std::string link::name() const { return std::string(pn_link_name(pn_cast(this)));}
 
-class connection &link::connection() {
+class connection &link::connection() const {
     return *connection::cast(pn_session_connection(pn_link_session(pn_cast(this))));
 }
 
-class session &link::session() {
+class session &link::session() const {
     return *session::cast(pn_link_session(pn_cast(this)));
 }
 
@@ -83,5 +86,5 @@ void link::detach_handler() {
     pn_record_set_handler(record, 0);
 }
 
-endpoint::state link::state() { return pn_link_state(pn_cast(this)); }
+endpoint::state link::state() const { return pn_link_state(pn_cast(this)); }
 }

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 b056cd7..79c15b8 100644
--- a/proton-c/bindings/cpp/src/message.cpp
+++ b/proton-c/bindings/cpp/src/message.cpp
@@ -132,10 +132,10 @@ std::string message::content_encoding() const {
     return s ? std::string(s) : std::string();
 }
 
-void message::expiry(amqp_timestamp t) {
+void message::expiry_time(amqp_timestamp t) {
     pn_message_set_expiry_time(message_, t.milliseconds);
 }
-amqp_timestamp message::expiry() const {
+amqp_timestamp message::expiry_time() const {
     return amqp_timestamp(pn_message_get_expiry_time(message_));
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/messaging_event.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/messaging_event.cpp b/proton-c/bindings/cpp/src/messaging_event.cpp
index a9347d1..3e59b1c 100644
--- a/proton-c/bindings/cpp/src/messaging_event.cpp
+++ b/proton-c/bindings/cpp/src/messaging_event.cpp
@@ -55,7 +55,7 @@ messaging_event::~messaging_event() {}
 
 messaging_event::event_type messaging_event::type() const { return type_; }
 
-connection &messaging_event::connection() {
+connection &messaging_event::connection() const {
     if (type_ == messaging_event::PROTON)
         return proton_event::connection();
     if (parent_event_)
@@ -63,7 +63,7 @@ connection &messaging_event::connection() {
     throw error(MSG("No connection context for event"));
 }
 
-sender& messaging_event::sender() {
+sender& messaging_event::sender() const {
     if (type_ == messaging_event::PROTON)
         return proton_event::sender();
     if (parent_event_)
@@ -71,7 +71,7 @@ sender& messaging_event::sender() {
     throw error(MSG("No sender context for event"));
 }
 
-receiver& messaging_event::receiver() {
+receiver& messaging_event::receiver() const {
     if (type_ == messaging_event::PROTON)
         return proton_event::receiver();
     if (parent_event_)
@@ -79,7 +79,7 @@ receiver& messaging_event::receiver() {
     throw error(MSG("No receiver context for event"));
 }
 
-link& messaging_event::link() {
+link& messaging_event::link() const {
     if (type_ == messaging_event::PROTON)
         return proton_event::link();
     if (parent_event_)
@@ -87,7 +87,7 @@ link& messaging_event::link() {
     throw error(MSG("No link context for event"));
 }
 
-delivery& messaging_event::delivery() {
+delivery& messaging_event::delivery() const {
     if (type_ == messaging_event::PROTON)
         return proton_event::delivery();
     if (parent_event_)
@@ -95,7 +95,7 @@ delivery& messaging_event::delivery() {
     throw error(MSG("No delivery context for event"));
 }
 
-message &messaging_event::message() {
+message &messaging_event::message() const {
     if (type_ != messaging_event::MESSAGE || !parent_event_)
         throw error(MSG("event type does not provide message"));
     return *message_;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/messaging_event.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/messaging_event.hpp b/proton-c/bindings/cpp/src/messaging_event.hpp
index 1f73477..84cf3f3 100644
--- a/proton-c/bindings/cpp/src/messaging_event.hpp
+++ b/proton-c/bindings/cpp/src/messaging_event.hpp
@@ -88,12 +88,12 @@ class messaging_event : public proton_event
     ~messaging_event();
 
     virtual PN_CPP_EXTERN void dispatch(handler &h);
-    virtual PN_CPP_EXTERN class connection &connection();
-    virtual PN_CPP_EXTERN class sender& sender();
-    virtual PN_CPP_EXTERN class receiver& receiver();
-    virtual PN_CPP_EXTERN class link& link();
-    virtual PN_CPP_EXTERN class delivery& delivery();
-    virtual PN_CPP_EXTERN class message& message();
+    virtual PN_CPP_EXTERN class connection &connection() const;
+    virtual PN_CPP_EXTERN class sender& sender() const;
+    virtual PN_CPP_EXTERN class receiver& receiver() const;
+    virtual PN_CPP_EXTERN class link& link() const;
+    virtual PN_CPP_EXTERN class delivery& delivery() const;
+    virtual PN_CPP_EXTERN class message& message() const;
 
     PN_CPP_EXTERN event_type type() const;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/proton_event.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/proton_event.cpp b/proton-c/bindings/cpp/src/proton_event.cpp
index 80e678e..649d908 100644
--- a/proton-c/bindings/cpp/src/proton_event.cpp
+++ b/proton-c/bindings/cpp/src/proton_event.cpp
@@ -46,34 +46,34 @@ int proton_event::type() const { return type_; }
 
 std::string proton_event::name() const { return pn_event_type_name(pn_event_type_t(type_)); }
 
-pn_event_t *proton_event::pn_event() { return pn_event_; }
+pn_event_t *proton_event::pn_event() const { return pn_event_; }
 
-container &proton_event::container() { return container_; }
+container &proton_event::container() const { return container_; }
 
-connection &proton_event::connection() {
+connection &proton_event::connection() const {
     pn_connection_t *conn = pn_event_connection(pn_event());
     if (!conn)
         throw error(MSG("No connection context for this event"));
     return *connection::cast(conn);
 }
 
-link& proton_event::link() {
+link& proton_event::link() const {
     class link *lnk = link::cast(pn_event_link(pn_event()));
     if (!lnk) throw error(MSG("No link context for this event"));
     return *lnk;
 }
 
-sender& proton_event::sender() {
+sender& proton_event::sender() const {
     if (!link().sender()) throw error(MSG("No sender context for this event"));
     return *link().sender();
 }
 
-receiver& proton_event::receiver() {
+receiver& proton_event::receiver() const {
     if (!link().receiver()) throw error(MSG("No receiver context for this event"));
     return *link().receiver();
 }
 
-delivery& proton_event::delivery() {
+delivery& proton_event::delivery() const {
     class delivery *dlv = delivery::cast(pn_event_delivery(pn_event()));
     if (!dlv) throw error(MSG("No delivery context for this event"));
     return *dlv;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/proton_event.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/proton_event.hpp b/proton-c/bindings/cpp/src/proton_event.hpp
index f71af55..66b8ed9 100644
--- a/proton-c/bindings/cpp/src/proton_event.hpp
+++ b/proton-c/bindings/cpp/src/proton_event.hpp
@@ -273,22 +273,22 @@ class proton_event : public event
     ///@}
 
     virtual PN_CPP_EXTERN void dispatch(handler &h);
-    virtual PN_CPP_EXTERN class container &container();
-    virtual PN_CPP_EXTERN class connection &connection();
-    virtual PN_CPP_EXTERN class sender& sender();
-    virtual PN_CPP_EXTERN class receiver& receiver();
-    virtual PN_CPP_EXTERN class link& link();
-    virtual PN_CPP_EXTERN class delivery& delivery();
+    virtual PN_CPP_EXTERN class container &container() const;
+    virtual PN_CPP_EXTERN class connection &connection() const;
+    virtual PN_CPP_EXTERN class sender& sender() const;
+    virtual PN_CPP_EXTERN class receiver& receiver() const;
+    virtual PN_CPP_EXTERN class link& link() const;
+    virtual PN_CPP_EXTERN class delivery& delivery() const;
 
     /** Get type of event */
     PN_CPP_EXTERN event_type type() const;
 
-    PN_CPP_EXTERN pn_event_t* pn_event();
+    PN_CPP_EXTERN pn_event_t* pn_event() const;
 
   protected:
     PN_CPP_EXTERN proton_event(pn_event_t *ce, proton_event::event_type t, class container &c);
   private:
-    pn_event_t *pn_event_;
+    mutable pn_event_t *pn_event_;
     event_type type_;
     class container &container_;
 };

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/request_response.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/request_response.cpp b/proton-c/bindings/cpp/src/request_response.cpp
index 9b8207c..38a701c 100644
--- a/proton-c/bindings/cpp/src/request_response.cpp
+++ b/proton-c/bindings/cpp/src/request_response.cpp
@@ -50,7 +50,7 @@ message request_response::call(message &request) {
     return response;
 }
 
-std::string request_response::reply_to() {
+std::string request_response::reply_to() const {
     return receiver_->receiver().remote_source().address();
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 468e4b8..6d0d955 100644
--- a/proton-c/bindings/cpp/src/session.cpp
+++ b/proton-c/bindings/cpp/src/session.cpp
@@ -33,7 +33,7 @@ void session::open() {
     pn_session_open(pn_cast(this));
 }
 
-connection &session::connection() {
+connection &session::connection() const {
     return *proton::connection::cast(pn_session_connection(pn_cast(this)));
 }
 
@@ -74,9 +74,9 @@ receiver& session::open_receiver(const std::string &addr, bool dynamic, handler
     return rcv;
 }
 
-endpoint::state session::state() { return pn_session_state(pn_cast(this)); }
+endpoint::state session::state() const { return pn_session_state(pn_cast(this)); }
 
-link_range session::find_links(endpoint::state mask)  {
+link_range session::find_links(endpoint::state mask)  const {
     link_range r(connection().find_links(mask));
     link_iterator i(r.begin(), this);
     if (i && this != &i->session())

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/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 6d17786..8948eb5 100644
--- a/proton-c/bindings/cpp/src/terminus.cpp
+++ b/proton-c/bindings/cpp/src/terminus.cpp
@@ -24,7 +24,7 @@
 
 namespace proton {
 
-terminus::type_t terminus::type() {
+terminus::type_t terminus::type() const {
     return (type_t) pn_terminus_get_type(pn_cast(this));
 }
 
@@ -32,7 +32,7 @@ void terminus::type(type_t type) {
     pn_terminus_set_type(pn_cast(this), (pn_terminus_type_t) type);
 }
 
-terminus::expiry_policy_t terminus::expiry_policy() {
+terminus::expiry_policy_t terminus::expiry_policy() const {
     return (expiry_policy_t) pn_terminus_get_type(pn_cast(this));
 }
 
@@ -40,7 +40,7 @@ void terminus::expiry_policy(expiry_policy_t policy) {
     pn_terminus_set_expiry_policy(pn_cast(this), (pn_expiry_policy_t) policy);
 }
 
-terminus::distribution_mode_t terminus::distribution_mode() {
+terminus::distribution_mode_t terminus::distribution_mode() const {
     return (distribution_mode_t) pn_terminus_get_type(pn_cast(this));
 }
 
@@ -48,7 +48,7 @@ void terminus::distribution_mode(distribution_mode_t mode) {
     pn_terminus_set_distribution_mode(pn_cast(this), (pn_distribution_mode_t) mode);
 }
 
-std::string terminus::address() {
+std::string terminus::address() const {
     const char *addr = pn_terminus_get_address(pn_cast(this));
     return addr ? std::string(addr) : std::string();
 }
@@ -57,7 +57,7 @@ void terminus::address(const std::string &addr) {
     pn_terminus_set_address(pn_cast(this), addr.c_str());
 }
 
-bool terminus::dynamic() {
+bool terminus::dynamic() const {
     return (type_t) pn_terminus_is_dynamic(pn_cast(this));
 }
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/cf221b45/proton-c/bindings/cpp/src/transport.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/transport.cpp b/proton-c/bindings/cpp/src/transport.cpp
index e128492..58114ae 100644
--- a/proton-c/bindings/cpp/src/transport.cpp
+++ b/proton-c/bindings/cpp/src/transport.cpp
@@ -24,7 +24,7 @@
 
 namespace proton {
 
-connection* transport::connection() {
+connection* transport::connection() const {
     return connection::cast(pn_transport_connection(pn_cast(this)));
 }
 


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