asir_zmq 1.1.1 → 1.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.
- data/Changelog +5 -0
- data/asir_zmq.gemspec +1 -1
- data/example/ex03.rb +35 -0
- data/example/example_helper.rb +5 -1
- data/lib/asir/transport/zmq.rb +14 -10
- data/lib/asir_zmq/version.rb +1 -1
- data/spec/spec_helper.rb +5 -1
- metadata +5 -10
data/Changelog
CHANGED
data/asir_zmq.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_dependency "asir", "~> 1.
|
21
|
+
gem.add_dependency "asir", "~> 1.2.0"
|
22
22
|
gem.add_dependency "zmq", "~> 2.1.4"
|
23
23
|
|
24
24
|
gem.add_development_dependency 'rake', '>= 0.9.0'
|
data/example/ex03.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# !SLIDE :capture_code_output true
|
2
|
+
# One-way ZMQ service on alternate queue.
|
3
|
+
|
4
|
+
require 'example_helper'
|
5
|
+
require 'asir/transport/zmq'
|
6
|
+
begin
|
7
|
+
zmq = ASIR::Transport::Zmq.new(:port => 31923,
|
8
|
+
:encoder => ASIR::Coder::Marshal.new,
|
9
|
+
:one_way => true,
|
10
|
+
:queue => 'alternate')
|
11
|
+
server_process do
|
12
|
+
zmq.prepare_server!
|
13
|
+
zmq.run_server!
|
14
|
+
end
|
15
|
+
UnsafeService.asir.transport = t = zmq
|
16
|
+
pr(UnsafeService.asir._configure{ | message, proxy |
|
17
|
+
message[:queue] = 'alternate'
|
18
|
+
}.do_it(":ok"))
|
19
|
+
pr(UnsafeService.asir._configure{ | message, proxy |
|
20
|
+
message[:queue] = 'other'
|
21
|
+
}.do_it(":other"))
|
22
|
+
rescue ::Exception => err
|
23
|
+
$stderr.puts "### #{$$}: ERROR: #{err.inspect}\n #{err.backtrace * "\n "}"
|
24
|
+
raise
|
25
|
+
ensure
|
26
|
+
zmq.close rescue nil; sleep 1; server_kill
|
27
|
+
end
|
28
|
+
|
29
|
+
# !SLIDE END
|
30
|
+
# EXPECT: : client process
|
31
|
+
# EXPECT: : server process
|
32
|
+
# EXPECT: UnsafeService.do_it => :ok
|
33
|
+
# EXPECT: : pr: nil
|
34
|
+
# EXPECT!: UnsafeService.do_it => :other
|
35
|
+
# EXPECT!: ERROR
|
data/example/example_helper.rb
CHANGED
data/lib/asir/transport/zmq.rb
CHANGED
@@ -30,27 +30,31 @@ module ASIR
|
|
30
30
|
raise exc.class, "#{self.class} #{zmq_uri}: #{exc.message}", exc.backtrace
|
31
31
|
end
|
32
32
|
|
33
|
-
def _receive_result
|
34
|
-
return nil if one_way || message.one_way
|
33
|
+
def _receive_result state
|
34
|
+
return nil if one_way || state.message.one_way
|
35
35
|
super
|
36
36
|
end
|
37
37
|
|
38
|
-
def _send_result
|
39
|
-
return nil if one_way || message.one_way
|
38
|
+
def _send_result state
|
39
|
+
return nil if one_way || state.message.one_way
|
40
40
|
super
|
41
41
|
end
|
42
42
|
|
43
|
-
def _write payload, stream,
|
43
|
+
def _write payload, stream, state
|
44
44
|
if one_way
|
45
|
-
q =
|
46
|
-
|
45
|
+
q = state && state.message
|
46
|
+
q &&= q[:zmq_queue] || q[:queue]
|
47
|
+
payload.insert(0, q ? "#{q} " : queue_)
|
47
48
|
end
|
48
49
|
stream.send payload, 0
|
49
50
|
stream
|
50
51
|
end
|
51
52
|
|
52
|
-
def _read stream,
|
53
|
-
stream.recv
|
53
|
+
def _read stream, state
|
54
|
+
if data = stream.recv(0) and one_way
|
55
|
+
q, data = data.split(/ /, 2)
|
56
|
+
end
|
57
|
+
data
|
54
58
|
end
|
55
59
|
|
56
60
|
def queue
|
@@ -68,7 +72,7 @@ module ASIR
|
|
68
72
|
end
|
69
73
|
def queue_
|
70
74
|
@queue_ ||=
|
71
|
-
(queue.empty? ?
|
75
|
+
(queue.empty? ? "asir ": queue + " ").freeze
|
72
76
|
end
|
73
77
|
|
74
78
|
# server represents a receiving ZMQ endpoint.
|
data/lib/asir_zmq/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asir_zmq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asir
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
21
|
+
version: 1.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.
|
29
|
+
version: 1.2.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: zmq
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- example/config/asir_config.rb
|
112
112
|
- example/ex01.rb
|
113
113
|
- example/ex02.rb
|
114
|
+
- example/ex03.rb
|
114
115
|
- example/example_helper.rb
|
115
116
|
- example/sample_service.rb
|
116
117
|
- example/unsafe_service.rb
|
@@ -131,18 +132,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
132
|
- - ! '>='
|
132
133
|
- !ruby/object:Gem::Version
|
133
134
|
version: '0'
|
134
|
-
segments:
|
135
|
-
- 0
|
136
|
-
hash: 4489244510687288142
|
137
135
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
136
|
none: false
|
139
137
|
requirements:
|
140
138
|
- - ! '>='
|
141
139
|
- !ruby/object:Gem::Version
|
142
140
|
version: '0'
|
143
|
-
segments:
|
144
|
-
- 0
|
145
|
-
hash: 4489244510687288142
|
146
141
|
requirements: []
|
147
142
|
rubyforge_project:
|
148
143
|
rubygems_version: 1.8.24
|