Repository: qpid-proton Updated Branches: refs/heads/master 3f0edd878 -> e6b068219
PROTON-1194: use consistent argument handling, clarify sender flow logic Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/e6b06821 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/e6b06821 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/e6b06821 Branch: refs/heads/master Commit: e6b06821914a38ad3aa28ac5ea90f432fe7f1c8d Parents: 3f0edd8 Author: Clifford Jansen <[email protected]> Authored: Fri Jun 3 12:52:25 2016 -0700 Committer: Clifford Jansen <[email protected]> Committed: Fri Jun 3 12:52:25 2016 -0700 ---------------------------------------------------------------------- examples/cpp/flow_control.cpp | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/e6b06821/examples/cpp/flow_control.cpp ---------------------------------------------------------------------- diff --git a/examples/cpp/flow_control.cpp b/examples/cpp/flow_control.cpp index 24776d7..99f832d 100644 --- a/examples/cpp/flow_control.cpp +++ b/examples/cpp/flow_control.cpp @@ -19,6 +19,8 @@ * */ +#include "options.hpp" + #include <proton/listener.hpp> #include <proton/connection.hpp> #include <proton/connection_options.hpp> @@ -57,10 +59,7 @@ class flow_sender : public proton::messaging_handler { public: flow_sender() : available(0), sequence(0) {} - void on_sendable(proton::sender &s) OVERRIDE { - if (verbose) - std::cout << "flow_sender in \"on_sendable\" with credit " << s.credit() - << " and " << available << " available messages" << std::endl; + void send_available_messages(proton::sender &s) { for (int i = sequence; available && s.credit() > 0; i++) { std::ostringstream mbody; mbody << "flow_sender message " << sequence++; @@ -70,11 +69,18 @@ class flow_sender : public proton::messaging_handler { } } + void on_sendable(proton::sender &s) OVERRIDE { + if (verbose) + std::cout << "flow_sender in \"on_sendable\" with credit " << s.credit() + << " and " << available << " available messages" << std::endl; + send_available_messages(s); + } + void on_sender_drain_start(proton::sender &s) OVERRIDE { if (verbose) std::cout << "flow_sender in \"on_drain_start\" with credit " << s.credit() - << " making an internal call to \"on_sendble\"" << std::endl; - on_sendable(s); // send as many as we can + << " and " << available << " available messages" << std::endl; + send_available_messages(s); if (s.credit()) { s.return_credit(); // return the rest } @@ -213,15 +219,21 @@ class flow_control : public proton::messaging_handler { }; int main(int argc, char **argv) { - std::string quiet_arg("-quiet"); - if (argc > 2 && quiet_arg == argv[2]) - verbose = false; + // Pick an "unusual" port since we are going to be talking to + // ourselves, not a broker. + std::string address("127.0.0.1:8888"); + bool quiet = false; + + example::options opts(argc, argv); + opts.add_value(address, 'a', "address", "connect and send to URL", "URL"); + opts.add_flag(quiet, 'q', "quiet", "suppress additional commentary of credit allocation and consumption"); + try { - // Pick an "unusual" port since we are going to be talking to - // ourselves, not a broker. - std::string url = argc > 1 ? argv[1] : "127.0.0.1:8888/examples"; + opts.parse(); + if (quiet) + verbose = false; - flow_control fc(url); + flow_control fc(address); proton::default_container(fc).run(); return 0; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
