[ 
https://issues.apache.org/jira/browse/QPID-3859?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13214639#comment-13214639
 ] 

jirapos...@reviews.apache.org commented on QPID-3859:
-----------------------------------------------------



bq.  On 2012-02-21 19:33:11, Andrew Stitcher wrote:
bq.  > trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h, line 31
bq.  > <https://reviews.apache.org/r/2828/diff/8/?file=75227#file75227line31>
bq.  >
bq.  >     The name Prong seems inscrutable, especially without any explanation 
what it means.

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


bq.  On 2012-02-21 19:33:11, Andrew Stitcher wrote:
bq.  > trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb, line 94
bq.  > <https://reviews.apache.org/r/2828/diff/8/?file=75263#file75263line94>
bq.  >
bq.  >     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.


bq.  On 2012-02-21 19:33:11, Andrew Stitcher wrote:
bq.  > trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp, line 124
bq.  > <https://reviews.apache.org/r/2828/diff/8/?file=75309#file75309line124>
bq.  >
bq.  >     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.


bq.  On 2012-02-21 19:33:11, Andrew Stitcher wrote:
bq.  > trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp, line 38
bq.  > <https://reviews.apache.org/r/2828/diff/8/?file=75228#file75228line38>
bq.  >
bq.  >     Why invent a new code convention?
bq.  >     
bq.  >     elsewhere in the C++ code we use
bq.  >     
bq.  >     Class::Class() :
bq.  >        member1(0),
bq.  >        member2(0),
bq.  >        ....
bq.  >     
bq.  >     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:
bq.  
bq.  -----------------------------------------------------------
bq.  This is an automatically generated e-mail. To reply, visit:
bq.  https://reviews.apache.org/r/2828/
bq.  -----------------------------------------------------------
bq.  
bq.  (Updated 2012-02-20 15:53:08)
bq.  
bq.  
bq.  Review request for Andrew Stitcher, Alan Conway, Gordon Sim, Kenneth 
Giusti, and Rafael Schloming.
bq.  
bq.  
bq.  Summary
bq.  -------
bq.  
bq.  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.
bq.  
bq.  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.
bq.  
bq.  
bq.  This addresses bug QPID-3859.
bq.      https://issues.apache.org/jira/browse/QPID-3859
bq.  
bq.  
bq.  Diffs
bq.  -----
bq.  
bq.    trunk/qpid/cpp/bindings/qpid/CMakeLists.txt 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/CMakeLists.txt PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.h 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/Prong.cpp 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptor.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerAdaptorImpl.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/TrackerEventHandler.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Acknowledge.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.h
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/AcknowledgeImpl.cpp
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.h
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseThreadedEventHandler.cpp
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.h
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/BaseTrackerEventHandler.cpp
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiver.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.h
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/NextReceiverImpl.cpp
 PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Receive.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/ReceiveImpl.cpp 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.h 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/Send.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SendImpl.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.h 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSync.cpp 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.h
 PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/nonblockio/qpid/messaging/synchio/SessionSyncImpl.cpp
 PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/qpid.i 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/CMakeLists.txt 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/README.rdoc 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/Rakefile 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/examples/drain.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/examples/map_receiver.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/examples/spout.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/extconf.rb PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.h 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/nonblockio.c 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_receiver.c 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_sender.c 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_session.c 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/qpid_utils.c 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_next_receiver.rb 
PRE-CREATION 
bq.    
trunk/qpid/cpp/bindings/qpid/ruby/ext/nonblockio/test_receiver_get_and_fetch.rb 
PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/features/receiving_a_message.feature 
1243858 
bq.    
trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/receiver_steps.rb 
1243858 
bq.    
trunk/qpid/cpp/bindings/qpid/ruby/features/step_definitions/session_steps.rb 
1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/address.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/connection.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/encoding.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/message.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/receiver.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/sender.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/session.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/utils.rb PRE-CREATION 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid/version.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/ruby.i 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/encoding_spec.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/message_spec.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/receiver_spec.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/sender_spec.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid/session_spec.rb 1243858 
bq.    trunk/qpid/cpp/bindings/qpid/ruby/spec/spec_helper.rb 1243858 
bq.    trunk/qpid/cpp/examples/messaging/CMakeLists.txt 1243858 
bq.    trunk/qpid/cpp/examples/messaging/Makefile.am 1243858 
bq.    trunk/qpid/cpp/examples/messaging/extra_dist/Makefile 1243858 
bq.    trunk/qpid/cpp/examples/messaging/non_blocking.cpp PRE-CREATION 
bq.    trunk/qpid/cpp/include/qpid/messaging/Session.h 1243858 
bq.    trunk/qpid/cpp/include/qpid/messaging/Tracker.h PRE-CREATION 
bq.    trunk/qpid/cpp/src/CMakeLists.txt 1243858 
bq.    trunk/qpid/cpp/src/Makefile.am 1243858 
bq.    trunk/qpid/cpp/src/qpid/client/SessionImpl.h 1243858 
bq.    trunk/qpid/cpp/src/qpid/client/SessionImpl.cpp 1243858 
bq.    trunk/qpid/cpp/src/qpid/client/amqp0_10/SenderImpl.cpp 1243858 
bq.    trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.h 1243858 
bq.    trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionImpl.cpp 1243858 
bq.    trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.h PRE-CREATION 
bq.    trunk/qpid/cpp/src/qpid/client/amqp0_10/SessionTracker.cpp PRE-CREATION 
bq.    trunk/qpid/cpp/src/qpid/messaging/Session.cpp 1243858 
bq.    trunk/qpid/cpp/src/qpid/messaging/SessionImpl.h 1243858 
bq.    trunk/qpid/cpp/src/qpid/messaging/Tracker.cpp PRE-CREATION 
bq.    trunk/qpid/cpp/src/qpid/sys/BlockingQueue.h 1243858 
bq.  
bq.  Diff: https://reviews.apache.org/r/2828/diff
bq.  
bq.  
bq.  Testing
bq.  -------
bq.  
bq.  
bq.  Thanks,
bq.  
bq.  Darryl
bq.  
bq.


                
> Provide non-blocking I/O functionality to the Ruby APIs
> -------------------------------------------------------
>
>                 Key: QPID-3859
>                 URL: https://issues.apache.org/jira/browse/QPID-3859
>             Project: Qpid
>          Issue Type: Improvement
>          Components: Ruby Client
>            Reporter: Darryl L. Pierce
>            Priority: Critical
>
> 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.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to