omq-rfc-p2p 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/p2p/version.rb +1 -1
- data/lib/omq/routing/peer.rb +23 -6
- 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: 12e2e86aa1f397b596f7aa6458d85da70ac73fbfb5dadfb13c2717a8980458ff
|
|
4
|
+
data.tar.gz: 4afbd096dd1b9db0e056a11895ea0d881dc9232ed5276308e060c8f2c3afab22
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d1ee5c58d9af01e45c97652dec44917394d44a693fa18fe20ed17ffc2a0ca2c01bf735164d1275bbe3e16a145ea555d80e9b043907e25d8e1e055f6ff8ddcf1
|
|
7
|
+
data.tar.gz: deadb7fcc0314baa64d00b21f7f0713b4d70d04db60c05d94812d838b243365e674e7d481e10d8c729c7377828c6dada3bbf99b5f39cde324697412813a21a64
|
data/lib/omq/rfc/p2p/version.rb
CHANGED
data/lib/omq/routing/peer.rb
CHANGED
|
@@ -11,13 +11,11 @@ module OMQ
|
|
|
11
11
|
# routes to the identified connection.
|
|
12
12
|
#
|
|
13
13
|
class Peer
|
|
14
|
-
include FairRecv
|
|
15
|
-
|
|
16
14
|
# @param engine [Engine]
|
|
17
15
|
#
|
|
18
16
|
def initialize(engine)
|
|
19
17
|
@engine = engine
|
|
20
|
-
@recv_queue =
|
|
18
|
+
@recv_queue = Routing.build_queue(engine.options.recv_hwm, :block)
|
|
21
19
|
@connections_by_routing_id = {}
|
|
22
20
|
@routing_id_by_connection = {}
|
|
23
21
|
@conn_queues = {}
|
|
@@ -26,10 +24,29 @@ module OMQ
|
|
|
26
24
|
end
|
|
27
25
|
|
|
28
26
|
|
|
29
|
-
# @return [
|
|
27
|
+
# @return [Async::LimitedQueue]
|
|
30
28
|
#
|
|
31
29
|
attr_reader :recv_queue
|
|
32
30
|
|
|
31
|
+
|
|
32
|
+
# Dequeues the next received message. Blocks until one is available.
|
|
33
|
+
#
|
|
34
|
+
# @return [Array<String>, nil]
|
|
35
|
+
#
|
|
36
|
+
def dequeue_recv
|
|
37
|
+
@recv_queue.dequeue
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Wakes a blocked {#dequeue_recv} with a nil sentinel.
|
|
42
|
+
#
|
|
43
|
+
# @return [void]
|
|
44
|
+
#
|
|
45
|
+
def unblock_recv
|
|
46
|
+
@recv_queue.enqueue(nil)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
33
50
|
# @param connection [Connection]
|
|
34
51
|
#
|
|
35
52
|
def connection_added(connection)
|
|
@@ -37,7 +54,8 @@ module OMQ
|
|
|
37
54
|
@connections_by_routing_id[routing_id] = connection
|
|
38
55
|
@routing_id_by_connection[connection] = routing_id
|
|
39
56
|
|
|
40
|
-
|
|
57
|
+
task = @engine.start_recv_pump(connection, @recv_queue) { |msg| [routing_id, *msg] }
|
|
58
|
+
@tasks << task if task
|
|
41
59
|
|
|
42
60
|
q = Routing.build_queue(@engine.options.send_hwm, :block)
|
|
43
61
|
@conn_queues[connection] = q
|
|
@@ -50,7 +68,6 @@ module OMQ
|
|
|
50
68
|
def connection_removed(connection)
|
|
51
69
|
routing_id = @routing_id_by_connection.delete(connection)
|
|
52
70
|
@connections_by_routing_id.delete(routing_id) if routing_id
|
|
53
|
-
@recv_queue.remove_queue(connection)
|
|
54
71
|
@conn_queues.delete(connection)
|
|
55
72
|
@conn_send_tasks.delete(connection)&.stop
|
|
56
73
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: omq-rfc-p2p
|
|
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: PEER socket type implementing ZeroMQ RFC 51 for the OMQ pure-Ruby ZeroMQ
|
|
27
27
|
library.
|
|
28
28
|
email:
|