bzmq 0.0.1-java
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.
- data/lib/bzmq.rb +6 -0
- data/lib/bzmq/context.rb +12 -0
- data/lib/bzmq/socket.rb +56 -0
- data/lib/bzmq/sockets.rb +58 -0
- metadata +105 -0
data/lib/bzmq.rb
ADDED
data/lib/bzmq/context.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
module BZMQ
|
3
|
+
ContextError = Class.new(StandardError)
|
4
|
+
|
5
|
+
class Context
|
6
|
+
def self.context(io_threads=1)
|
7
|
+
@io_threads = io_threads unless @context
|
8
|
+
raise ContextError unless @io_threads == io_threads
|
9
|
+
@context ||= ZMQ::Context.create io_threads
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/bzmq/socket.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
|
2
|
+
module BZMQ
|
3
|
+
class Socket
|
4
|
+
def initialize(type, options={})
|
5
|
+
context = Context.context(options[:io_threads] || 1)
|
6
|
+
@socket = context.socket(type)
|
7
|
+
raise SocketError unless @socket
|
8
|
+
error_check { @socket.setsockopt ZMQ::LINGER, options[:linger] || -1 }
|
9
|
+
error_check { @socket.setsockopt ZMQ::RCVTIMEO, options[:timeout] || -1 }
|
10
|
+
error_check { @socket.setsockopt ZMQ::SNDTIMEO, options[:timeout] || -1 }
|
11
|
+
end
|
12
|
+
|
13
|
+
def bind(address)
|
14
|
+
@connected = error_check { @socket.bind(address) }
|
15
|
+
end
|
16
|
+
|
17
|
+
def connect(address)
|
18
|
+
@connected = error_check { @socket.connect(address) }
|
19
|
+
end
|
20
|
+
|
21
|
+
def close
|
22
|
+
!(@connected = !error_check { @socket.close })
|
23
|
+
end
|
24
|
+
|
25
|
+
def read(buffer='')
|
26
|
+
connected_error_check { @socket.recv_string buffer }
|
27
|
+
buffer
|
28
|
+
end
|
29
|
+
|
30
|
+
def write(message)
|
31
|
+
connected_error_check { @socket.send_string message }
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def connected_error_check(&block)
|
37
|
+
raise SocketError, 'Not connected' unless @connected
|
38
|
+
error_check(&block)
|
39
|
+
end
|
40
|
+
|
41
|
+
def error_check(&block)
|
42
|
+
unless ZMQ::Util.resultcode_ok? block.call
|
43
|
+
raise SocketError.new(ZMQ::Util.error_string, ZMQ::Util.errno)
|
44
|
+
end
|
45
|
+
true
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class SocketError < StandardError
|
50
|
+
attr_reader :error_code
|
51
|
+
def initialize(message, error_code=-1)
|
52
|
+
@error_code = error_code
|
53
|
+
super(message)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/bzmq/sockets.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
|
2
|
+
module BZMQ
|
3
|
+
class ReqSocket < Socket
|
4
|
+
def initialize(options={})
|
5
|
+
super(ZMQ::REQ, options)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class RepSocket < Socket
|
10
|
+
def initialize(options={})
|
11
|
+
super(ZMQ::REP, options)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class DealerSocket < Socket
|
16
|
+
def initialize(options={})
|
17
|
+
super(ZMQ::DEALER, options)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class RouterSocket < Socket
|
22
|
+
def initialize(options={})
|
23
|
+
super(ZMQ::ROUTER, options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class PushSocket < Socket
|
28
|
+
def initialize(options={})
|
29
|
+
super(ZMQ::PUSH, options)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class PullSocket < Socket
|
34
|
+
def initialize(options={})
|
35
|
+
super(ZMQ::PULL, options)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class PubSocket < Socket
|
40
|
+
def initialize(options={})
|
41
|
+
super(ZMQ::PUB, options)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class SubSocket < Socket
|
46
|
+
def initialize(options={})
|
47
|
+
super(ZMQ::SUB, options)
|
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
|
+
end
|
metadata
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bzmq
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.1
|
6
|
+
platform: java
|
7
|
+
authors:
|
8
|
+
- Joel Segerlind
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ffi-rzmq
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: !binary |-
|
21
|
+
MA==
|
22
|
+
none: false
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: !binary |-
|
28
|
+
MA==
|
29
|
+
none: false
|
30
|
+
prerelease: false
|
31
|
+
type: :runtime
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: rspec
|
34
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: !binary |-
|
39
|
+
MA==
|
40
|
+
none: false
|
41
|
+
requirement: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: !binary |-
|
46
|
+
MA==
|
47
|
+
none: false
|
48
|
+
prerelease: false
|
49
|
+
type: :development
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: ruby-debug
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: !binary |-
|
57
|
+
MA==
|
58
|
+
none: false
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: !binary |-
|
64
|
+
MA==
|
65
|
+
none: false
|
66
|
+
prerelease: false
|
67
|
+
type: :development
|
68
|
+
description: Basic ZeroMQ wrapper for JRuby
|
69
|
+
email:
|
70
|
+
- joel@kogito.se
|
71
|
+
executables: []
|
72
|
+
extensions: []
|
73
|
+
extra_rdoc_files: []
|
74
|
+
files:
|
75
|
+
- lib/bzmq.rb
|
76
|
+
- lib/bzmq/context.rb
|
77
|
+
- lib/bzmq/socket.rb
|
78
|
+
- lib/bzmq/sockets.rb
|
79
|
+
homepage: ''
|
80
|
+
licenses: []
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: !binary |-
|
90
|
+
MA==
|
91
|
+
none: false
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: !binary |-
|
97
|
+
MA==
|
98
|
+
none: false
|
99
|
+
requirements: []
|
100
|
+
rubyforge_project: bzmq
|
101
|
+
rubygems_version: 1.8.24
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: A thin wrapper around ffi-rzmq, providing basic functionality
|
105
|
+
test_files: []
|