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/session.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
|
|
@@ -24,15 +23,12 @@ module Qpid::Proton
|
|
24
23
|
# A Session has a single parent Qpid::Proton::Connection instance.
|
25
24
|
#
|
26
25
|
class Session < Endpoint
|
27
|
-
|
28
|
-
# @private
|
29
|
-
include Util::Wrapper
|
30
|
-
|
31
|
-
# @private
|
32
|
-
include Util::SwigHelper
|
26
|
+
include Util::Deprecation
|
33
27
|
|
34
28
|
# @private
|
35
29
|
PROTON_METHOD_PREFIX = "pn_session"
|
30
|
+
# @private
|
31
|
+
include Util::Wrapper
|
36
32
|
|
37
33
|
# @!attribute incoming_capacity
|
38
34
|
#
|
@@ -43,10 +39,10 @@ module Qpid::Proton
|
|
43
39
|
#
|
44
40
|
# @return [Integer] The incoing capacity of the session, measured in bytes.
|
45
41
|
#
|
46
|
-
|
42
|
+
proton_set_get :incoming_capacity
|
47
43
|
|
48
44
|
# @private
|
49
|
-
|
45
|
+
proton_get :attachments
|
50
46
|
|
51
47
|
# @!attribute [r] outgoing_bytes
|
52
48
|
#
|
@@ -60,13 +56,7 @@ module Qpid::Proton
|
|
60
56
|
#
|
61
57
|
proton_caller :incoming_bytes
|
62
58
|
|
63
|
-
#
|
64
|
-
# Opens the session.
|
65
|
-
#
|
66
|
-
# Once this operaton has completed, the state flag is updated.
|
67
|
-
#
|
68
|
-
# @see LOCAL_ACTIVE
|
69
|
-
#
|
59
|
+
# Open the session
|
70
60
|
proton_caller :open
|
71
61
|
|
72
62
|
# @!attribute [r] state
|
@@ -87,28 +77,16 @@ module Qpid::Proton
|
|
87
77
|
self.class.store_instance(self, :pn_session_attachments)
|
88
78
|
end
|
89
79
|
|
90
|
-
#
|
91
|
-
#
|
92
|
-
|
93
|
-
|
94
|
-
# calling #open and then close immediately.
|
95
|
-
#
|
96
|
-
def close
|
97
|
-
self._update_condition
|
80
|
+
# Close the local end of the session. The remote end may or may not be closed.
|
81
|
+
# @param error [Condition] Optional error condition to send with the close.
|
82
|
+
def close(error=nil)
|
83
|
+
Condition.assign(_local_condition, error)
|
98
84
|
Cproton.pn_session_close(@impl)
|
99
85
|
end
|
100
86
|
|
101
|
-
#
|
102
|
-
# specified state mask.
|
103
|
-
#
|
104
|
-
# When uses with Connection#session_head an application can access all of
|
105
|
-
# the session son the connection that match the given state.
|
106
|
-
#
|
107
|
-
# @param state_mask [Integer] The state mask to match.
|
108
|
-
#
|
109
|
-
# @return [Session, nil] The next session if one matches, or nil.
|
110
|
-
#
|
87
|
+
# @deprecated use {Connection#each_session}
|
111
88
|
def next(state_mask)
|
89
|
+
deprecated __method__, "Connection#each_session"
|
112
90
|
Session.wrap(Cproton.pn_session_next(@impl, state_mask))
|
113
91
|
end
|
114
92
|
|
@@ -120,40 +98,62 @@ module Qpid::Proton
|
|
120
98
|
Connection.wrap(Cproton.pn_session_connection(@impl))
|
121
99
|
end
|
122
100
|
|
123
|
-
#
|
124
|
-
#
|
125
|
-
# Each sender between two AMQP containers must be uniquely named. Note that
|
126
|
-
# this uniqueness cannot be enforced at the library level, so some
|
127
|
-
# consideration should be taken in choosing link names.
|
128
|
-
#
|
129
|
-
# @param name [String] The link name.
|
130
|
-
#
|
131
|
-
# @return [Sender, nil] The sender, or nil if an error occurred.
|
132
|
-
#
|
101
|
+
# @deprecated use {#open_sender}
|
133
102
|
def sender(name)
|
134
|
-
|
103
|
+
deprecated __method__, "open_sender"
|
104
|
+
Sender.new(Cproton.pn_sender(@impl, name));
|
135
105
|
end
|
136
106
|
|
137
|
-
#
|
138
|
-
#
|
139
|
-
# Each receiver between two AMQP containers must be uniquely named. Note
|
140
|
-
# that this uniqueness cannot be enforced at the library level, so some
|
141
|
-
# consideration should be taken in choosing link names.
|
142
|
-
#
|
143
|
-
# @param name [String] The link name.
|
144
|
-
#
|
145
|
-
# @return [Receiver, nil] The receiver, or nil if an error occurred.
|
146
|
-
#
|
107
|
+
# @deprecated use {#open_receiver}
|
147
108
|
def receiver(name)
|
109
|
+
deprecated __method__, "open_receiver"
|
148
110
|
Receiver.new(Cproton.pn_receiver(@impl, name))
|
149
111
|
end
|
150
112
|
|
151
|
-
#
|
113
|
+
# Create and open a {Receiver} link, see {Receiver#open}
|
114
|
+
# @param opts [Hash] receiver options, see {Receiver#open}
|
115
|
+
# @return [Receiver]
|
116
|
+
def open_receiver(opts=nil)
|
117
|
+
name = opts[:name] rescue connection.link_name
|
118
|
+
Receiver.new(Cproton.pn_receiver(@impl, name)).open(opts)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Create and open a {Sender} link, see {#open}
|
122
|
+
# @param opts [Hash] sender options, see {Sender#open}
|
123
|
+
# @return [Sender]
|
124
|
+
def open_sender(opts=nil)
|
125
|
+
name = opts[:name] rescue connection.link_name
|
126
|
+
Sender.new(Cproton.pn_sender(@impl, name)).open(opts)
|
127
|
+
end
|
128
|
+
|
129
|
+
# Get the links on this Session.
|
130
|
+
# @overload each_link
|
131
|
+
# @yieldparam l [Link] pass each link to block
|
132
|
+
# @overload each_link
|
133
|
+
# @return [Enumerator] enumerator over links
|
134
|
+
def each_link
|
135
|
+
return enum_for(:each_link) unless block_given?
|
136
|
+
l = Cproton.pn_link_head(Cproton.pn_session_connection(@impl), 0);
|
137
|
+
while l
|
138
|
+
link = Link.wrap(l)
|
139
|
+
yield link if link.session == self
|
140
|
+
l = Cproton.pn_link_next(l, 0)
|
141
|
+
end
|
142
|
+
self
|
143
|
+
end
|
144
|
+
|
145
|
+
# Get the {Sender} links - see {#each_link}
|
146
|
+
def each_sender() each_link.select { |l| l.sender? }; end
|
147
|
+
|
148
|
+
# Get the {Receiver} links - see {#each_link}
|
149
|
+
def each_receiver() each_link.select { |l| l.receiver? }; end
|
150
|
+
|
151
|
+
private
|
152
|
+
|
152
153
|
def _local_condition
|
153
154
|
Cproton.pn_session_condition(@impl)
|
154
155
|
end
|
155
156
|
|
156
|
-
# @private
|
157
157
|
def _remote_condition # :nodoc:
|
158
158
|
Cproton.pn_session_remote_condition(@impl)
|
159
159
|
end
|
data/lib/core/ssl.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
|
|
@@ -52,7 +51,7 @@ module Qpid::Proton
|
|
52
51
|
# @see #resume_status
|
53
52
|
#
|
54
53
|
class SSL
|
55
|
-
|
54
|
+
|
56
55
|
# Session resume state is unkonnwn or not supported.
|
57
56
|
RESUME_UNKNOWN = Cproton::PN_SSL_RESUME_UNKNOWN
|
58
57
|
# Session renegotiated and not resumed.
|
@@ -60,17 +59,13 @@ module Qpid::Proton
|
|
60
59
|
# Session resumed from the previous session.
|
61
60
|
RESUME_REUSED = Cproton::PN_SSL_RESUME_REUSED
|
62
61
|
|
63
|
-
# @private
|
64
|
-
include Util::SwigHelper
|
65
|
-
|
66
62
|
# @private
|
67
63
|
PROTON_METHOD_PREFIX = "pn_ssl"
|
68
|
-
|
64
|
+
# @private
|
65
|
+
include Util::Wrapper
|
69
66
|
# @private
|
70
67
|
include Util::ErrorHandler
|
71
68
|
|
72
|
-
can_raise_error :peer_hostname=, :error_class => SSLError
|
73
|
-
|
74
69
|
# Returns whether SSL is supported.
|
75
70
|
#
|
76
71
|
# @return [Boolean] True if SSL support is available.
|
@@ -133,8 +128,7 @@ module Qpid::Proton
|
|
133
128
|
#
|
134
129
|
def protocol_name
|
135
130
|
rc, name = Cproton.pn_ssl_get_protocol_name(@impl, 128)
|
136
|
-
|
137
|
-
nil
|
131
|
+
name if rc
|
138
132
|
end
|
139
133
|
|
140
134
|
# Checks whether or not the state has resumed.
|
@@ -158,7 +152,5 @@ module Qpid::Proton
|
|
158
152
|
raise SSLError.new if error < 0
|
159
153
|
return name
|
160
154
|
end
|
161
|
-
|
162
155
|
end
|
163
|
-
|
164
156
|
end
|
data/lib/core/ssl_details.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
|
|
data/lib/core/ssl_domain.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
|
|
@@ -43,11 +42,6 @@ module Qpid::Proton
|
|
43
42
|
# @private
|
44
43
|
include Util::ErrorHandler
|
45
44
|
|
46
|
-
can_raise_error :credentials, :error_class => Qpid::Proton::SSLError
|
47
|
-
can_raise_error :trusted_ca_db, :error_class => Qpid::Proton::SSLError
|
48
|
-
can_raise_error :peer_authentication, :error_class => Qpid::Proton::SSLError
|
49
|
-
can_raise_error :allow_unsecured_client, :error_class => Qpid::Proton::SSLError
|
50
|
-
|
51
45
|
# @private
|
52
46
|
attr_reader :impl
|
53
47
|
|
@@ -151,6 +145,9 @@ module Qpid::Proton
|
|
151
145
|
Cproton.pn_ssl_domain_allow_unsecured_client(@impl);
|
152
146
|
end
|
153
147
|
|
148
|
+
can_raise_error :credentials, :error_class => Qpid::Proton::SSLError
|
149
|
+
can_raise_error :trusted_ca_db, :error_class => Qpid::Proton::SSLError
|
150
|
+
can_raise_error :peer_authentication, :error_class => Qpid::Proton::SSLError
|
151
|
+
can_raise_error :allow_unsecured_client, :error_class => Qpid::Proton::SSLError
|
154
152
|
end
|
155
|
-
|
156
153
|
end
|
data/lib/core/terminus.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
|
|
@@ -30,6 +29,7 @@ module Qpid::Proton
|
|
30
29
|
# the Link.
|
31
30
|
#
|
32
31
|
class Terminus
|
32
|
+
include Util::Deprecation
|
33
33
|
|
34
34
|
# Indicates a non-existent source or target terminus.
|
35
35
|
UNSPECIFIED = Cproton::PN_UNSPECIFIED
|
@@ -65,11 +65,10 @@ module Qpid::Proton
|
|
65
65
|
# The receives compete for messages.
|
66
66
|
DIST_MODE_MOVE = Cproton::PN_DIST_MODE_MOVE
|
67
67
|
|
68
|
-
# @private
|
69
|
-
include Util::SwigHelper
|
70
|
-
|
71
68
|
# @private
|
72
69
|
PROTON_METHOD_PREFIX = "pn_terminus"
|
70
|
+
# @private
|
71
|
+
include Util::Wrapper
|
73
72
|
|
74
73
|
# @!attribute type
|
75
74
|
#
|
@@ -79,15 +78,15 @@ module Qpid::Proton
|
|
79
78
|
# @see TARGET
|
80
79
|
# @see COORDINATOR
|
81
80
|
#
|
82
|
-
|
81
|
+
proton_set_get :type
|
83
82
|
|
84
83
|
# @!attribute address
|
85
84
|
#
|
86
85
|
# @return [String] The terminus address.
|
87
86
|
#
|
88
|
-
|
87
|
+
proton_set_get :address
|
89
88
|
|
90
|
-
# @!attribute
|
89
|
+
# @!attribute durability_mode
|
91
90
|
#
|
92
91
|
# @return [Integer] The durability mode of the terminus.
|
93
92
|
#
|
@@ -95,7 +94,11 @@ module Qpid::Proton
|
|
95
94
|
# @see CONFIGURATION
|
96
95
|
# @see DELIVERIES
|
97
96
|
#
|
98
|
-
|
97
|
+
proton_forward :durability_mode, :get_durability
|
98
|
+
proton_forward :durability_mode=, :set_durability
|
99
|
+
|
100
|
+
deprecated_alias :durability, :durability_mode
|
101
|
+
deprecated_alias :durability=, :durability_mode=
|
99
102
|
|
100
103
|
# @!attribute expiry_policy
|
101
104
|
#
|
@@ -106,37 +109,33 @@ module Qpid::Proton
|
|
106
109
|
# @see EXPIRE_WITH_CONNECTION
|
107
110
|
# @see EXPIRE_NEVER
|
108
111
|
#
|
109
|
-
|
112
|
+
proton_set_get :expiry_policy
|
110
113
|
|
111
114
|
# @!attribute timeout
|
112
115
|
#
|
113
116
|
# @return [Integer] The timeout period.
|
114
117
|
#
|
115
|
-
|
118
|
+
proton_set_get :timeout
|
116
119
|
|
117
120
|
# @!attribute dynamic?
|
118
121
|
#
|
119
122
|
# @return [Boolean] True if the terminus is dynamic.
|
120
123
|
#
|
121
|
-
|
124
|
+
proton_set_is :dynamic
|
122
125
|
|
123
126
|
# @!attribute distribution_mode
|
124
127
|
#
|
125
|
-
# @return [Integer] The distribution mode.
|
128
|
+
# @return [Integer] The distribution mode. Only relevant for a message source.
|
126
129
|
#
|
127
130
|
# @see DIST_MODE_UNSPECIFIED
|
128
131
|
# @see DIST_MODE_COPY
|
129
132
|
# @see DIST_MODE_MOVE
|
130
133
|
#
|
131
|
-
|
134
|
+
proton_set_get :distribution_mode
|
132
135
|
|
133
136
|
# @private
|
134
137
|
include Util::ErrorHandler
|
135
138
|
|
136
|
-
can_raise_error [:type=, :address=, :durability=, :expiry_policy=,
|
137
|
-
:timeout=, :dynamic=, :distribution_mode=, :copy],
|
138
|
-
:error_class => Qpid::Proton::LinkError
|
139
|
-
|
140
139
|
# @private
|
141
140
|
attr_reader :impl
|
142
141
|
|
@@ -157,7 +156,7 @@ module Qpid::Proton
|
|
157
156
|
# @return [Data] The terminus properties.
|
158
157
|
#
|
159
158
|
def properties
|
160
|
-
Data.new(Cproton.pn_terminus_properties(@impl))
|
159
|
+
Codec::Data.new(Cproton.pn_terminus_properties(@impl))
|
161
160
|
end
|
162
161
|
|
163
162
|
# Access and modify the AMQP capabilities data for the Terminus.
|
@@ -172,7 +171,7 @@ module Qpid::Proton
|
|
172
171
|
# @return [Data] The terminus capabilities.
|
173
172
|
#
|
174
173
|
def capabilities
|
175
|
-
Data.new(Cproton.pn_terminus_capabilities(@impl))
|
174
|
+
Codec::Data.new(Cproton.pn_terminus_capabilities(@impl))
|
176
175
|
end
|
177
176
|
|
178
177
|
# Access and modify the AMQP outcomes for the Terminus.
|
@@ -187,10 +186,11 @@ module Qpid::Proton
|
|
187
186
|
# @return [Data] The terminus outcomes.
|
188
187
|
#
|
189
188
|
def outcomes
|
190
|
-
Data.new(Cproton.pn_terminus_outcomes(@impl))
|
189
|
+
Codec::Data.new(Cproton.pn_terminus_outcomes(@impl))
|
191
190
|
end
|
192
191
|
|
193
|
-
# Access and modify the AMQP filter set for
|
192
|
+
# Access and modify the AMQP filter set for a source terminus.
|
193
|
+
# Only relevant for a message source.
|
194
194
|
#
|
195
195
|
# This operation will return an instance of Data that is valid until the
|
196
196
|
# Terminus is freed due to its parent being freed. Any data contained in
|
@@ -202,17 +202,49 @@ module Qpid::Proton
|
|
202
202
|
# @return [Data] The terminus filter.
|
203
203
|
#
|
204
204
|
def filter
|
205
|
-
Data.new(Cproton.pn_terminus_filter(@impl))
|
205
|
+
Codec::Data.new(Cproton.pn_terminus_filter(@impl))
|
206
206
|
end
|
207
207
|
|
208
|
-
#
|
209
|
-
#
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
208
|
+
# Replace the data in this Terminus with the contents of +other+
|
209
|
+
# @param other [Terminus] The other instance.
|
210
|
+
def replace(other)
|
211
|
+
Cproton.pn_terminus_copy(@impl, other.impl)
|
212
|
+
self
|
213
|
+
end
|
214
|
+
deprecated_alias :copy, :replace
|
215
|
+
|
216
|
+
# Apply options to this terminus.
|
217
|
+
# @option opts [String] :address the node address
|
218
|
+
# @option opts [Boolean] :dynamic (false)
|
219
|
+
# if true, request a new node with a unique address to be created. +:address+ is ignored.
|
220
|
+
# @option opts [Integer] :distribution_mode see {#distribution_mode}, only for source nodes
|
221
|
+
# @option opts [Integer] :durability_mode see {#durability_mode}
|
222
|
+
# @option opts [Integer] :timeout see {#timeout}
|
223
|
+
# @option opts [Integer] :expiry_policy see {#expiry_policy}
|
224
|
+
# @option opts [Hash] :filter see {#filter}, only for source nodes
|
225
|
+
# @option opts [Hash] :capabilities see {#capabilities}
|
226
|
+
def apply(opts=nil)
|
227
|
+
return unless opts
|
228
|
+
if opts.is_a? String # Shorthand for address
|
229
|
+
self.address = opts
|
230
|
+
else
|
231
|
+
opts.each_pair do |k,v|
|
232
|
+
case k
|
233
|
+
when :address then self.address = v
|
234
|
+
when :dynamic then self.dynamic = !!v
|
235
|
+
when :distribution_mode then self.distribution_mode = v
|
236
|
+
when :durability_mode then self.durability_mode = v
|
237
|
+
when :timeout then self.timeout = v
|
238
|
+
when :expiry_policy then self.expiry_policy = v
|
239
|
+
when :filter then self.filter = v
|
240
|
+
when :capabilities then self.capabilities = v
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
214
244
|
end
|
215
245
|
|
246
|
+
can_raise_error([:type=, :address=, :durability=, :expiry_policy=,
|
247
|
+
:timeout=, :dynamic=, :distribution_mode=, :copy],
|
248
|
+
:error_class => Qpid::Proton::LinkError)
|
216
249
|
end
|
217
|
-
|
218
250
|
end
|