Class | Qpid::Proton::Event::Collector |
In: |
lib/event/collector.rb
|
Parent: | Object |
A Collector is used to register interest in events produced by one or more Connection objects.
@see Qpid::Proton::Event The list of predefined events.
@example
conn = Qpid::Proton::Connection.new coll = Qpid::Proton::Event::Collector.new conn.collect(coll) # transport setup not included here for brevity loop do # wait for an event and then perform the following event = collector.peek unless event.nil? case event.type when Qpid::Proton::Event::CONNECTION_REMOTE_CLOSE conn = event.context # the context here is the connection # the remote connection closed, so only close our side if it's # still open if !(conn.state & Qpid::Proton::Endpoint::LOCAL_CLOSED) conn.close end when Qpid::proton::Event::SESSION_REMOTE_OPEN session = event.session # the context here is the session # the remote session is now open, so if the local session is # uninitialized, then open it if session.state & Qpid::Proton::Endpoint::LOCAL_UNINIT session.incoming_capacity = 1000000 session.open end end # remove the processed event and get the next event # the loop will exit when we have no more events to process collector.pop event = collector.peek end
impl | [R] | @private |
Access the head event.
This operation will continue to return the same event until it is cleared by using pop. The pointer return by this operation will be valid until ::pn_collector_pop is invoked or free is called, whichever happens sooner.
@return [Event] the head event @return [nil] if there are no events
Place a new event on the collector.
This operation will create a new event of the given type and context and return a new Event instance. In some cases an event of a given type can be elided. When this happens, this operation will return nil.
@param context [Object] The event context. @param event_type [EventType] The event type.
@return [Event] the event if it was queued @return [nil] if it was elided