qpid_proton 0.9.0 → 0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/codec/data.rb +912 -0
- data/lib/codec/mapping.rb +169 -0
- data/lib/{qpid_proton/tracker.rb → core/base_handler.rb} +4 -15
- data/lib/core/connection.rb +328 -0
- data/lib/core/delivery.rb +271 -0
- data/lib/core/disposition.rb +158 -0
- data/lib/core/endpoint.rb +140 -0
- data/lib/{qpid_proton → core}/exceptions.rb +43 -2
- data/lib/core/link.rb +387 -0
- data/lib/core/message.rb +633 -0
- data/lib/core/receiver.rb +95 -0
- data/lib/core/sasl.rb +94 -0
- data/lib/core/selectable.rb +130 -0
- data/lib/core/sender.rb +76 -0
- data/lib/core/session.rb +163 -0
- data/lib/core/ssl.rb +164 -0
- data/lib/{qpid_proton/version.rb → core/ssl_details.rb} +7 -6
- data/lib/core/ssl_domain.rb +156 -0
- data/lib/core/terminus.rb +218 -0
- data/lib/core/transport.rb +411 -0
- data/lib/core/url.rb +77 -0
- data/lib/event/collector.rb +148 -0
- data/lib/event/event.rb +318 -0
- data/lib/event/event_base.rb +91 -0
- data/lib/event/event_type.rb +71 -0
- data/lib/handler/acking.rb +70 -0
- data/lib/handler/c_adaptor.rb +47 -0
- data/lib/handler/c_flow_controller.rb +33 -0
- data/lib/handler/endpoint_state_handler.rb +217 -0
- data/lib/handler/incoming_message_handler.rb +74 -0
- data/lib/handler/messaging_handler.rb +218 -0
- data/lib/handler/outgoing_message_handler.rb +98 -0
- data/lib/handler/wrapped_handler.rb +76 -0
- data/lib/messenger/messenger.rb +702 -0
- data/lib/messenger/subscription.rb +37 -0
- data/lib/messenger/tracker.rb +38 -0
- data/lib/messenger/tracker_status.rb +69 -0
- data/lib/qpid_proton.rb +106 -16
- data/lib/reactor/acceptor.rb +41 -0
- data/lib/reactor/backoff.rb +41 -0
- data/lib/reactor/connector.rb +98 -0
- data/lib/reactor/container.rb +272 -0
- data/lib/reactor/global_overrides.rb +44 -0
- data/lib/reactor/link_option.rb +90 -0
- data/lib/reactor/reactor.rb +198 -0
- data/lib/reactor/session_per_connection.rb +45 -0
- data/lib/reactor/ssl_config.rb +41 -0
- data/lib/reactor/task.rb +39 -0
- data/lib/{qpid_proton/subscription.rb → reactor/urls.rb} +12 -13
- data/lib/{qpid_proton → types}/array.rb +28 -29
- data/lib/types/described.rb +63 -0
- data/lib/{qpid_proton → types}/hash.rb +4 -3
- data/lib/types/strings.rb +62 -0
- data/lib/util/class_wrapper.rb +54 -0
- data/lib/util/condition.rb +45 -0
- data/lib/util/constants.rb +85 -0
- data/lib/util/engine.rb +82 -0
- data/lib/util/error_handler.rb +127 -0
- data/lib/util/handler.rb +41 -0
- data/lib/util/reactor.rb +32 -0
- data/lib/util/swig_helper.rb +114 -0
- data/lib/util/timeout.rb +50 -0
- data/lib/util/uuid.rb +32 -0
- data/lib/util/version.rb +30 -0
- data/lib/util/wrapper.rb +124 -0
- metadata +67 -21
- data/ext/cproton/cproton.c +0 -22196
- data/lib/qpid_proton/data.rb +0 -788
- data/lib/qpid_proton/described.rb +0 -66
- data/lib/qpid_proton/exception_handling.rb +0 -127
- data/lib/qpid_proton/filters.rb +0 -67
- data/lib/qpid_proton/mapping.rb +0 -170
- data/lib/qpid_proton/message.rb +0 -621
- data/lib/qpid_proton/messenger.rb +0 -702
- data/lib/qpid_proton/selectable.rb +0 -126
- data/lib/qpid_proton/strings.rb +0 -65
- data/lib/qpid_proton/tracker_status.rb +0 -73
@@ -0,0 +1,148 @@
|
|
1
|
+
#--
|
2
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
3
|
+
# or more contributor license agreements. See the NOTICE file
|
4
|
+
# distributed with this work for additional information
|
5
|
+
# regarding copyright ownership. The ASF licenses this file
|
6
|
+
# to you under the Apache License, Version 2.0 (the
|
7
|
+
# "License"); you may not use this file except in compliance
|
8
|
+
# with the License. You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing,
|
13
|
+
# software distributed under the License is distributed on an
|
14
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
15
|
+
# KIND, either express or implied. See the License for the
|
16
|
+
# specific language governing permissions and limitations
|
17
|
+
# under the License.
|
18
|
+
#++
|
19
|
+
|
20
|
+
module Qpid::Proton::Event
|
21
|
+
|
22
|
+
# A Collector is used to register interest in events produced by one
|
23
|
+
# or more Connection objects.
|
24
|
+
#
|
25
|
+
# == Events
|
26
|
+
#
|
27
|
+
# @see Qpid::Proton::Event The list of predefined events.
|
28
|
+
#
|
29
|
+
# @example
|
30
|
+
#
|
31
|
+
# conn = Qpid::Proton::Connection.new
|
32
|
+
# coll = Qpid::Proton::Event::Collector.new
|
33
|
+
# conn.collect(coll)
|
34
|
+
#
|
35
|
+
# # transport setup not included here for brevity
|
36
|
+
#
|
37
|
+
# loop do
|
38
|
+
#
|
39
|
+
# # wait for an event and then perform the following
|
40
|
+
#
|
41
|
+
# event = collector.peek
|
42
|
+
#
|
43
|
+
# unless event.nil?
|
44
|
+
# case event.type
|
45
|
+
#
|
46
|
+
# when Qpid::Proton::Event::CONNECTION_REMOTE_CLOSE
|
47
|
+
# conn = event.context # the context here is the connection
|
48
|
+
# # the remote connection closed, so only close our side if it's
|
49
|
+
# # still open
|
50
|
+
# if !(conn.state & Qpid::Proton::Endpoint::LOCAL_CLOSED)
|
51
|
+
# conn.close
|
52
|
+
# end
|
53
|
+
#
|
54
|
+
# when Qpid::proton::Event::SESSION_REMOTE_OPEN
|
55
|
+
# session = event.session # the context here is the session
|
56
|
+
# # the remote session is now open, so if the local session is
|
57
|
+
# # uninitialized, then open it
|
58
|
+
# if session.state & Qpid::Proton::Endpoint::LOCAL_UNINIT
|
59
|
+
# session.incoming_capacity = 1000000
|
60
|
+
# session.open
|
61
|
+
# end
|
62
|
+
#
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# # remove the processed event and get the next event
|
66
|
+
# # the loop will exit when we have no more events to process
|
67
|
+
# collector.pop
|
68
|
+
# event = collector.peek
|
69
|
+
#
|
70
|
+
# end
|
71
|
+
#
|
72
|
+
class Collector
|
73
|
+
|
74
|
+
# @private
|
75
|
+
attr_reader :impl
|
76
|
+
|
77
|
+
# Creates a new Collector.
|
78
|
+
#
|
79
|
+
def initialize
|
80
|
+
@impl = Cproton.pn_collector
|
81
|
+
ObjectSpace.define_finalizer(self, self.class.finalize!(@impl))
|
82
|
+
end
|
83
|
+
|
84
|
+
# @private
|
85
|
+
def self.finalize!(impl)
|
86
|
+
proc {
|
87
|
+
Cproton.pn_collector_free(impl)
|
88
|
+
}
|
89
|
+
end
|
90
|
+
|
91
|
+
# Releases the collector.
|
92
|
+
#
|
93
|
+
# Once in a released state, a collector will drain any internally queued
|
94
|
+
# events, shrink its memory footprint to a minimu, and discard any newly
|
95
|
+
# created events.
|
96
|
+
#
|
97
|
+
def release
|
98
|
+
Cproton.pn_collector_release(@impl)
|
99
|
+
end
|
100
|
+
|
101
|
+
# Place a new event on the collector.
|
102
|
+
#
|
103
|
+
# This operation will create a new event of the given type and context
|
104
|
+
# and return a new Event instance. In some cases an event of a given
|
105
|
+
# type can be elided. When this happens, this operation will return
|
106
|
+
# nil.
|
107
|
+
#
|
108
|
+
# @param context [Object] The event context.
|
109
|
+
# @param event_type [EventType] The event type.
|
110
|
+
#
|
111
|
+
# @return [Event] the event if it was queued
|
112
|
+
# @return [nil] if it was elided
|
113
|
+
#
|
114
|
+
def put(context, event_type)
|
115
|
+
Cproton.pn_collector_put(@impl, Cproton.pn_rb2void(context), event_type.type_code)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Access the head event.
|
119
|
+
#
|
120
|
+
# This operation will continue to return the same event until it is
|
121
|
+
# cleared by using #pop. The pointer return by this operation will be
|
122
|
+
# valid until ::pn_collector_pop is invoked or #free is called, whichever
|
123
|
+
# happens sooner.
|
124
|
+
#
|
125
|
+
# @return [Event] the head event
|
126
|
+
# @return [nil] if there are no events
|
127
|
+
#
|
128
|
+
# @see #pop
|
129
|
+
# @see #put
|
130
|
+
#
|
131
|
+
def peek
|
132
|
+
Event.wrap(Cproton.pn_collector_peek(@impl))
|
133
|
+
end
|
134
|
+
|
135
|
+
# Clear the head event.
|
136
|
+
#
|
137
|
+
# @return [Boolean] true if an event was removed
|
138
|
+
#
|
139
|
+
# @see #release
|
140
|
+
# @see #peek
|
141
|
+
#
|
142
|
+
def pop
|
143
|
+
Cproton.pn_collector_pop(@impl)
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
end
|
data/lib/event/event.rb
ADDED
@@ -0,0 +1,318 @@
|
|
1
|
+
#--
|
2
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
3
|
+
# or more contributor license agreements. See the NOTICE file
|
4
|
+
# distributed with this work for additional information
|
5
|
+
# regarding copyright ownership. The ASF licenses this file
|
6
|
+
# to you under the Apache License, Version 2.0 (the
|
7
|
+
# "License"); you may not use this file except in compliance
|
8
|
+
# with the License. You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing,
|
13
|
+
# software distributed under the License is distributed on an
|
14
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
15
|
+
# KIND, either express or implied. See the License for the
|
16
|
+
# specific language governing permissions and limitations
|
17
|
+
# under the License.
|
18
|
+
#++
|
19
|
+
|
20
|
+
module Qpid::Proton
|
21
|
+
|
22
|
+
module Event
|
23
|
+
|
24
|
+
# @private
|
25
|
+
def self.event_type(const_name, method_name = nil) # :nodoc:
|
26
|
+
unless Cproton.const_defined?(const_name)
|
27
|
+
raise RuntimeError.new("no such constant: #{const_name}")
|
28
|
+
end
|
29
|
+
|
30
|
+
const_value = Cproton.const_get(const_name)
|
31
|
+
method_name = "on_#{const_name.to_s[3..-1]}".downcase if method_name.nil?
|
32
|
+
|
33
|
+
EventType.new(const_value, method_name)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Defined as a programming convenience. No even of this type will ever
|
37
|
+
# be generated.
|
38
|
+
NONE = event_type(:PN_EVENT_NONE)
|
39
|
+
|
40
|
+
# A reactor has been started.
|
41
|
+
REACTOR_INIT = event_type(:PN_REACTOR_INIT)
|
42
|
+
# A reactor has no more events to process.
|
43
|
+
REACTOR_QUIESCED = event_type(:PN_REACTOR_QUIESCED)
|
44
|
+
# A reactor has been stopred.
|
45
|
+
REACTOR_FINAL = event_type(:PN_REACTOR_FINAL)
|
46
|
+
|
47
|
+
# A timer event has occurred.
|
48
|
+
TIMER_TASK = event_type(:PN_TIMER_TASK)
|
49
|
+
|
50
|
+
# A connection has been created. This is the first even that will ever
|
51
|
+
# be issued for a connection.
|
52
|
+
CONNECTION_INIT = event_type(:PN_CONNECTION_INIT)
|
53
|
+
# A conneciton has been bound toa transport.
|
54
|
+
CONNECTION_BOUND = event_type(:PN_CONNECTION_BOUND)
|
55
|
+
# A connection has been unbound from its transport.
|
56
|
+
CONNECTION_UNBOUND = event_type(:PN_CONNECTION_UNBOUND)
|
57
|
+
# A local connection endpoint has been opened.
|
58
|
+
CONNECTION_LOCAL_OPEN = event_type(:PN_CONNECTION_LOCAL_OPEN)
|
59
|
+
# A local connection endpoint has been closed.
|
60
|
+
CONNECTION_LOCAL_CLOSE = event_type(:PN_CONNECTION_LOCAL_CLOSE)
|
61
|
+
# A remote endpoint has opened its connection.
|
62
|
+
CONNECTION_REMOTE_OPEN = event_type(:PN_CONNECTION_REMOTE_OPEN)
|
63
|
+
# A remote endpoint has closed its connection.
|
64
|
+
CONNECTION_REMOTE_CLOSE = event_type(:PN_CONNECTION_REMOTE_CLOSE)
|
65
|
+
# A connection has been freed and any outstanding processing has been
|
66
|
+
# completed. This is the final event htat will ever be issued for a
|
67
|
+
# connection
|
68
|
+
CONNECTION_FINAL = event_type(:PN_CONNECTION_FINAL)
|
69
|
+
|
70
|
+
# A session has been created. This is the first event that will ever be
|
71
|
+
# issues for a session.
|
72
|
+
SESSION_INIT = event_type(:PN_SESSION_INIT)
|
73
|
+
# A local session endpoint has been opened.
|
74
|
+
SESSION_LOCAL_OPEN = event_type(:PN_SESSION_LOCAL_OPEN)
|
75
|
+
# A local session endpoint has been closed.
|
76
|
+
SESSION_LOCAL_CLOSE = event_type(:PN_SESSION_LOCAL_CLOSE)
|
77
|
+
# A remote endpoint has opened its session.
|
78
|
+
SESSION_REMOTE_OPEN = event_type(:PN_SESSION_REMOTE_OPEN)
|
79
|
+
# A remote endpoint has closed its session.
|
80
|
+
SESSION_REMOTE_CLOSE = event_type(:PN_SESSION_REMOTE_CLOSE)
|
81
|
+
# A session has been freed and any outstanding processing has been
|
82
|
+
# completed. This is the final event that will ever be issued for a
|
83
|
+
# session
|
84
|
+
SESSION_FINAL = event_type(:PN_SESSION_FINAL)
|
85
|
+
|
86
|
+
# A link has been created. This is the first event that will ever be
|
87
|
+
# issued for a link.
|
88
|
+
LINK_INIT = event_type(:PN_LINK_INIT)
|
89
|
+
# A local link endpoint has been opened.
|
90
|
+
LINK_LOCAL_OPEN = event_type(:PN_LINK_LOCAL_OPEN)
|
91
|
+
# A local link endpoint has been closed.
|
92
|
+
LINK_LOCAL_CLOSE = event_type(:PN_LINK_LOCAL_CLOSE)
|
93
|
+
# A local link endpoint has been detached.
|
94
|
+
LINK_LOCAL_DETACH = event_type(:PN_LINK_LOCAL_DETACH)
|
95
|
+
# A remote endpoint has opened its link.
|
96
|
+
LINK_REMOTE_OPEN = event_type(:PN_LINK_REMOTE_OPEN)
|
97
|
+
# A remote endpoint has closed its link.
|
98
|
+
LINK_REMOTE_CLOSE = event_type(:PN_LINK_REMOTE_CLOSE)
|
99
|
+
# A remote endpoint has detached its link.
|
100
|
+
LINK_REMOTE_DETACH = event_type(:PN_LINK_REMOTE_DETACH)
|
101
|
+
# The flow control state for a link has changed.
|
102
|
+
LINK_FLOW = event_type(:PN_LINK_FLOW)
|
103
|
+
# A link has been freed and any outstanding processing has been completed.
|
104
|
+
# This is the final event htat will ever be issued for a link.
|
105
|
+
LINK_FINAL = event_type(:PN_LINK_FINAL)
|
106
|
+
|
107
|
+
# A delivery has been created or updated.
|
108
|
+
DELIVERY = event_type(:PN_DELIVERY)
|
109
|
+
|
110
|
+
# A transport has new data to read and/or write.
|
111
|
+
TRANSPORT = event_type(:PN_TRANSPORT)
|
112
|
+
# Indicates that a transport error has occurred.
|
113
|
+
# @see Transport#condition To access the details of the error.
|
114
|
+
TRANSPORT_ERROR = event_type(:PN_TRANSPORT_ERROR)
|
115
|
+
# Indicates that the head of a transport has been closed. This means the
|
116
|
+
# transport will never produce more bytes for output to the network.
|
117
|
+
TRANSPORT_HEAD_CLOSED = event_type(:PN_TRANSPORT_HEAD_CLOSED)
|
118
|
+
# Indicates that the trail of a transport has been closed. This means the
|
119
|
+
# transport will never be able to process more bytes from the network.
|
120
|
+
TRANSPORT_TAIL_CLOSED = event_type(:PN_TRANSPORT_TAIL_CLOSED)
|
121
|
+
# Indicates that both the head and tail of a transport are closed.
|
122
|
+
TRANSPORT_CLOSED = event_type(:PN_TRANSPORT_CLOSED)
|
123
|
+
|
124
|
+
SELECTABLE_INIT = event_type(:PN_SELECTABLE_INIT)
|
125
|
+
SELECTABLE_UPDATED = event_type(:PN_SELECTABLE_UPDATED)
|
126
|
+
SELECTABLE_READABLE = event_type(:PN_SELECTABLE_READABLE)
|
127
|
+
SELECTABLE_WRITABLE = event_type(:PN_SELECTABLE_WRITABLE)
|
128
|
+
SELECTABLE_EXPIRED = event_type(:PN_SELECTABLE_EXPIRED)
|
129
|
+
SELECTABLE_ERROR = event_type(:PN_SELECTABLE_ERROR)
|
130
|
+
SELECTABLE_FINAL = event_type(:PN_SELECTABLE_FINAL)
|
131
|
+
|
132
|
+
# An Event provides notification of a state change within the protocol
|
133
|
+
# engine.
|
134
|
+
#
|
135
|
+
# Every event has a type that identifies what sort of state change has
|
136
|
+
# occurred, along with a pointer to the object whose state has changed,
|
137
|
+
# and also any associated objects.
|
138
|
+
#
|
139
|
+
# For more details on working with Event, please refer to Collector.
|
140
|
+
#
|
141
|
+
# @see Qpid::Proton::Event The list of predefined events.
|
142
|
+
#
|
143
|
+
class Event < EventBase
|
144
|
+
|
145
|
+
# @private
|
146
|
+
include Qpid::Proton::Util::ClassWrapper
|
147
|
+
# @private
|
148
|
+
include Qpid::Proton::Util::Wrapper
|
149
|
+
|
150
|
+
# Creates a Ruby object for the given pn_event_t.
|
151
|
+
#
|
152
|
+
# @private
|
153
|
+
def self.wrap(impl, number = nil)
|
154
|
+
return nil if impl.nil?
|
155
|
+
|
156
|
+
result = self.fetch_instance(impl, :pn_event_attachments)
|
157
|
+
return result unless result.nil?
|
158
|
+
number = Cproton.pn_event_type(impl) if number.nil?
|
159
|
+
event = Event.new(impl, number)
|
160
|
+
return event.context if event.context.is_a? EventBase
|
161
|
+
return event
|
162
|
+
end
|
163
|
+
|
164
|
+
# @private
|
165
|
+
def initialize(impl, number)
|
166
|
+
@impl = impl
|
167
|
+
class_name = Cproton.pn_class_name(Cproton.pn_event_class(impl))
|
168
|
+
context = class_wrapper(class_name, Cproton.pn_event_context(impl))
|
169
|
+
event_type = EventType.by_type(Cproton.pn_event_type(impl))
|
170
|
+
super(class_name, context, event_type)
|
171
|
+
@type = EventType.by_type(number)
|
172
|
+
self.class.store_instance(self, :pn_event_attachments)
|
173
|
+
end
|
174
|
+
|
175
|
+
# Notifies the handler(s) of this event.
|
176
|
+
#
|
177
|
+
# If a handler responds to the event's method then that method is invoked
|
178
|
+
# and passed the event. Otherwise, if the handler defines the
|
179
|
+
# +on_unhandled+ method, then that will be invoked instead.
|
180
|
+
#
|
181
|
+
# If the handler defines a +handlers+ method then that will be invoked and
|
182
|
+
# passed the event afterward.
|
183
|
+
#
|
184
|
+
# @example
|
185
|
+
#
|
186
|
+
# class FallbackEventHandler
|
187
|
+
#
|
188
|
+
# # since it now defines a handlers method, any event will iterate
|
189
|
+
# # through them and invoke the +dispatch+ method on each
|
190
|
+
# attr_accessor handlers
|
191
|
+
#
|
192
|
+
# def initialize
|
193
|
+
# @handlers = []
|
194
|
+
# end
|
195
|
+
#
|
196
|
+
# # invoked for any event not otherwise handled
|
197
|
+
# def on_unhandled(event)
|
198
|
+
# puts "Unable to invoke #{event.type.method} on #{event.context}."
|
199
|
+
# end
|
200
|
+
#
|
201
|
+
# end
|
202
|
+
#
|
203
|
+
# @param handler [Object] An object which implements either the event's
|
204
|
+
# handler method or else responds to :handlers with an array of other
|
205
|
+
# handlers.
|
206
|
+
#
|
207
|
+
def dispatch(handler, type = nil)
|
208
|
+
type = @type if type.nil?
|
209
|
+
if handler.is_a?(Qpid::Proton::Handler::WrappedHandler)
|
210
|
+
Cproton.pn_handler_dispatch(handler.impl, @impl, type.number)
|
211
|
+
else
|
212
|
+
result = Qpid::Proton::Event.dispatch(handler, type.method, self)
|
213
|
+
if (result != "DELEGATED") && handler.respond_to?(:handlers)
|
214
|
+
handler.handlers.each do |hndlr|
|
215
|
+
self.dispatch(hndlr)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
# Returns the reactor for this event.
|
222
|
+
#
|
223
|
+
# @return [Reactor, nil] The reactor.
|
224
|
+
#
|
225
|
+
def reactor
|
226
|
+
impl = Cproton.pn_event_reactor(@impl)
|
227
|
+
Qpid::Proton::Util::ClassWrapper::WRAPPERS["pn_reactor"].call(impl)
|
228
|
+
end
|
229
|
+
|
230
|
+
def container
|
231
|
+
impl = Cproton.pn_event_reactor(@impl)
|
232
|
+
Qpid::Proton::Util::ClassWrapper::WRAPPERS["pn_reactor"].call(impl)
|
233
|
+
end
|
234
|
+
|
235
|
+
# Returns the transport for this event.
|
236
|
+
#
|
237
|
+
# @return [Transport, nil] The transport.
|
238
|
+
#
|
239
|
+
def transport
|
240
|
+
Qpid::Proton::Transport.wrap(Cproton.pn_event_transport(@impl))
|
241
|
+
end
|
242
|
+
|
243
|
+
# Returns the Connection for this event.
|
244
|
+
#
|
245
|
+
# @return [Connection, nil] The connection.
|
246
|
+
#
|
247
|
+
def connection
|
248
|
+
Qpid::Proton::Connection.wrap(Cproton.pn_event_connection(@impl))
|
249
|
+
end
|
250
|
+
|
251
|
+
# Returns the Session for this event.
|
252
|
+
#
|
253
|
+
# @return [Session, nil] The session
|
254
|
+
#
|
255
|
+
def session
|
256
|
+
Qpid::Proton::Session.wrap(Cproton.pn_event_session(@impl))
|
257
|
+
end
|
258
|
+
|
259
|
+
# Returns the Link for this event.
|
260
|
+
#
|
261
|
+
# @return [Link, nil] The link.
|
262
|
+
#
|
263
|
+
def link
|
264
|
+
Qpid::Proton::Link.wrap(Cproton.pn_event_link(@impl))
|
265
|
+
end
|
266
|
+
|
267
|
+
# Returns the Sender, or nil if there is no Link, associated with this
|
268
|
+
# event if that link is a sender.
|
269
|
+
#
|
270
|
+
# @return [Sender, nil] The sender.
|
271
|
+
#
|
272
|
+
def sender
|
273
|
+
return self.link if !self.link.nil? && self.link.sender?
|
274
|
+
end
|
275
|
+
|
276
|
+
# Returns the Receiver, or nil if there is no Link, associated with this
|
277
|
+
# event if that link is a receiver.
|
278
|
+
#
|
279
|
+
# @return [Receiver, nil] The receiver.
|
280
|
+
#
|
281
|
+
def receiver
|
282
|
+
return self.link if !self.link.nil? && self.link.receiver?
|
283
|
+
end
|
284
|
+
|
285
|
+
# Returns the Delivery associated with this event.
|
286
|
+
#
|
287
|
+
# @return [Delivery, nil] The delivery.
|
288
|
+
#
|
289
|
+
def delivery
|
290
|
+
Qpid::Proton::Delivery.wrap(Cproton.pn_event_delivery(@impl))
|
291
|
+
end
|
292
|
+
|
293
|
+
# Sets the message.
|
294
|
+
#
|
295
|
+
# @param message [Qpid::Proton::Message] The message
|
296
|
+
#
|
297
|
+
def message=(message)
|
298
|
+
@message = message
|
299
|
+
end
|
300
|
+
|
301
|
+
# Returns the message.
|
302
|
+
#
|
303
|
+
# @return [Qpid::Proton::Message] The message.
|
304
|
+
#
|
305
|
+
def message
|
306
|
+
@message
|
307
|
+
end
|
308
|
+
|
309
|
+
# @private
|
310
|
+
def to_s
|
311
|
+
"#{self.type}(#{self.context})"
|
312
|
+
end
|
313
|
+
|
314
|
+
end
|
315
|
+
|
316
|
+
end
|
317
|
+
|
318
|
+
end
|