qpid_proton 0.18.1 → 0.19.0
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/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
|