bundesstrasse 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/bundesstrasse.rb +4 -1
- data/lib/bundesstrasse/context.rb +27 -4
- data/lib/bundesstrasse/devices.rb +7 -7
- data/lib/bundesstrasse/socket.rb +10 -4
- data/lib/bundesstrasse/version.rb +1 -1
- metadata +4 -5
- data/lib/bundesstrasse/sockets.rb +0 -70
data/lib/bundesstrasse.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
require 'ffi-rzmq'
|
2
2
|
|
3
|
+
module Bundesstrasse
|
4
|
+
Poller = ZMQ::Poller
|
5
|
+
end
|
6
|
+
|
3
7
|
require 'bundesstrasse/errors'
|
4
8
|
require 'bundesstrasse/context'
|
5
9
|
require 'bundesstrasse/socket'
|
6
|
-
require 'bundesstrasse/sockets'
|
7
10
|
require 'bundesstrasse/device'
|
8
11
|
require 'bundesstrasse/devices'
|
@@ -7,10 +7,16 @@ module Bundesstrasse
|
|
7
7
|
@zmq_context = zmq_context
|
8
8
|
end
|
9
9
|
|
10
|
-
def socket(
|
11
|
-
raise ContextError
|
12
|
-
|
13
|
-
|
10
|
+
def socket(socket_type, options={})
|
11
|
+
raise ContextError, 'Context terminated' if terminated?
|
12
|
+
socket_type = translate_socket_type(socket_type)
|
13
|
+
zmq_socket = error_check { @zmq_context.socket(socket_type) }
|
14
|
+
case socket_type
|
15
|
+
when ZMQ::SUB, ZMQ::XSUB
|
16
|
+
SubSocket.new(zmq_socket, options)
|
17
|
+
else
|
18
|
+
Socket.new(zmq_socket, options)
|
19
|
+
end
|
14
20
|
rescue ZMQError => e
|
15
21
|
ContextError.raise_error(e)
|
16
22
|
end
|
@@ -27,6 +33,23 @@ module Bundesstrasse
|
|
27
33
|
def self.create(options={})
|
28
34
|
new ZMQ::Context.create(options[:io_threads] || 1)
|
29
35
|
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
SYMBOLIC_TYPES = [:pair, :pub, :sub, :req, :rep, :dealer, :router, :pull, :push, :xpub, :xsub].freeze
|
40
|
+
|
41
|
+
def translate_socket_type(type)
|
42
|
+
return type unless type.is_a?(Symbol)
|
43
|
+
SYMBOLIC_TYPES.index(type)
|
44
|
+
end
|
45
|
+
|
46
|
+
public
|
47
|
+
|
48
|
+
SYMBOLIC_TYPES.each do |type|
|
49
|
+
define_method("#{type}_socket") do |options={}|
|
50
|
+
socket(type, options)
|
51
|
+
end
|
52
|
+
end
|
30
53
|
end
|
31
54
|
|
32
55
|
ContextError = Class.new(ZMQError)
|
@@ -7,12 +7,12 @@ module Bundesstrasse
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def create_endpoint!(options={})
|
10
|
-
@context.socket(
|
10
|
+
@context.socket(ZMQ::REP, options)
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.create(context)
|
14
|
-
frontend = context.socket(
|
15
|
-
backend = context.socket(
|
14
|
+
frontend = context.socket(ZMQ::ROUTER)
|
15
|
+
backend = context.socket(ZMQ::DEALER)
|
16
16
|
new(context, frontend, backend)
|
17
17
|
end
|
18
18
|
end
|
@@ -23,8 +23,8 @@ module Bundesstrasse
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def self.create(context)
|
26
|
-
frontend = context.socket(
|
27
|
-
backend = context.socket(
|
26
|
+
frontend = context.socket(ZMQ::SUB)
|
27
|
+
backend = context.socket(ZMQ::PUB)
|
28
28
|
new(frontend, backend)
|
29
29
|
end
|
30
30
|
end
|
@@ -35,8 +35,8 @@ module Bundesstrasse
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.create(context)
|
38
|
-
frontend = context.socket(
|
39
|
-
backend = context.socket(
|
38
|
+
frontend = context.socket(ZMQ::PULL)
|
39
|
+
backend = context.socket(ZMQ::PUSH)
|
40
40
|
new(frontend, backend)
|
41
41
|
end
|
42
42
|
end
|
data/lib/bundesstrasse/socket.rb
CHANGED
@@ -60,10 +60,6 @@ module Bundesstrasse
|
|
60
60
|
@connected
|
61
61
|
end
|
62
62
|
|
63
|
-
def self.type
|
64
|
-
raise NotImplementedError, 'Subclasses must override Socket::type'
|
65
|
-
end
|
66
|
-
|
67
63
|
private
|
68
64
|
|
69
65
|
def connected_error_check(&block)
|
@@ -92,6 +88,16 @@ module Bundesstrasse
|
|
92
88
|
end
|
93
89
|
end
|
94
90
|
|
91
|
+
class SubSocket < Socket
|
92
|
+
def subscribe(topic)
|
93
|
+
error_check { @socket.setsockopt(ZMQ::SUBSCRIBE, topic) }
|
94
|
+
end
|
95
|
+
|
96
|
+
def unsubscribe(topic)
|
97
|
+
error_check { @socket.setsockopt(ZMQ::UNSUBSCRIBE, topic) }
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
95
101
|
SocketError = Class.new(ZMQError)
|
96
102
|
TermError = Class.new(ZMQError)
|
97
103
|
AgainError = Class.new(ZMQError)
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundesstrasse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.9
|
5
4
|
prerelease:
|
5
|
+
version: 0.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Joel Segerlind
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi-rzmq
|
@@ -78,7 +78,6 @@ files:
|
|
78
78
|
- lib/bundesstrasse/devices.rb
|
79
79
|
- lib/bundesstrasse/errors.rb
|
80
80
|
- lib/bundesstrasse/socket.rb
|
81
|
-
- lib/bundesstrasse/sockets.rb
|
82
81
|
- lib/bundesstrasse/version.rb
|
83
82
|
homepage: https://github.com/jowl/bundesstrasse
|
84
83
|
licenses: []
|
@@ -92,9 +91,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
91
|
- !ruby/object:Gem::Version
|
93
92
|
segments:
|
94
93
|
- 0
|
94
|
+
hash: 2
|
95
95
|
version: !binary |-
|
96
96
|
MA==
|
97
|
-
hash: 2
|
98
97
|
none: false
|
99
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
99
|
requirements:
|
@@ -102,9 +101,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
101
|
- !ruby/object:Gem::Version
|
103
102
|
segments:
|
104
103
|
- 0
|
104
|
+
hash: 2
|
105
105
|
version: !binary |-
|
106
106
|
MA==
|
107
|
-
hash: 2
|
108
107
|
none: false
|
109
108
|
requirements: []
|
110
109
|
rubyforge_project:
|
@@ -1,70 +0,0 @@
|
|
1
|
-
|
2
|
-
module Bundesstrasse
|
3
|
-
class ReqSocket < Socket
|
4
|
-
def self.type
|
5
|
-
ZMQ::REQ
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
class RepSocket < Socket
|
10
|
-
def self.type
|
11
|
-
ZMQ::REP
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
class DealerSocket < Socket
|
16
|
-
def self.type
|
17
|
-
ZMQ::DEALER
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
class RouterSocket < Socket
|
22
|
-
def self.type
|
23
|
-
ZMQ::ROUTER
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class PushSocket < Socket
|
28
|
-
def self.type
|
29
|
-
ZMQ::PUSH
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
class PullSocket < Socket
|
34
|
-
def self.type
|
35
|
-
ZMQ::PULL
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
class PubSocket < Socket
|
40
|
-
def self.type
|
41
|
-
ZMQ::PUB
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class SubSocket < Socket
|
46
|
-
def self.type
|
47
|
-
ZMQ::SUB
|
48
|
-
end
|
49
|
-
|
50
|
-
def subscribe(topic)
|
51
|
-
error_check { @socket.setsockopt(ZMQ::SUBSCRIBE, topic) }
|
52
|
-
end
|
53
|
-
|
54
|
-
def unsubscribe(topic)
|
55
|
-
error_check { @socket.setsockopt(ZMQ::UNSUBSCRIBE, topic) }
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class XPubSocket < Socket
|
60
|
-
def self.type
|
61
|
-
ZMQ::XPUB
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
class XSubSocket < SubSocket
|
66
|
-
def self.type
|
67
|
-
ZMQ::XSUB
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|