qpid_proton 0.4 → 0.5

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.
@@ -28,14 +28,6 @@ module Qpid
28
28
  #
29
29
  class Messenger
30
30
 
31
- # Automatically accept every message as it is returned by #get
32
- #
33
- ACCEPT_MODE_AUTO = Cproton::PN_ACCEPT_MODE_AUTO
34
-
35
- # Messages must be manually accepted or rejected using #accept
36
- #
37
- ACCEPT_MODE_MANUAL = Cproton::PN_ACCEPT_MODE_MANUAL
38
-
39
31
  include Qpid::Proton::ExceptionHandling
40
32
 
41
33
  # Creates a new +Messenger+.
@@ -54,7 +46,6 @@ module Qpid
54
46
 
55
47
  def self.finalize!(impl) # :nodoc:
56
48
  proc {
57
- Cproton.pn_messenger_stop(impl)
58
49
  Cproton.pn_messenger_free(impl)
59
50
  }
60
51
  end
@@ -84,6 +75,14 @@ module Qpid
84
75
  Cproton.pn_messenger_get_timeout(@impl)
85
76
  end
86
77
 
78
+ def blocking
79
+ Cproton.pn_mesenger_is_blocking(@impl)
80
+ end
81
+
82
+ def blocking=(blocking)
83
+ Cproton.pn_messenger_set_blocking(@impl, blocking)
84
+ end
85
+
87
86
  # Reports whether an error occurred.
88
87
  #
89
88
  def error?
@@ -99,7 +98,7 @@ module Qpid
99
98
  # Returns the most recent error message.
100
99
  #
101
100
  def error
102
- Cproton.pn_messenger_error(@impl)
101
+ Cproton.pn_error_text(Cproton.pn_messenger_error(@impl))
103
102
  end
104
103
 
105
104
  # Starts the +Messenger+, allowing it to begin sending and
@@ -116,6 +115,10 @@ module Qpid
116
115
  check_for_error(Cproton.pn_messenger_stop(@impl))
117
116
  end
118
117
 
118
+ def stopped
119
+ Cproton.pn_messenger_stopped(@impl)
120
+ end
121
+
119
122
  # Subscribes the +Messenger+ to a remote address.
120
123
  #
121
124
  def subscribe(address)
@@ -193,14 +196,17 @@ module Qpid
193
196
  def put(message)
194
197
  raise TypeError.new("invalid message: #{message}") if message.nil?
195
198
  raise ArgumentError.new("invalid message type: #{message.class}") unless message.kind_of?(Message)
199
+ # encode the message first
200
+ message.pre_encode
196
201
  check_for_error(Cproton.pn_messenger_put(@impl, message.impl))
202
+ return outgoing_tracker
197
203
  end
198
204
 
199
205
  # Sends all outgoing messages, blocking until the outgoing queue
200
206
  # is empty.
201
207
  #
202
- def send
203
- check_for_error(Cproton.pn_messenger_send(@impl))
208
+ def send(n = -1)
209
+ check_for_error(Cproton.pn_messenger_send(@impl, n))
204
210
  end
205
211
 
206
212
  # Gets a single message incoming message from the local queue.
@@ -213,9 +219,15 @@ module Qpid
213
219
  # * msg - the (optional) +Message+ instance to be used
214
220
  #
215
221
  def get(msg = nil)
216
- msg = Qpid::Proton::Message.new if msg.nil?
217
- check_for_error(Cproton.pn_messenger_get(@impl, msg.impl))
218
- return msg
222
+ msg_impl = nil
223
+ if msg.nil? then
224
+ msg_impl = nil
225
+ else
226
+ msg_impl = msg.impl
227
+ end
228
+ check_for_error(Cproton.pn_messenger_get(@impl, msg_impl))
229
+ msg.post_decode unless msg.nil?
230
+ return incoming_tracker
219
231
  end
220
232
 
221
233
  # Receives up to the specified number of messages, blocking until at least
@@ -223,12 +235,24 @@ module Qpid
223
235
  #
224
236
  # Options ====
225
237
  #
226
- # * max - the maximum number of messages to receive
238
+ # * limit - the maximum number of messages to receive
227
239
  #
228
- def receive(max)
229
- raise TypeError.new("invalid max: #{max}") if max.nil? || max.to_i.zero?
230
- raise RangeError.new("negative max: #{max}") if max < 0
231
- check_for_error(Cproton.pn_messenger_recv(@impl, max))
240
+ def receive(limit = -1)
241
+ check_for_error(Cproton.pn_messenger_recv(@impl, limit))
242
+ end
243
+
244
+ def receiving
245
+ Cproton.pn_messenger_receiving(@impl)
246
+ end
247
+
248
+ def work(timeout=-1)
249
+ err = Cproton.pn_messenger_work(@impl, timeout)
250
+ if (err == Cproton::PN_TIMEOUT) then
251
+ return false
252
+ else
253
+ check_for_error(err)
254
+ return true
255
+ end
232
256
  end
233
257
 
234
258
  # Returns the number messages in the outgoing queue that have not been
@@ -262,28 +286,6 @@ module Qpid
262
286
  Qpid::Proton::Tracker.new(impl)
263
287
  end
264
288
 
265
- # Set the accept mode for the Messenger. See #ACCEPT_MODE_AUTO and
266
- # #ACCEPT_MODE_MANUAL for more details
267
- #
268
- # ==== Options
269
- #
270
- # * mode - the acceptance mode
271
- #
272
- # ==== Examples
273
- #
274
- # @messenger.accept_mode = Qpid::Proton::Messenger::ACCEPT_MODE_AUTO
275
- #
276
- def accept_mode=(mode)
277
- raise TypeError.new("Invalid mode: #{mode}") unless valid_mode?(mode)
278
- Cproton.pn_messenger_set_accept_mode(@impl, mode)
279
- end
280
-
281
- # Returns the current acceptance mode for the Messenger.
282
- #
283
- def accept_mode
284
- Cproton.pn_messenger_get_accept_mode(@impl)
285
- end
286
-
287
289
  # Accepts the incoming message identified by the tracker.
288
290
  #
289
291
  # ==== Options
@@ -291,9 +293,14 @@ module Qpid
291
293
  # * tracker - the tracker
292
294
  # * flag - the flag
293
295
  #
294
- def accept(tracker, flag)
295
- raise TypeError.new("invalid tracker: #{tracker}") unless valid_tracker?(tracker)
296
- raise TypeError.new("invalid flag: #{flag}") unless Qpid::Proton::Tracker.valid_flag?(flag)
296
+ def accept(tracker = nil)
297
+ raise TypeError.new("invalid tracker: #{tracker}") unless tracker.nil? or valid_tracker?(tracker)
298
+ if tracker.nil? then
299
+ tracker = self.incoming_tracker
300
+ flag = Cproton::PN_CUMULATIVE
301
+ else
302
+ flag = 0
303
+ end
297
304
  check_for_error(Cproton.pn_messenger_accept(@impl, tracker.impl, flag))
298
305
  end
299
306
 
@@ -304,8 +311,14 @@ module Qpid
304
311
  # * tracker - the tracker
305
312
  # * flag - the flag
306
313
  #
307
- def reject(tracker, flag)
308
- raise TypeError.new("invalid tracker: #{tracker}") unless valid_tracker?(tracker)
314
+ def reject(tracker)
315
+ raise TypeError.new("invalid tracker: #{tracker}") unless tracker.nil? or valid_tracker?(tracker)
316
+ if tracker.nil? then
317
+ tracker = self.incoming_tracker
318
+ flag = Cproton::PN_CUMULATIVE
319
+ else
320
+ flag = 0
321
+ end
309
322
  check_for_error(Cproton.pn_messenger_reject(@impl, tracker.impl, flag))
310
323
  end
311
324
 
@@ -384,10 +397,6 @@ module Qpid
384
397
  !tracker.nil? && tracker.is_a?(Qpid::Proton::Tracker)
385
398
  end
386
399
 
387
- def valid_mode?(mode)
388
- [ACCEPT_MODE_AUTO, ACCEPT_MODE_MANUAL].include?(mode)
389
- end
390
-
391
400
  def valid_window?(window)
392
401
  !window.nil? && [Float, Fixnum].include?(window.class)
393
402
  end
metadata CHANGED
@@ -1,26 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qpid_proton
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
5
- prerelease:
4
+ version: '0.5'
6
5
  platform: ruby
7
6
  authors:
8
7
  - Darryl L. Pierce
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-01 00:00:00.000000000 Z
11
+ date: 2013-08-29 00:00:00.000000000 Z
13
12
  dependencies: []
14
- description: ! 'Proton is a high performance, lightweight messaging library. It can
15
- be used in
16
-
13
+ description: |
14
+ Proton is a high performance, lightweight messaging library. It can be used in
17
15
  the widest range of messaging applications including brokers, client libraries,
18
-
19
16
  routers, bridges, proxies, and more. Proton is based on the AMQP 1.0 messaging
20
-
21
17
  standard.
22
-
23
- '
24
18
  email:
25
19
  - proton@qpid.apache.org
26
20
  executables: []
@@ -34,37 +28,40 @@ files:
34
28
  - ext/cproton/extconf.rb
35
29
  - ext/cproton/cproton.c
36
30
  - lib/qpid_proton.rb
31
+ - lib/qpid_proton/tracker_status.rb
32
+ - lib/qpid_proton/described.rb
33
+ - lib/qpid_proton/tracker.rb
34
+ - lib/qpid_proton/hash.rb
37
35
  - lib/qpid_proton/subscription.rb
36
+ - lib/qpid_proton/message.rb
37
+ - lib/qpid_proton/message_format.rb
38
38
  - lib/qpid_proton/messenger.rb
39
- - lib/qpid_proton/tracker.rb
40
39
  - lib/qpid_proton/exception_handling.rb
41
- - lib/qpid_proton/message_format.rb
42
- - lib/qpid_proton/message.rb
43
- - lib/qpid_proton/exceptions.rb
44
40
  - lib/qpid_proton/data.rb
45
- - lib/qpid_proton/tracker_status.rb
41
+ - lib/qpid_proton/array.rb
42
+ - lib/qpid_proton/exceptions.rb
43
+ - lib/qpid_proton/mapping.rb
46
44
  homepage: http://qpid.apache.org/proton
47
45
  licenses: []
46
+ metadata: {}
48
47
  post_install_message:
49
48
  rdoc_options: []
50
49
  require_paths:
51
50
  - lib
52
51
  required_ruby_version: !ruby/object:Gem::Requirement
53
- none: false
54
52
  requirements:
55
- - - ! '>='
53
+ - - '>='
56
54
  - !ruby/object:Gem::Version
57
55
  version: '0'
58
56
  required_rubygems_version: !ruby/object:Gem::Requirement
59
- none: false
60
57
  requirements:
61
- - - ! '>='
58
+ - - '>='
62
59
  - !ruby/object:Gem::Version
63
60
  version: '0'
64
61
  requirements: []
65
62
  rubyforge_project:
66
- rubygems_version: 1.8.25
63
+ rubygems_version: 2.0.7
67
64
  signing_key:
68
- specification_version: 3
65
+ specification_version: 4
69
66
  summary: Ruby language bindings for the Qpid Proton messaging framework
70
67
  test_files: []