qpid_proton 0.18.1 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/cproton/cproton.c +863 -75
- data/lib/codec/data.rb +589 -815
- data/lib/codec/mapping.rb +142 -126
- data/lib/core/condition.rb +89 -0
- data/lib/core/connection.rb +188 -228
- data/lib/core/connection_driver.rb +202 -0
- data/lib/core/container.rb +366 -0
- data/lib/core/delivery.rb +76 -251
- data/lib/core/disposition.rb +21 -35
- data/lib/core/endpoint.rb +21 -53
- data/lib/core/event.rb +156 -0
- data/lib/core/exceptions.rb +109 -106
- data/lib/core/link.rb +24 -49
- data/lib/core/listener.rb +82 -0
- data/lib/core/message.rb +59 -155
- data/lib/core/messaging_handler.rb +190 -0
- data/lib/core/receiver.rb +38 -7
- data/lib/core/sasl.rb +43 -46
- data/lib/core/sender.rb +55 -32
- data/lib/core/session.rb +58 -58
- data/lib/core/ssl.rb +5 -13
- data/lib/core/ssl_details.rb +1 -2
- data/lib/core/ssl_domain.rb +5 -8
- data/lib/core/terminus.rb +62 -30
- data/lib/core/tracker.rb +45 -0
- data/lib/core/transfer.rb +121 -0
- data/lib/core/transport.rb +62 -97
- data/lib/core/uri.rb +73 -0
- data/lib/core/url.rb +11 -7
- data/lib/handler/adapter.rb +78 -0
- data/lib/handler/messaging_adapter.rb +127 -0
- data/lib/handler/messaging_handler.rb +128 -178
- data/lib/handler/reactor_messaging_adapter.rb +158 -0
- data/lib/messenger/messenger.rb +9 -8
- data/lib/messenger/subscription.rb +1 -2
- data/lib/messenger/tracker.rb +1 -2
- data/lib/messenger/tracker_status.rb +1 -2
- data/lib/qpid_proton.rb +36 -66
- data/lib/reactor/container.rb +40 -234
- data/lib/types/array.rb +73 -130
- data/lib/types/described.rb +2 -44
- data/lib/types/hash.rb +19 -56
- data/lib/types/strings.rb +1 -2
- data/lib/types/type.rb +68 -0
- data/lib/util/{handler.rb → deprecation.rb} +22 -15
- data/lib/util/error_handler.rb +4 -25
- data/lib/util/timeout.rb +1 -2
- data/lib/util/version.rb +1 -2
- data/lib/util/wrapper.rb +58 -38
- metadata +16 -33
- data/lib/core/base_handler.rb +0 -31
- data/lib/core/selectable.rb +0 -130
- data/lib/event/collector.rb +0 -148
- data/lib/event/event.rb +0 -318
- data/lib/event/event_base.rb +0 -91
- data/lib/event/event_type.rb +0 -71
- data/lib/handler/acking.rb +0 -70
- data/lib/handler/c_adaptor.rb +0 -47
- data/lib/handler/c_flow_controller.rb +0 -33
- data/lib/handler/endpoint_state_handler.rb +0 -217
- data/lib/handler/incoming_message_handler.rb +0 -74
- data/lib/handler/outgoing_message_handler.rb +0 -100
- data/lib/handler/wrapped_handler.rb +0 -76
- data/lib/reactor/acceptor.rb +0 -41
- data/lib/reactor/backoff.rb +0 -41
- data/lib/reactor/connector.rb +0 -115
- data/lib/reactor/global_overrides.rb +0 -44
- data/lib/reactor/link_option.rb +0 -90
- data/lib/reactor/reactor.rb +0 -196
- data/lib/reactor/session_per_connection.rb +0 -45
- data/lib/reactor/ssl_config.rb +0 -41
- data/lib/reactor/task.rb +0 -39
- data/lib/reactor/urls.rb +0 -45
- data/lib/util/class_wrapper.rb +0 -54
- data/lib/util/condition.rb +0 -47
- data/lib/util/constants.rb +0 -85
- data/lib/util/engine.rb +0 -82
- data/lib/util/reactor.rb +0 -32
- data/lib/util/swig_helper.rb +0 -114
- data/lib/util/uuid.rb +0 -32
data/lib/core/link.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Licensed to the Apache Software Foundation (ASF) under one
|
3
2
|
# or more contributor license agreements. See the NOTICE file
|
4
3
|
# distributed with this work for additional information
|
@@ -15,7 +14,7 @@
|
|
15
14
|
# KIND, either express or implied. See the License for the
|
16
15
|
# specific language governing permissions and limitations
|
17
16
|
# under the License.
|
18
|
-
|
17
|
+
|
19
18
|
|
20
19
|
module Qpid::Proton
|
21
20
|
|
@@ -26,6 +25,11 @@ module Qpid::Proton
|
|
26
25
|
#
|
27
26
|
class Link < Endpoint
|
28
27
|
|
28
|
+
# @private
|
29
|
+
PROTON_METHOD_PREFIX = "pn_link"
|
30
|
+
# @private
|
31
|
+
include Util::Wrapper
|
32
|
+
|
29
33
|
# The sender will send all deliveries initially unsettled.
|
30
34
|
SND_UNSETTLED = Cproton::PN_SND_UNSETTLED
|
31
35
|
# The sender will send all deliveries settled to the receiver.
|
@@ -38,36 +42,21 @@ module Qpid::Proton
|
|
38
42
|
# The receiver will only settle deliveries after the sender settles.
|
39
43
|
RCV_SECOND = Cproton::PN_RCV_SECOND
|
40
44
|
|
41
|
-
# @private
|
42
|
-
include Util::SwigHelper
|
43
|
-
|
44
|
-
# @private
|
45
|
-
PROTON_METHOD_PREFIX = "pn_link"
|
46
|
-
|
47
45
|
# @!attribute [r] state
|
48
46
|
#
|
49
47
|
# Returns the endpoint state flags.
|
50
48
|
#
|
51
49
|
proton_caller :state
|
52
50
|
|
53
|
-
#
|
54
|
-
#
|
55
|
-
# Opens the link. Once this operation has completed, the state flag will be
|
56
|
-
# set.
|
57
|
-
#
|
58
|
-
# @see Endpoint::LOCAL_ACTIVE
|
51
|
+
# @deprecated Use {Sender#open} or {Receiver#open}
|
59
52
|
proton_caller :open
|
60
53
|
|
61
|
-
#
|
62
|
-
#
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
# calling #open and then #close.
|
68
|
-
#
|
69
|
-
# @see Endpoint::LOCAL_CLOSED
|
70
|
-
proton_caller :close
|
54
|
+
# Close the local end of the link. The remote end may or may not be closed.
|
55
|
+
# @param error [Condition] Optional error condition to send with the close.
|
56
|
+
def close(error=nil)
|
57
|
+
Condition.assign(_local_condition, error)
|
58
|
+
Cproton.pn_link_close(@impl)
|
59
|
+
end
|
71
60
|
|
72
61
|
# @!method detach
|
73
62
|
#
|
@@ -176,7 +165,7 @@ module Qpid::Proton
|
|
176
165
|
#
|
177
166
|
# @return [Boolean] True if the link is a sender.
|
178
167
|
#
|
179
|
-
|
168
|
+
proton_is :sender
|
180
169
|
|
181
170
|
# @!attribute [r] receiver?
|
182
171
|
#
|
@@ -184,10 +173,10 @@ module Qpid::Proton
|
|
184
173
|
#
|
185
174
|
# @return [Boolean] True if the link is a receiver.
|
186
175
|
#
|
187
|
-
|
176
|
+
proton_is :receiver
|
188
177
|
|
189
178
|
# @private
|
190
|
-
|
179
|
+
proton_get :attachments
|
191
180
|
|
192
181
|
# Drains excess credit.
|
193
182
|
#
|
@@ -207,20 +196,11 @@ module Qpid::Proton
|
|
207
196
|
#
|
208
197
|
proton_caller :drained
|
209
198
|
|
210
|
-
# @private
|
211
|
-
include Util::Wrapper
|
212
|
-
|
213
199
|
# @private
|
214
200
|
def self.wrap(impl)
|
215
|
-
return
|
216
|
-
|
217
|
-
|
218
|
-
return result unless result.nil?
|
219
|
-
if Cproton.pn_link_is_sender(impl)
|
220
|
-
return Sender.new(impl)
|
221
|
-
elsif Cproton.pn_link_is_receiver(impl)
|
222
|
-
return Receiver.new(impl)
|
223
|
-
end
|
201
|
+
return unless impl
|
202
|
+
return fetch_instance(impl, :pn_link_attachments) ||
|
203
|
+
(Cproton.pn_link_is_sender(impl) ? Sender : Receiver).new(impl)
|
224
204
|
end
|
225
205
|
|
226
206
|
# @private
|
@@ -241,13 +221,9 @@ module Qpid::Proton
|
|
241
221
|
Cproton.pn_link_error(@impl)
|
242
222
|
end
|
243
223
|
|
244
|
-
#
|
245
|
-
#
|
246
|
-
# @param state_mask [Integer] The state mask.
|
247
|
-
#
|
248
|
-
# @return [Sender, Receiver] The next link.
|
249
|
-
#
|
224
|
+
# @deprecated use {Session#each_link, Connection#each_link}
|
250
225
|
def next(state_mask)
|
226
|
+
deprecated __method__, "Session#each_link, Connection#each_link"
|
251
227
|
return Link.wrap(Cproton.pn_link_next(@impl, state_mask))
|
252
228
|
end
|
253
229
|
|
@@ -298,11 +274,10 @@ module Qpid::Proton
|
|
298
274
|
self.session.connection
|
299
275
|
end
|
300
276
|
|
301
|
-
|
302
|
-
#
|
303
|
-
# @return [Delivery] The delivery.
|
304
|
-
#
|
277
|
+
|
278
|
+
# @deprecated use {Sender#send}
|
305
279
|
def delivery(tag)
|
280
|
+
deprecated __method__, "Sender#send"
|
306
281
|
Delivery.new(Cproton.pn_delivery(@impl, tag))
|
307
282
|
end
|
308
283
|
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
2
|
+
# or more contributor license agreements. See the NOTICE file
|
3
|
+
# distributed with this work for additional information
|
4
|
+
# regarding copyright ownership. The ASF licenses this file
|
5
|
+
# to you under the Apache License, Version 2.0 (the
|
6
|
+
# "License"); you may not use this file except in compliance
|
7
|
+
# with the License. You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
|
19
|
+
module Qpid::Proton
|
20
|
+
# A listener for incoming connections.
|
21
|
+
#
|
22
|
+
# Create with {Container#listen} or {Container#listen_io}.
|
23
|
+
# To control the handler and connection options applied to incoming connections,
|
24
|
+
# pass a {ListenerHandler} on creation.
|
25
|
+
#
|
26
|
+
class Listener
|
27
|
+
|
28
|
+
# Class that handles listener events and provides options for accepted
|
29
|
+
# connections. This class simply returns a fixed set of options for every
|
30
|
+
# connection accepted, but you can subclass and override all of the on_
|
31
|
+
# methods to provide more interesting behaviour.
|
32
|
+
class Handler
|
33
|
+
# @param opts [Hash] Options to return from on_accept.
|
34
|
+
def initialize(opts=nil) @opts = opts || {}; end
|
35
|
+
|
36
|
+
# Called when the listener is ready to accept connections.
|
37
|
+
# @param listener [Listener] The listener
|
38
|
+
def on_open(listener) end
|
39
|
+
|
40
|
+
# Called if an error occurs.
|
41
|
+
# If there is an error while opening the listener, this method is
|
42
|
+
# called and {#on_open} is not
|
43
|
+
# @param listener [Listener]
|
44
|
+
# @param what [Condition] Information about the error.
|
45
|
+
def on_error(listener, what) end
|
46
|
+
|
47
|
+
# Called when a listener accepts a new connection.
|
48
|
+
# @param listener [Listener] The listener
|
49
|
+
# @return [Hash] Options to apply to the incoming connection, see {#connect}
|
50
|
+
def on_accept(listener) @opts; end
|
51
|
+
|
52
|
+
# Called when the listener closes.
|
53
|
+
# @param listener [Listener] The listener accepting the connection.
|
54
|
+
def on_close(listener) end
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [Container] The listener's container
|
58
|
+
attr_reader :container
|
59
|
+
|
60
|
+
# @return [Condition] The error condition if there is one
|
61
|
+
attr_reader :condition
|
62
|
+
|
63
|
+
# Close the listener
|
64
|
+
# @param error [Condition] Optional error condition.
|
65
|
+
def close(error=nil)
|
66
|
+
@closing = true
|
67
|
+
@condition ||= Condition.convert error
|
68
|
+
@io.close_read rescue nil # Cause listener to wake out of IO.select
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
|
72
|
+
# Get the {IO} server socket used by the listener
|
73
|
+
def to_io() @io; end
|
74
|
+
|
75
|
+
private # Called by {Container}
|
76
|
+
|
77
|
+
def initialize(io, handler, container)
|
78
|
+
@io, @handler = io, handler
|
79
|
+
@container = container
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
data/lib/core/message.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
#--
|
2
1
|
# Licensed to the Apache Software Foundation (ASF) under one
|
3
2
|
# or more contributor license agreements. See the NOTICE file
|
4
3
|
# distributed with this work for additional information
|
@@ -15,77 +14,45 @@
|
|
15
14
|
# KIND, either express or implied. See the License for the
|
16
15
|
# specific language governing permissions and limitations
|
17
16
|
# under the License.
|
18
|
-
|
17
|
+
|
19
18
|
|
20
19
|
module Qpid::Proton
|
21
20
|
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# ==== Message Body
|
25
|
-
#
|
26
|
-
# The message body can be set using the #body= method. The message will
|
27
|
-
# then attempt to determine how exactly to encode the content.
|
28
|
-
#
|
29
|
-
# ==== Examples
|
21
|
+
# Messsage data and headers that can sent or received on a {Link}
|
30
22
|
#
|
31
|
-
#
|
23
|
+
# {#body} is the main message content.
|
24
|
+
# {#properties} is a {Hash} of extra properties that can be attached to the message.
|
32
25
|
#
|
33
|
-
#
|
34
|
-
# msg = Qpid::Proton::Message.new
|
35
|
-
# msg.body = "STATE: update"
|
26
|
+
# @example Create a message containing a Unicode string
|
27
|
+
# msg = Qpid::Proton::Message.new "this is a string"
|
36
28
|
#
|
37
|
-
#
|
38
|
-
# data = File.binread("/home/qpid/binfile.tar.gz")
|
29
|
+
# @example Create a message containing binary data
|
39
30
|
# msg = Qpid::Proton::Message.new
|
40
|
-
# msg.body = Qpid::Proton::BinaryString.new(
|
31
|
+
# msg.body = Qpid::Proton::BinaryString.new(File.binread("/home/qpid/binfile.tar.gz"))
|
41
32
|
#
|
42
33
|
class Message
|
34
|
+
include Util::Deprecation
|
43
35
|
|
44
36
|
# @private
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
sender.stream(encoded)
|
49
|
-
sender.advance
|
50
|
-
dlv.settle if sender.snd_settle_mode == Link::SND_SETTLED
|
51
|
-
return dlv
|
52
|
-
end
|
37
|
+
PROTON_METHOD_PREFIX = "pn_message"
|
38
|
+
# @private
|
39
|
+
include Util::Wrapper
|
53
40
|
|
54
|
-
# Decodes a message from
|
55
|
-
#
|
56
|
-
#
|
57
|
-
# ==== Options
|
58
|
-
#
|
59
|
-
# * encoded - the encoded data
|
60
|
-
#
|
41
|
+
# Decodes a message from AMQP binary data.
|
42
|
+
# @param encoded [String] the encoded bytes
|
43
|
+
# @return[Integer] the number of bytes consumed
|
61
44
|
def decode(encoded)
|
62
45
|
check(Cproton.pn_message_decode(@impl, encoded, encoded.length))
|
63
|
-
|
64
46
|
post_decode
|
65
47
|
end
|
66
48
|
|
67
|
-
|
49
|
+
# @private
|
50
|
+
def post_decode
|
68
51
|
# decode elements from the message
|
69
|
-
@properties = {}
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
74
|
-
@instructions = nil
|
75
|
-
insts = Codec::Data.new(Cproton::pn_message_instructions(@impl))
|
76
|
-
if insts.next
|
77
|
-
@instructions = insts.type.get(insts)
|
78
|
-
end
|
79
|
-
@annotations = nil
|
80
|
-
annts = Codec::Data.new(Cproton::pn_message_annotations(@impl))
|
81
|
-
if annts.next
|
82
|
-
@annotations = annts.type.get(annts)
|
83
|
-
end
|
84
|
-
@body = nil
|
85
|
-
body = Codec::Data.new(Cproton::pn_message_body(@impl))
|
86
|
-
if body.next
|
87
|
-
@body = body.type.get(body)
|
88
|
-
end
|
52
|
+
@properties = Codec::Data.to_object(Cproton::pn_message_properties(@impl)) || {}
|
53
|
+
@instructions = Codec:: Data.to_object(Cproton::pn_message_instructions(@impl)) || {}
|
54
|
+
@annotations = Codec::Data.to_object(Cproton::pn_message_annotations(@impl)) || {}
|
55
|
+
@body = Codec::Data.to_object(Cproton::pn_message_body(@impl))
|
89
56
|
end
|
90
57
|
|
91
58
|
# Encodes the message.
|
@@ -103,47 +70,38 @@ module Qpid::Proton
|
|
103
70
|
end
|
104
71
|
end
|
105
72
|
|
106
|
-
|
73
|
+
# @private
|
74
|
+
def pre_encode
|
107
75
|
# encode elements from the message
|
108
|
-
|
109
|
-
|
110
|
-
Codec::
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
end
|
117
|
-
annts = Codec::Data.new(Cproton::pn_message_annotations(@impl))
|
118
|
-
annts.clear
|
119
|
-
if !@annotations.nil?
|
120
|
-
mapping = Codec::Mapping.for_class(@annotations.class)
|
121
|
-
mapping.put(annts, @annotations, :keys => :SYMBOL)
|
122
|
-
end
|
123
|
-
body = Codec::Data.new(Cproton::pn_message_body(@impl))
|
124
|
-
body.clear
|
125
|
-
if !@body.nil?
|
126
|
-
mapping = Codec::Mapping.for_class(@body.class)
|
127
|
-
mapping.put(body, @body)
|
76
|
+
Codec::Data.from_object(Cproton::pn_message_properties(@impl),
|
77
|
+
!@properties.empty? && Types.symbol_keys!(@properties))
|
78
|
+
Codec::Data.from_object(Cproton::pn_message_instructions(@impl),
|
79
|
+
!@instructions.empty? && Types.symbol_keys!(@instructions))
|
80
|
+
if @annotations # Make sure keys are symbols
|
81
|
+
@annotations.keys.each do |k|
|
82
|
+
@annotations[k.to_sym] = @annotations.delete(k) unless k.is_a? Symbol
|
83
|
+
end
|
128
84
|
end
|
85
|
+
Codec::Data.from_object(Cproton::pn_message_annotations(@impl), !@annotations.empty? && @annotations)
|
86
|
+
Codec::Data.from_object(Cproton::pn_message_body(@impl), @body)
|
129
87
|
end
|
130
88
|
|
131
89
|
# Creates a new +Message+ instance.
|
132
|
-
|
90
|
+
# @param body the body of the message, equivalent to calling m.body=(body)
|
91
|
+
# @param opts [Hash] additional options, equivalent to +Message#key=value+ for each +key=>value+
|
92
|
+
def initialize(body = nil, opts={})
|
133
93
|
@impl = Cproton.pn_message
|
134
94
|
ObjectSpace.define_finalizer(self, self.class.finalize!(@impl))
|
135
95
|
@properties = {}
|
136
96
|
@instructions = {}
|
137
97
|
@annotations = {}
|
138
98
|
self.body = body unless body.nil?
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
Cproton.pn_free(tmp)
|
146
|
-
return result
|
99
|
+
if !opts.nil? then
|
100
|
+
opts.each do |k, v|
|
101
|
+
setter = (k.to_s+"=").to_sym()
|
102
|
+
self.send setter, v
|
103
|
+
end
|
104
|
+
end
|
147
105
|
end
|
148
106
|
|
149
107
|
# Invoked by garbage collection to clean up resources used
|
@@ -409,11 +367,13 @@ module Qpid::Proton
|
|
409
367
|
|
410
368
|
# @deprecated use {#body=}
|
411
369
|
def content=(content)
|
370
|
+
deprecated __method__, "body="
|
412
371
|
Cproton.pn_message_load(@impl, content)
|
413
372
|
end
|
414
373
|
|
415
374
|
# @deprecated use {#body}
|
416
375
|
def content
|
376
|
+
deprecated __method__, "body"
|
417
377
|
size = 16
|
418
378
|
loop do
|
419
379
|
result = Cproton.pn_message_save(@impl, size)
|
@@ -529,88 +489,32 @@ module Qpid::Proton
|
|
529
489
|
Cproton.pn_message_get_reply_to_group_id(@impl)
|
530
490
|
end
|
531
491
|
|
532
|
-
#
|
533
|
-
|
534
|
-
# ==== Examples
|
535
|
-
#
|
536
|
-
# msg.properties.each do |name|
|
537
|
-
# end
|
538
|
-
#
|
539
|
-
def properties
|
540
|
-
@properties
|
541
|
-
end
|
542
|
-
|
543
|
-
# Replaces the entire set of properties with the specified hash.
|
544
|
-
#
|
545
|
-
def properties=(properties)
|
546
|
-
@properties = properties
|
547
|
-
end
|
492
|
+
# @return [Hash] Application properties for the message
|
493
|
+
attr_accessor :properties
|
548
494
|
|
549
|
-
#
|
550
|
-
|
551
|
-
# ==== Arguments
|
552
|
-
#
|
553
|
-
# * name - the property name
|
554
|
-
# * value - the property value
|
555
|
-
#
|
556
|
-
def []=(name, value)
|
557
|
-
@properties[name] = value
|
558
|
-
end
|
495
|
+
# Equivalent to +{#properties}[name] = value+
|
496
|
+
def []=(name, value) @properties[name] = value; end
|
559
497
|
|
560
|
-
#
|
561
|
-
|
562
|
-
#
|
563
|
-
def [](name)
|
564
|
-
@properties[name]
|
565
|
-
end
|
498
|
+
# Equivalent to +{#properties}[name]+
|
499
|
+
def [](name) @properties[name]; end
|
566
500
|
|
567
|
-
#
|
568
|
-
|
569
|
-
def delete_property(name)
|
570
|
-
@properties.delete(name)
|
571
|
-
end
|
501
|
+
# Equivalent to +{#properties}.delete(name)+
|
502
|
+
def delete_property(name) @properties.delete(name); end
|
572
503
|
|
573
|
-
#
|
574
|
-
|
575
|
-
def instructions
|
576
|
-
@instructions
|
577
|
-
end
|
578
|
-
|
579
|
-
# Assigns instructions to this message.
|
580
|
-
#
|
581
|
-
def instructions=(instr)
|
582
|
-
@instructions = instr
|
583
|
-
end
|
584
|
-
|
585
|
-
# Returns the annotations for this message.
|
586
|
-
#
|
587
|
-
def annotations
|
588
|
-
@annotations
|
589
|
-
end
|
504
|
+
# @return [Hash] Delivery instructions for this message.
|
505
|
+
attr_accessor :instructions
|
590
506
|
|
591
|
-
#
|
592
|
-
|
593
|
-
def annotations=(annotations)
|
594
|
-
@annotations = annotations
|
595
|
-
end
|
507
|
+
# @return [Hash] Delivery annotations for this message.
|
508
|
+
attr_accessor :annotations
|
596
509
|
|
597
|
-
#
|
598
|
-
|
599
|
-
def body
|
600
|
-
@body
|
601
|
-
end
|
602
|
-
|
603
|
-
# Assigns a new value to the body of the message.
|
604
|
-
#
|
605
|
-
def body=(body)
|
606
|
-
@body = body
|
607
|
-
end
|
510
|
+
# @return [Object] body of the message.
|
511
|
+
attr_accessor :body
|
608
512
|
|
609
513
|
private
|
610
514
|
|
611
515
|
def check(err) # :nodoc:
|
612
516
|
if err < 0
|
613
|
-
raise
|
517
|
+
raise TypeError, "[#{err}]: #{Cproton.pn_message_error(@data)}"
|
614
518
|
else
|
615
519
|
return err
|
616
520
|
end
|