omq-rfc-channel 0.1.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14060392a596605abfc8b2271521af046493eb3dd790c6c54b0912caf636248c
4
- data.tar.gz: 01d874adeac30c7b8d859cc09dc9353716ddc4e7c4f25171dd1f355b617c3ca4
3
+ metadata.gz: 560233028466d50b5e666511949b43796797f672467a9870ee6f236d3d377d73
4
+ data.tar.gz: 1c2bd20ea115be3300aeef1a8584c7bec8fe218d147efebf3510e37deb6e5617
5
5
  SHA512:
6
- metadata.gz: f264bdcb001dfa314c8df88130bc556c6da262139a00ce6bb0430c80354fca26a32563d036b2428207bf5dc6e666b2f6d17f860eb18eac81ac9cda2a725140b2
7
- data.tar.gz: 92177bc4b476656dab7bfca9c36730e03a22d8a183e41817a2d2e84ad5cc5a4b58e4d86e0bed6d66792ace4cefb5eb42a7b9583d29225e41185b81641f0d74b8
6
+ metadata.gz: 313f3462098e21be10ca8ac34634fbff2622ddaff7404b9c845da897ea756f5886e207ca19d308907c3f391ad7c463967833aed334ab6173a6d960c6375d1288
7
+ data.tar.gz: b160c46dc8746fa6c2c20628826d4c4be0504e368877927121bd79533935d437aca1ab129ec4cb907ebd0c4aada9ae34ee812db0938bbe8122e7270763911b97
@@ -4,7 +4,7 @@ module OMQ
4
4
  module RFC
5
5
  # CHANNEL socket type extension (ZeroMQ RFC 52).
6
6
  module Channel
7
- VERSION = "0.1.1"
7
+ VERSION = "0.2.0"
8
8
  end
9
9
  end
10
10
  end
@@ -5,25 +5,42 @@ module OMQ
5
5
  # CHANNEL socket routing: exclusive 1-to-1 bidirectional.
6
6
  #
7
7
  class Channel
8
- include FairRecv
9
-
10
8
  # @param engine [Engine]
11
9
  #
12
10
  def initialize(engine)
13
11
  @engine = engine
14
12
  @connection = nil
15
- @recv_queue = FairQueue.new
13
+ @recv_queue = Routing.build_queue(engine.options.recv_hwm, :block)
16
14
  @send_queue = nil
17
- @staging_queue = Routing.build_queue(@engine.options.send_hwm, :block)
15
+ @staging_queue = Routing.build_queue(engine.options.send_hwm, :block)
18
16
  @send_pump = nil
19
17
  @tasks = []
20
18
  end
21
19
 
22
20
 
23
- # @return [FairQueue]
21
+ # @return [Async::LimitedQueue]
24
22
  #
25
23
  attr_reader :recv_queue
26
24
 
25
+
26
+ # Dequeues the next received message. Blocks until one is available.
27
+ #
28
+ # @return [Array<String>, nil]
29
+ #
30
+ def dequeue_recv
31
+ @recv_queue.dequeue
32
+ end
33
+
34
+
35
+ # Wakes a blocked {#dequeue_recv} with a nil sentinel.
36
+ #
37
+ # @return [void]
38
+ #
39
+ def unblock_recv
40
+ @recv_queue.enqueue(nil)
41
+ end
42
+
43
+
27
44
  # @param connection [Connection]
28
45
  # @raise [RuntimeError] if a connection already exists
29
46
  #
@@ -31,7 +48,8 @@ module OMQ
31
48
  raise "CHANNEL allows only one peer" if @connection
32
49
  @connection = connection
33
50
 
34
- add_fair_recv_connection(connection)
51
+ task = @engine.start_recv_pump(connection, @recv_queue)
52
+ @tasks << task if task
35
53
 
36
54
  unless connection.is_a?(Transport::Inproc::DirectPipe)
37
55
  @send_queue = Routing.build_queue(@engine.options.send_hwm, :block)
@@ -48,7 +66,6 @@ module OMQ
48
66
  def connection_removed(connection)
49
67
  if @connection == connection
50
68
  @connection = nil
51
- @recv_queue.remove_queue(connection)
52
69
  @send_queue = nil
53
70
  @send_pump&.stop
54
71
  @send_pump = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omq-rfc-channel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Wenger
@@ -13,16 +13,16 @@ dependencies:
13
13
  name: omq
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">="
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0.20'
18
+ version: '0.21'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - ">="
23
+ - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0.20'
25
+ version: '0.21'
26
26
  description: CHANNEL socket type implementing ZeroMQ RFC 52 for the OMQ pure-Ruby
27
27
  ZeroMQ library.
28
28
  email: