-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/39694/
-----------------------------------------------------------

Review request for qpid, Alan Conway, Andrew Stitcher, and Justin Ross.


Bugs: PROTON-865
    https://issues.apache.org/jira/browse/PROTON-865


Repository: qpid-proton-git


Description
-------

This provides connection options (broadly similar to link options).

As suggested by Alan, the collection connection_options is a subclass of the 
base connection_option so that they can be grouped and nested.

They can also be copied and persisted via respective clone methods.  Reconnect 
and transport options need to live as long as the connection.  The handler 
option is special and needs to be extracted before other options to be 
available when the connection is created.

Incoming (listener) connection options are perhaps missing a feature.  You can 
set global server connection options on a container, and you can set separate 
ssl_domain creds per listener, but you cannot set other connection options 
(idle_timeout/max_frame_size etc) per listener.  This is reflected in 
Proton-C's acceptor and the readable events that it intercepts.  There is no 
way to query the C API to find out which listener is the parent of an incoming 
connection or transfer other listener-specific context to the connection.

As suggested in the link options review, I attempted to provide an 
initializer_list<foo> constructor and append, but that requires array elements 
of identical size.  The varying size of the connection option types is 
unhelpful here.  Maybe they should be counted_ptr based pimpl structs of 
identical size.

This patch can also be viewed as the "reconnect" branch of 
https://github.com/cliffjansen/qpid-proton.


Diffs
-----

  examples/cpp/CMakeLists.txt 34edb83 
  examples/cpp/connection_options.cpp PRE-CREATION 
  proton-c/bindings/cpp/CMakeLists.txt 9f423fb 
  proton-c/bindings/cpp/include/proton/connection_options.hpp PRE-CREATION 
  proton-c/bindings/cpp/include/proton/container.hpp 059416f 
  proton-c/bindings/cpp/include/proton/reconnect_timer.hpp PRE-CREATION 
  proton-c/bindings/cpp/include/proton/transport.hpp 3d602b7 
  proton-c/bindings/cpp/src/blocking_connection_impl.cpp 8abd24b 
  proton-c/bindings/cpp/src/connection.cpp 1b35e03 
  proton-c/bindings/cpp/src/connection_options.cpp PRE-CREATION 
  proton-c/bindings/cpp/src/connector.hpp b311cc9 
  proton-c/bindings/cpp/src/connector.cpp 49660ea 
  proton-c/bindings/cpp/src/container.cpp 13f12d9 
  proton-c/bindings/cpp/src/container_impl.hpp ec356e2 
  proton-c/bindings/cpp/src/container_impl.cpp fc97a3e 
  proton-c/bindings/cpp/src/reconnect_timer.cpp PRE-CREATION 
  proton-c/bindings/cpp/src/transport.cpp 58114ae 

Diff: https://reviews.apache.org/r/39694/diff/


Testing
-------

Linux only


Thanks,

Cliff Jansen

Reply via email to