Qpid
  1. Qpid
  2. QPID-3859

Provide non-blocking I/O functionality to the Ruby APIs

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Critical Critical
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Ruby Client
    • Labels:
      None

      Description

      Provide functionality that overcomes the limitation of the Ruby global interpreter. Prevent the Ruby VM from become become unresponsive when a blocking I/O call is made so that other Ruby threads can continue to execute while the I/O continues.

        Activity

        Hide
        jiraposter@reviews.apache.org added a comment -

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

        (Updated 2012-02-20 15:53:08.198316)

        Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming.

        Summary
        -------

        This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages.

        After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc.

        This addresses bug QPID-3859.
        https://issues.apache.org/jira/browse/QPID-3859

        Diffs


        trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858
        trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/qpid.i 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858
        trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858
        trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858
        trunk/qpid/cpp/examples/messaging/Makefile.am 1243858
        trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858
        trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION
        trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858
        trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION
        trunk/qpid/cpp/src/CMakeLists.txt 1243858
        trunk/qpid/cpp/src/Makefile.am 1243858
        trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858
        trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858
        trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858
        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858
        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858
        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION
        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION
        trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858
        trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858
        trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION
        trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858

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

        Testing
        -------

        Thanks,

        Darryl

        Show
        jiraposter@reviews.apache.org added a comment - ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/ ----------------------------------------------------------- (Updated 2012-02-20 15:53:08.198316) Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming. Summary ------- This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages. After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc. This addresses bug QPID-3859 . https://issues.apache.org/jira/browse/QPID-3859 Diffs trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/qpid.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858 trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858 trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858 trunk/qpid/cpp/examples/messaging/Makefile.am 1243858 trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858 trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858 trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION trunk/qpid/cpp/src/CMakeLists.txt 1243858 trunk/qpid/cpp/src/Makefile.am 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858 trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858 Diff: https://reviews.apache.org/r/2828/diff Testing ------- Thanks, Darryl
        Hide
        jiraposter@reviews.apache.org added a comment -

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

        There's a whole lot of code here and I don't understand it well enough to actually review it - below are some random comments that occurred to me whilst reading through.

        I would say that the amount of code seems disproportionate to the actual functionality, but that is clearly subjective. However the code really isn't well enough explained to be able to understand what the pieces do and how they relate.

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h
        <https://reviews.apache.org/r/2828/#comment11457>

        The name Prong seems inscrutable, especially without any explanation what it means.

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp
        <https://reviews.apache.org/r/2828/#comment11456>

        Why invent a new code convention?

        elsewhere in the C++ code we use

        Class::Class() :
        member1(0),
        member2(0),
        ....

        I know your code convention is the correct one but we have 5 years of code for you to change if you think it's better than the previous!

        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb
        <https://reviews.apache.org/r/2828/#comment11458>

        This seems like a serious problem, perhaps it needs to be addressed before putting this change to trunk?

        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb
        <https://reviews.apache.org/r/2828/#comment11459>

        As previous, having to sleep for 100ms seems to indicate a severe problem being swept under the rug. Especially in an API meant to be nonblocking.

        trunk/qpid/cpp/include/qpid/messaging/Tracker.h
        <https://reviews.apache.org/r/2828/#comment11455>

        I can't tell from this class what a "Tracker" is supposed to do, or how to use it - This is externally visible API so needs appropriate documentation.

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp
        <https://reviews.apache.org/r/2828/#comment11463>

        Why the dead code in a comment? If it needs to be there say why. If not delete it, but tell me why you getDeadline and then ignore the answer.

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp
        <https://reviews.apache.org/r/2828/#comment11464>

        As above seems like this is dead code entirely.

        trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h
        <https://reviews.apache.org/r/2828/#comment11465>

        I don't understand the design rationale here surely the whole point of the queue being waitable is to have another component wait for things to happen to the queue.

        If you want to add some sort of callback functionality surely you should add it by having something wait for the queue and then do the appropriate callback.

        That seems more appropriate separation of responsibilities to me.

        • Andrew

        On 2012-02-20 15:53:08, Darryl Pierce wrote:

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

        This is an automatically generated e-mail. To reply, visit:

        https://reviews.apache.org/r/2828/

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

        (Updated 2012-02-20 15:53:08)

        Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming.

        Summary

        -------

        This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages.

        After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc.

        This addresses bug QPID-3859.

        https://issues.apache.org/jira/browse/QPID-3859

        Diffs

        -----

        trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858

        trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/qpid.i 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858

        trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858

        trunk/qpid/cpp/examples/messaging/Makefile.am 1243858

        trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858

        trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION

        trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858

        trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION

        trunk/qpid/cpp/src/CMakeLists.txt 1243858

        trunk/qpid/cpp/src/Makefile.am 1243858

        trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION

        trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858

        trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION

        trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858

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

        Testing

        -------

        Thanks,

        Darryl

        Show
        jiraposter@reviews.apache.org added a comment - ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/#review5246 ----------------------------------------------------------- There's a whole lot of code here and I don't understand it well enough to actually review it - below are some random comments that occurred to me whilst reading through. I would say that the amount of code seems disproportionate to the actual functionality, but that is clearly subjective. However the code really isn't well enough explained to be able to understand what the pieces do and how they relate. trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h < https://reviews.apache.org/r/2828/#comment11457 > The name Prong seems inscrutable, especially without any explanation what it means. trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp < https://reviews.apache.org/r/2828/#comment11456 > Why invent a new code convention? elsewhere in the C++ code we use Class::Class() : member1(0), member2(0), .... I know your code convention is the correct one but we have 5 years of code for you to change if you think it's better than the previous! trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb < https://reviews.apache.org/r/2828/#comment11458 > This seems like a serious problem, perhaps it needs to be addressed before putting this change to trunk? trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb < https://reviews.apache.org/r/2828/#comment11459 > As previous, having to sleep for 100ms seems to indicate a severe problem being swept under the rug. Especially in an API meant to be nonblocking. trunk/qpid/cpp/include/qpid/messaging/Tracker.h < https://reviews.apache.org/r/2828/#comment11455 > I can't tell from this class what a "Tracker" is supposed to do, or how to use it - This is externally visible API so needs appropriate documentation. trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp < https://reviews.apache.org/r/2828/#comment11463 > Why the dead code in a comment? If it needs to be there say why. If not delete it, but tell me why you getDeadline and then ignore the answer. trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp < https://reviews.apache.org/r/2828/#comment11464 > As above seems like this is dead code entirely. trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h < https://reviews.apache.org/r/2828/#comment11465 > I don't understand the design rationale here surely the whole point of the queue being waitable is to have another component wait for things to happen to the queue. If you want to add some sort of callback functionality surely you should add it by having something wait for the queue and then do the appropriate callback. That seems more appropriate separation of responsibilities to me. Andrew On 2012-02-20 15:53:08, Darryl Pierce wrote: ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/ ----------------------------------------------------------- (Updated 2012-02-20 15:53:08) Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming. Summary ------- This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages. After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc. This addresses bug QPID-3859 . https://issues.apache.org/jira/browse/QPID-3859 Diffs ----- trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/qpid.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858 trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858 trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858 trunk/qpid/cpp/examples/messaging/Makefile.am 1243858 trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858 trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858 trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION trunk/qpid/cpp/src/CMakeLists.txt 1243858 trunk/qpid/cpp/src/Makefile.am 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858 trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858 Diff: https://reviews.apache.org/r/2828/diff Testing ------- Thanks, Darryl
        Hide
        jiraposter@reviews.apache.org added a comment -

        On 2012-02-21 19:33:11, Andrew Stitcher wrote:

        > trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h, line 31

        > <https://reviews.apache.org/r/2828/diff/8/?file=75227#file75227line31>

        >

        > The name Prong seems inscrutable, especially without any explanation what it means.

        A prong is a plug head, such as an electric plug.

        On 2012-02-21 19:33:11, Andrew Stitcher wrote:

        > trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb, line 94

        > <https://reviews.apache.org/r/2828/diff/8/?file=75263#file75263line94>

        >

        > This seems like a serious problem, perhaps it needs to be addressed before putting this change to trunk?

        The underlying implementation, when executing the tests, don't seem to quickly response when there are messages waiting. I'm not sure if it's in how the Ruby VM interacts with the external code or not, or if it's something else entirely.

        On 2012-02-21 19:33:11, Andrew Stitcher wrote:

        > trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp, line 124

        > <https://reviews.apache.org/r/2828/diff/8/?file=75309#file75309line124>

        >

        > Why the dead code in a comment? If it needs to be there say why. If not delete it, but tell me why you getDeadline and then ignore the answer.

        These are elements brought over from the code I copied from Gordon's patch set. I'll let him comment on them.

        On 2012-02-21 19:33:11, Andrew Stitcher wrote:

        > trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp, line 38

        > <https://reviews.apache.org/r/2828/diff/8/?file=75228#file75228line38>

        >

        > Why invent a new code convention?

        >

        > elsewhere in the C++ code we use

        >

        > Class::Class() :

        > member1(0),

        > member2(0),

        > ....

        >

        > I know your code convention is the correct one but we have 5 years of code for you to change if you think it's better than the previous!

        I would be willing to take that on as a follow-up patch set.

        • Darryl

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

        On 2012-02-20 15:53:08, Darryl Pierce wrote:

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

        This is an automatically generated e-mail. To reply, visit:

        https://reviews.apache.org/r/2828/

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

        (Updated 2012-02-20 15:53:08)

        Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming.

        Summary

        -------

        This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages.

        After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc.

        This addresses bug QPID-3859.

        https://issues.apache.org/jira/browse/QPID-3859

        Diffs

        -----

        trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858

        trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/qpid.i 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858

        trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858

        trunk/qpid/cpp/examples/messaging/Makefile.am 1243858

        trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858

        trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION

        trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858

        trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION

        trunk/qpid/cpp/src/CMakeLists.txt 1243858

        trunk/qpid/cpp/src/Makefile.am 1243858

        trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION

        trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858

        trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION

        trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858

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

        Testing

        -------

        Thanks,

        Darryl

        Show
        jiraposter@reviews.apache.org added a comment - On 2012-02-21 19:33:11, Andrew Stitcher wrote: > trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h, line 31 > < https://reviews.apache.org/r/2828/diff/8/?file=75227#file75227line31 > > > The name Prong seems inscrutable, especially without any explanation what it means. A prong is a plug head, such as an electric plug. On 2012-02-21 19:33:11, Andrew Stitcher wrote: > trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb, line 94 > < https://reviews.apache.org/r/2828/diff/8/?file=75263#file75263line94 > > > This seems like a serious problem, perhaps it needs to be addressed before putting this change to trunk? The underlying implementation, when executing the tests, don't seem to quickly response when there are messages waiting. I'm not sure if it's in how the Ruby VM interacts with the external code or not, or if it's something else entirely. On 2012-02-21 19:33:11, Andrew Stitcher wrote: > trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp, line 124 > < https://reviews.apache.org/r/2828/diff/8/?file=75309#file75309line124 > > > Why the dead code in a comment? If it needs to be there say why. If not delete it, but tell me why you getDeadline and then ignore the answer. These are elements brought over from the code I copied from Gordon's patch set. I'll let him comment on them. On 2012-02-21 19:33:11, Andrew Stitcher wrote: > trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp, line 38 > < https://reviews.apache.org/r/2828/diff/8/?file=75228#file75228line38 > > > Why invent a new code convention? > > elsewhere in the C++ code we use > > Class::Class() : > member1(0), > member2(0), > .... > > I know your code convention is the correct one but we have 5 years of code for you to change if you think it's better than the previous! I would be willing to take that on as a follow-up patch set. Darryl ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/#review5246 ----------------------------------------------------------- On 2012-02-20 15:53:08, Darryl Pierce wrote: ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/ ----------------------------------------------------------- (Updated 2012-02-20 15:53:08) Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming. Summary ------- This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages. After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc. This addresses bug QPID-3859 . https://issues.apache.org/jira/browse/QPID-3859 Diffs ----- trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/qpid.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858 trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858 trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858 trunk/qpid/cpp/examples/messaging/Makefile.am 1243858 trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858 trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858 trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION trunk/qpid/cpp/src/CMakeLists.txt 1243858 trunk/qpid/cpp/src/Makefile.am 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858 trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858 Diff: https://reviews.apache.org/r/2828/diff Testing ------- Thanks, Darryl
        Hide
        jiraposter@reviews.apache.org added a comment -

        On 2012-02-21 19:33:11, Andrew Stitcher wrote:

        > trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp, line 124

        > <https://reviews.apache.org/r/2828/diff/8/?file=75309#file75309line124>

        >

        > Why the dead code in a comment? If it needs to be there say why. If not delete it, but tell me why you getDeadline and then ignore the answer.

        Darryl Pierce wrote:

        These are elements brought over from the code I copied from Gordon's patch set. I'll let him comment on them.

        The commenting out was not from me. My initial sketch of the added API and implementation (https://reviews.apache.org/r/1687) does however have some redundant calls. It looks like they were part of the early evolution that didn't get removed. The solution is to remove the lines entirely not to comment the return value out.

        • Gordon

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

        On 2012-02-20 15:53:08, Darryl Pierce wrote:

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

        This is an automatically generated e-mail. To reply, visit:

        https://reviews.apache.org/r/2828/

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

        (Updated 2012-02-20 15:53:08)

        Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming.

        Summary

        -------

        This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages.

        After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc.

        This addresses bug QPID-3859.

        https://issues.apache.org/jira/browse/QPID-3859

        Diffs

        -----

        trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858

        trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/qpid.i 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION

        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858

        trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858

        trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858

        trunk/qpid/cpp/examples/messaging/Makefile.am 1243858

        trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858

        trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION

        trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858

        trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION

        trunk/qpid/cpp/src/CMakeLists.txt 1243858

        trunk/qpid/cpp/src/Makefile.am 1243858

        trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION

        trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION

        trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858

        trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858

        trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION

        trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858

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

        Testing

        -------

        Thanks,

        Darryl

        Show
        jiraposter@reviews.apache.org added a comment - On 2012-02-21 19:33:11, Andrew Stitcher wrote: > trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp, line 124 > < https://reviews.apache.org/r/2828/diff/8/?file=75309#file75309line124 > > > Why the dead code in a comment? If it needs to be there say why. If not delete it, but tell me why you getDeadline and then ignore the answer. Darryl Pierce wrote: These are elements brought over from the code I copied from Gordon's patch set. I'll let him comment on them. The commenting out was not from me. My initial sketch of the added API and implementation ( https://reviews.apache.org/r/1687 ) does however have some redundant calls. It looks like they were part of the early evolution that didn't get removed. The solution is to remove the lines entirely not to comment the return value out. Gordon ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/#review5246 ----------------------------------------------------------- On 2012-02-20 15:53:08, Darryl Pierce wrote: ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/ ----------------------------------------------------------- (Updated 2012-02-20 15:53:08) Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming. Summary ------- This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages. After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc. This addresses bug QPID-3859 . https://issues.apache.org/jira/browse/QPID-3859 Diffs ----- trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/qpid.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858 trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858 trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858 trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858 trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858 trunk/qpid/cpp/examples/messaging/Makefile.am 1243858 trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858 trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858 trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION trunk/qpid/cpp/src/CMakeLists.txt 1243858 trunk/qpid/cpp/src/Makefile.am 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858 trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858 trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858 trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858 Diff: https://reviews.apache.org/r/2828/diff Testing ------- Thanks, Darryl
        Hide
        jiraposter@reviews.apache.org added a comment -

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

        (Updated 2012-02-29 20:04:10.044415)

        Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming.

        Changes
        -------

        This update completely strips out the Tracker codebase and provides the non-blocking functionality separately.

        Summary
        -------

        This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages.

        After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc.

        This addresses bug QPID-3859.
        https://issues.apache.org/jira/browse/QPID-3859

        Diffs (updated)


        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1295123
        trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/sender_steps.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1295123
        trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1295123

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

        Testing
        -------

        Thanks,

        Darryl

        Show
        jiraposter@reviews.apache.org added a comment - ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/ ----------------------------------------------------------- (Updated 2012-02-29 20:04:10.044415) Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming. Changes ------- This update completely strips out the Tracker codebase and provides the non-blocking functionality separately. Summary ------- This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages. After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc. This addresses bug QPID-3859 . https://issues.apache.org/jira/browse/QPID-3859 Diffs (updated) trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1295123 trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1295123 trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1295123 trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1295123 trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1295123 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/sender_steps.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1295123 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1295123 trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1295123 Diff: https://reviews.apache.org/r/2828/diff Testing ------- Thanks, Darryl
        Hide
        jiraposter@reviews.apache.org added a comment -

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

        (Updated 2012-03-05 19:53:21.842268)

        Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming.

        Changes
        -------

        Added support for the automake environment.

        Summary
        -------

        This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages.

        After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc.

        This addresses bug QPID-3859.
        https://issues.apache.org/jira/browse/QPID-3859

        Diffs (updated)


        trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1297042
        trunk/qpid/cpp/bindings/qpid/Makefile.am 1297042
        trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/Makefile.am PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/Makefile.am 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/sender_steps.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION
        trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1297042
        trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1297042
        trunk/qpid/cpp/configure.ac 1297042

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

        Testing
        -------

        Thanks,

        Darryl

        Show
        jiraposter@reviews.apache.org added a comment - ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/2828/ ----------------------------------------------------------- (Updated 2012-03-05 19:53:21.842268) Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth Giusti, and Rafael Schloming. Changes ------- Added support for the automake environment. Summary ------- This first pass has full integration of the Tracker type with the Ruby bindings to provide a non-blocking means for responding to incoming messages. After a Receiver is created, a call to Qpid::Messaging.receive will wait for the next message to become available on it. When one is received, a provided lambda function is invoked and the receiver passed to it. The message can then be retrieved, acknowledged, etc. This addresses bug QPID-3859 . https://issues.apache.org/jira/browse/QPID-3859 Diffs (updated) trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1297042 trunk/qpid/cpp/bindings/qpid/Makefile.am 1297042 trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/Makefile.am PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/GetOrFetchImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverFetch.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiverGet.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1297042 trunk/qpid/cpp/bindings/qpid/ruby/Makefile.am 1297042 trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1297042 trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1297042 trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 1297042 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/sender_steps.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1297042 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1297042 trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1297042 trunk/qpid/cpp/configure.ac 1297042 Diff: https://reviews.apache.org/r/2828/diff Testing ------- Thanks, Darryl

          People

          • Assignee:
            Unassigned
            Reporter:
            Darryl L. Pierce
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development