You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by mc...@apache.org on 2015/06/18 16:03:44 UTC
[37/50] qpid-proton git commit: PROTON-781: Added reactor support to
the Ruby Event class.
PROTON-781: Added reactor support to the Ruby Event class.
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/07ddaaf3
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/07ddaaf3
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/07ddaaf3
Branch: refs/heads/PROTON-781-ruby-reactor-apis
Commit: 07ddaaf309e36f458f2e4dca6c388902d3c6a865
Parents: 83e923b
Author: Darryl L. Pierce <mc...@gmail.com>
Authored: Mon May 18 15:02:18 2015 -0400
Committer: Darryl L. Pierce <mc...@gmail.com>
Committed: Thu Jun 18 09:27:20 2015 -0400
----------------------------------------------------------------------
proton-c/bindings/ruby/lib/event/event.rb | 38 ++++++++++++++++++++------
1 file changed, 30 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/07ddaaf3/proton-c/bindings/ruby/lib/event/event.rb
----------------------------------------------------------------------
diff --git a/proton-c/bindings/ruby/lib/event/event.rb b/proton-c/bindings/ruby/lib/event/event.rb
index dd5d869..e839f63 100644
--- a/proton-c/bindings/ruby/lib/event/event.rb
+++ b/proton-c/bindings/ruby/lib/event/event.rb
@@ -37,6 +37,13 @@ module Qpid::Proton
# be generated.
NONE = event_type(:PN_EVENT_NONE)
+ # A reactor has been started.
+ REACTOR_INIT = event_type(:PN_REACTOR_INIT)
+ # A reactor has no more events to process.
+ REACTOR_QUIESCED = event_type(:PN_REACTOR_QUIESCED)
+ # A reactor has been stopred.
+ REACTOR_FINAL = event_type(:PN_REACTOR_FINAL)
+
# A timer event has occurred.
TIMER_TASK = event_type(:PN_TIMER_TASK)
@@ -199,17 +206,32 @@ module Qpid::Proton
#
def dispatch(handler, type = nil)
type = @type if type.nil?
- #notify any and all attached handlers
- if handler.respond_to?(:handlers?) && handler.handlers?
- handler.handlers.each {|hndlr| self.dispatch(hndlr, type)}
- end
- if handler.respond_to?(type.method)
- handler.__send__(type.method, self)
- elsif handler.respond_to?(:on_unhandled)
- handler.on_unhandled(self)
+ if handler.is_a?(Qpid::Proton::Handler::WrappedHandler)
+ Cproton.pn_handler_dispatch(handler.impl, @impl, type.number)
+ else
+ result = Qpid::Proton::Event.dispatch(handler, type.method, self)
+ if (result != "DELEGATED") && handler.respond_to?(:handlers)
+ handler.handlers.each do |hndlr|
+ self.dispatch(hndlr)
+ end
+ end
end
end
+ # Returns the reactor for this event.
+ #
+ # @return [Reactor, nil] The reactor.
+ #
+ def reactor
+ impl = Cproton.pn_event_reactor(@impl)
+ Qpid::Proton::Util::ClassWrapper::WRAPPERS["pn_reactor"].call(impl)
+ end
+
+ def container
+ impl = Cproton.pn_event_reactor(@impl)
+ Qpid::Proton::Util::ClassWrapper::WRAPPERS["pn_reactor"].call(impl)
+ end
+
# Returns the transport for this event.
#
# @return [Transport, nil] The transport.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org