drbqs 0.0.3 → 0.0.4
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/README.rdoc +57 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/drbqs-server +60 -0
- data/drbqs.gemspec +6 -5
- data/lib/drbqs/server.rb +5 -0
- data/lib/drbqs/server_define.rb +21 -0
- data/lib/drbqs.rb +2 -0
- metadata +8 -5
data/README.rdoc
CHANGED
@@ -1,6 +1,62 @@
|
|
1
1
|
= drbqs
|
2
2
|
|
3
|
-
|
3
|
+
Task queuing system over network that is implemented by dRuby.
|
4
|
+
|
5
|
+
== Usage
|
6
|
+
|
7
|
+
=== Preparation
|
8
|
+
|
9
|
+
We prepare a class to send tasks over network,
|
10
|
+
which has data and a method to deal with tasks.
|
11
|
+
|
12
|
+
We make sum.rb as the following.
|
13
|
+
|
14
|
+
class Sum
|
15
|
+
def initialize(start_num, end_num)
|
16
|
+
@num = [start_num, end_num]
|
17
|
+
end
|
18
|
+
|
19
|
+
def exec
|
20
|
+
(@num[0]..@num[1]).inject(0) { |sum, i| sum += i }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
The Sum class calculates sum of numbers from start_num to end_num.
|
25
|
+
The task we want to calculate is summation of numbers.
|
26
|
+
|
27
|
+
=== Start server
|
28
|
+
|
29
|
+
We make server.rb as the following.
|
30
|
+
|
31
|
+
require_relative 'sum.rb'
|
32
|
+
|
33
|
+
DRbQS.define_server do |server|
|
34
|
+
10.step(100, 10) do |i|
|
35
|
+
task = DRbQS::Task.new(Sum.new(i - 10, i), :exec)
|
36
|
+
server.queue.add(task)
|
37
|
+
end
|
38
|
+
|
39
|
+
server.set_finish_hook do |serv|
|
40
|
+
serv.exit
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
In terminal, we load server.rb and execute server of drbqs.
|
45
|
+
|
46
|
+
drbqs-server server.rb -p 13500
|
47
|
+
|
48
|
+
=== Start node and connect server
|
49
|
+
|
50
|
+
We type in terminal.
|
51
|
+
|
52
|
+
drbqs-node druby://localhost:13500/
|
53
|
+
|
54
|
+
To use two cpu cores we execute two processes by the following.
|
55
|
+
|
56
|
+
drbqs-node 2 druby://localhost:13500/
|
57
|
+
|
58
|
+
Then, if it succeeds, the calculation starts.
|
59
|
+
If it finishes, the server and node ends.
|
4
60
|
|
5
61
|
== Contributing to drbqs
|
6
62
|
|
data/Rakefile
CHANGED
@@ -16,7 +16,7 @@ Jeweler::Tasks.new do |gem|
|
|
16
16
|
gem.homepage = "http://github.com/ytaka/drbqs"
|
17
17
|
gem.license = "GPL3"
|
18
18
|
gem.summary = "dRuby Queueing System"
|
19
|
-
gem.description = "
|
19
|
+
gem.description = "Task queuing system over network that is implemented by dRuby."
|
20
20
|
gem.email = "d@ytak.info"
|
21
21
|
gem.authors = ["Takayuki YAMAGUCHI"]
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/bin/drbqs-server
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'drbqs'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
Version = '0.0.1'
|
7
|
+
|
8
|
+
help_message =<<HELP
|
9
|
+
#{File.basename(__FILE__)} server_definition.rb [other files ...]
|
10
|
+
HELP
|
11
|
+
|
12
|
+
options = {
|
13
|
+
:log_file => STDOUT
|
14
|
+
}
|
15
|
+
|
16
|
+
begin
|
17
|
+
OptionParser.new(help_message) do |opt|
|
18
|
+
opt.on('-p PORT', '--port', Integer, 'Set the port number of server.') do |v|
|
19
|
+
options[:port] = v
|
20
|
+
end
|
21
|
+
opt.on('--acl FILE', String, 'Set a file to define ACL.') do |v|
|
22
|
+
options[:acl] = v
|
23
|
+
end
|
24
|
+
opt.on('--log-file STR', String, "Set the path of log file. If this options is not set, use STDOUT.") do |v|
|
25
|
+
options[:log_file] = v
|
26
|
+
end
|
27
|
+
opt.on('--log-level LEVEL', String,
|
28
|
+
"Set the log level. The value accepts 'fatal', 'error', 'warn', 'info', and 'debug'. The default is 'error'.") do |v|
|
29
|
+
if /^(fatal)|(error)|(warn)|(info)|(debug)$/i =~ v
|
30
|
+
options[:log_level] = eval("Logger::#{v.upcase}")
|
31
|
+
else
|
32
|
+
raise "Invalid log level."
|
33
|
+
end
|
34
|
+
end
|
35
|
+
opt.parse!(ARGV)
|
36
|
+
end
|
37
|
+
rescue OptionParser::InvalidOption
|
38
|
+
$stderr.print <<MES
|
39
|
+
error: Invalid Option
|
40
|
+
#{help_message}
|
41
|
+
MES
|
42
|
+
exit(2)
|
43
|
+
rescue OptionParser::InvalidArgument
|
44
|
+
$stderr.print <<MES
|
45
|
+
error: Invalid Argument
|
46
|
+
#{help_message}
|
47
|
+
MES
|
48
|
+
exit(2)
|
49
|
+
end
|
50
|
+
|
51
|
+
if ARGV.size == 0 || !File.exist?(ARGV[0])
|
52
|
+
raise "Invalid arguments. Please refer '#{File.basename(__FILE__)} -h'."
|
53
|
+
end
|
54
|
+
|
55
|
+
ARGV.each do |path|
|
56
|
+
puts "load #{path}"
|
57
|
+
load path
|
58
|
+
end
|
59
|
+
|
60
|
+
DRbQS.start_server(options)
|
data/drbqs.gemspec
CHANGED
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{drbqs}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Takayuki YAMAGUCHI"]
|
12
|
-
s.date = %q{2011-
|
13
|
-
s.
|
14
|
-
s.description = %q{Queuing system over network that is implemented by dRuby.}
|
12
|
+
s.date = %q{2011-03-01}
|
13
|
+
s.description = %q{Task queuing system over network that is implemented by dRuby.}
|
15
14
|
s.email = %q{d@ytak.info}
|
16
|
-
s.executables = ["drbqs-node"]
|
15
|
+
s.executables = ["drbqs-node", "drbqs-server"]
|
17
16
|
s.extra_rdoc_files = [
|
18
17
|
"LICENSE.txt",
|
19
18
|
"README.rdoc"
|
@@ -27,6 +26,7 @@ Gem::Specification.new do |s|
|
|
27
26
|
"Rakefile",
|
28
27
|
"VERSION",
|
29
28
|
"bin/drbqs-node",
|
29
|
+
"bin/drbqs-server",
|
30
30
|
"drbqs.gemspec",
|
31
31
|
"lib/drbqs.rb",
|
32
32
|
"lib/drbqs/acl_file.rb",
|
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/drbqs/message.rb",
|
36
36
|
"lib/drbqs/queue.rb",
|
37
37
|
"lib/drbqs/server.rb",
|
38
|
+
"lib/drbqs/server_define.rb",
|
38
39
|
"lib/drbqs/task_client.rb",
|
39
40
|
"spec/acl_file_spec.rb",
|
40
41
|
"spec/data/acl.txt",
|
data/lib/drbqs/server.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module DRbQS
|
2
|
+
|
3
|
+
@@server_create = nil
|
4
|
+
|
5
|
+
def self.define_server(&block)
|
6
|
+
if @@server_create
|
7
|
+
raise ArgumentError, "The server has already defined."
|
8
|
+
end
|
9
|
+
@@server_create = block
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.start_server(options)
|
13
|
+
unless @@server_create
|
14
|
+
raise "Can not get server definition."
|
15
|
+
end
|
16
|
+
server = DRbQS::Server.new(options)
|
17
|
+
@@server_create.call(server)
|
18
|
+
server.start
|
19
|
+
server.wait
|
20
|
+
end
|
21
|
+
end
|
data/lib/drbqs.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: drbqs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Takayuki YAMAGUCHI
|
@@ -10,8 +10,8 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
13
|
+
date: 2011-03-01 00:00:00 +09:00
|
14
|
+
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
@@ -68,10 +68,11 @@ dependencies:
|
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: *id005
|
71
|
-
description:
|
71
|
+
description: Task queuing system over network that is implemented by dRuby.
|
72
72
|
email: d@ytak.info
|
73
73
|
executables:
|
74
74
|
- drbqs-node
|
75
|
+
- drbqs-server
|
75
76
|
extensions: []
|
76
77
|
|
77
78
|
extra_rdoc_files:
|
@@ -86,6 +87,7 @@ files:
|
|
86
87
|
- Rakefile
|
87
88
|
- VERSION
|
88
89
|
- bin/drbqs-node
|
90
|
+
- bin/drbqs-server
|
89
91
|
- drbqs.gemspec
|
90
92
|
- lib/drbqs.rb
|
91
93
|
- lib/drbqs/acl_file.rb
|
@@ -94,6 +96,7 @@ files:
|
|
94
96
|
- lib/drbqs/message.rb
|
95
97
|
- lib/drbqs/queue.rb
|
96
98
|
- lib/drbqs/server.rb
|
99
|
+
- lib/drbqs/server_define.rb
|
97
100
|
- lib/drbqs/task_client.rb
|
98
101
|
- spec/acl_file_spec.rb
|
99
102
|
- spec/data/acl.txt
|
@@ -114,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
117
|
requirements:
|
115
118
|
- - ">="
|
116
119
|
- !ruby/object:Gem::Version
|
117
|
-
hash:
|
120
|
+
hash: 1097812397295030278
|
118
121
|
segments:
|
119
122
|
- 0
|
120
123
|
version: "0"
|