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 +4 -4
- data/lib/omq/rfc/channel/version.rb +1 -1
- data/lib/omq/routing/channel.rb +24 -7
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 560233028466d50b5e666511949b43796797f672467a9870ee6f236d3d377d73
|
|
4
|
+
data.tar.gz: 1c2bd20ea115be3300aeef1a8584c7bec8fe218d147efebf3510e37deb6e5617
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 313f3462098e21be10ca8ac34634fbff2622ddaff7404b9c845da897ea756f5886e207ca19d308907c3f391ad7c463967833aed334ab6173a6d960c6375d1288
|
|
7
|
+
data.tar.gz: b160c46dc8746fa6c2c20628826d4c4be0504e368877927121bd79533935d437aca1ab129ec4cb907ebd0c4aada9ae34ee812db0938bbe8122e7270763911b97
|
data/lib/omq/routing/channel.rb
CHANGED
|
@@ -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 =
|
|
13
|
+
@recv_queue = Routing.build_queue(engine.options.recv_hwm, :block)
|
|
16
14
|
@send_queue = nil
|
|
17
|
-
@staging_queue = Routing.build_queue(
|
|
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 [
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|