drbqs 0.0.4 → 0.0.5
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/VERSION +1 -1
- data/bin/drbqs-manage +50 -0
- data/bin/drbqs-node +6 -1
- data/bin/drbqs-server +19 -4
- data/drbqs.gemspec +11 -3
- data/example/README.md +11 -0
- data/example/drbqs-manage-test.rb +3 -0
- data/example/drbqs-node-test.rb +3 -0
- data/example/drbqs-server-test.rb +3 -0
- data/example/sum/server_def.rb +27 -0
- data/example/sum/sum.rb +9 -0
- data/lib/drbqs/connection.rb +4 -0
- data/lib/drbqs/manage.rb +15 -0
- data/lib/drbqs/message.rb +5 -2
- data/lib/drbqs/server.rb +16 -3
- data/lib/drbqs/server_define.rb +62 -12
- data/lib/drbqs.rb +1 -0
- metadata +12 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/bin/drbqs-manage
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'drbqs'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
Version = '0.0.1'
|
7
|
+
|
8
|
+
help_message =<<HELP
|
9
|
+
Usage: #{File.basename(__FILE__)} <command> <uri>
|
10
|
+
Manage DRbQS server by sending messages.
|
11
|
+
<command> is 'exit-signal'.
|
12
|
+
|
13
|
+
HELP
|
14
|
+
|
15
|
+
begin
|
16
|
+
OptionParser.new(help_message) do |opt|
|
17
|
+
opt.on('--debug', 'Set $DEBUG true.') do |v|
|
18
|
+
$DEBUG = true
|
19
|
+
end
|
20
|
+
opt.parse!(ARGV)
|
21
|
+
end
|
22
|
+
rescue OptionParser::InvalidOption
|
23
|
+
$stderr.print <<MES
|
24
|
+
error: Invalid Option
|
25
|
+
#{help_message}
|
26
|
+
MES
|
27
|
+
exit(2)
|
28
|
+
rescue OptionParser::InvalidArgument
|
29
|
+
$stderr.print <<MES
|
30
|
+
error: Invalid Argument
|
31
|
+
#{help_message}
|
32
|
+
MES
|
33
|
+
exit(2)
|
34
|
+
end
|
35
|
+
|
36
|
+
if ARGV.size != 2
|
37
|
+
raise "Invalid arguments number. Please refer '#{File.basename(__FILE__)} -h'."
|
38
|
+
end
|
39
|
+
|
40
|
+
command = ARGV[0]
|
41
|
+
uri = ARGV[1]
|
42
|
+
|
43
|
+
manage = DRbQS::Manage.new(uri)
|
44
|
+
|
45
|
+
case command
|
46
|
+
when 'exit-signal'
|
47
|
+
manage.send_exit_signal
|
48
|
+
else
|
49
|
+
raise "Invalid command: #{command}"
|
50
|
+
end
|
data/bin/drbqs-node
CHANGED
@@ -6,7 +6,9 @@ require 'optparse'
|
|
6
6
|
Version = '0.0.1'
|
7
7
|
|
8
8
|
help_message =<<HELP
|
9
|
-
#{File.basename(__FILE__)} [uri] [process_number]
|
9
|
+
Usage: #{File.basename(__FILE__)} [<uri>] [<process_number>] [options ...]
|
10
|
+
Start DRbQS nodes connecting to <uri>.
|
11
|
+
|
10
12
|
HELP
|
11
13
|
|
12
14
|
LOG_PREFIX_DEFAULT = 'drbqs_node'
|
@@ -37,6 +39,9 @@ begin
|
|
37
39
|
opt.on('--log-stdout', 'Use stdout for outputting logs. This option cancels --log-prefix.') do |v|
|
38
40
|
options[:log_prefix] = nil
|
39
41
|
end
|
42
|
+
opt.on('--debug', 'Set $DEBUG true.') do |v|
|
43
|
+
$DEBUG = true
|
44
|
+
end
|
40
45
|
opt.parse!(ARGV)
|
41
46
|
end
|
42
47
|
rescue OptionParser::InvalidOption
|
data/bin/drbqs-server
CHANGED
@@ -6,13 +6,24 @@ require 'optparse'
|
|
6
6
|
Version = '0.0.1'
|
7
7
|
|
8
8
|
help_message =<<HELP
|
9
|
-
#{File.basename(__FILE__)}
|
9
|
+
Usage: #{File.basename(__FILE__)} <definition.rb> [other files ...] [options ...]
|
10
|
+
#{File.basename(__FILE__)} <definition.rb> [other files ...] [options ...] -- [server options ...]
|
11
|
+
Start DRbQS server of definition files.
|
12
|
+
|
10
13
|
HELP
|
11
14
|
|
12
15
|
options = {
|
13
16
|
:log_file => STDOUT
|
14
17
|
}
|
15
18
|
|
19
|
+
if n = ARGV.index('--')
|
20
|
+
command_argv = ARGV[0..(n - 1)]
|
21
|
+
server_argv = ARGV[(n + 1)..-1]
|
22
|
+
else
|
23
|
+
command_argv = ARGV
|
24
|
+
server_argv = []
|
25
|
+
end
|
26
|
+
|
16
27
|
begin
|
17
28
|
OptionParser.new(help_message) do |opt|
|
18
29
|
opt.on('-p PORT', '--port', Integer, 'Set the port number of server.') do |v|
|
@@ -32,7 +43,10 @@ begin
|
|
32
43
|
raise "Invalid log level."
|
33
44
|
end
|
34
45
|
end
|
35
|
-
opt.
|
46
|
+
opt.on('--debug', 'Set $DEBUG true.') do |v|
|
47
|
+
$DEBUG = true
|
48
|
+
end
|
49
|
+
opt.parse!(command_argv)
|
36
50
|
end
|
37
51
|
rescue OptionParser::InvalidOption
|
38
52
|
$stderr.print <<MES
|
@@ -48,13 +62,14 @@ MES
|
|
48
62
|
exit(2)
|
49
63
|
end
|
50
64
|
|
51
|
-
if
|
65
|
+
if command_argv.size == 0 || !File.exist?(command_argv[0])
|
52
66
|
raise "Invalid arguments. Please refer '#{File.basename(__FILE__)} -h'."
|
53
67
|
end
|
54
68
|
|
55
|
-
|
69
|
+
command_argv.each do |path|
|
56
70
|
puts "load #{path}"
|
57
71
|
load path
|
58
72
|
end
|
59
73
|
|
74
|
+
DRbQS.parse_option(server_argv)
|
60
75
|
DRbQS.start_server(options)
|
data/drbqs.gemspec
CHANGED
@@ -5,14 +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.5"
|
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-03-
|
12
|
+
s.date = %q{2011-03-05}
|
13
13
|
s.description = %q{Task queuing system over network that is implemented by dRuby.}
|
14
14
|
s.email = %q{d@ytak.info}
|
15
|
-
s.executables = ["drbqs-node", "drbqs-server"]
|
15
|
+
s.executables = ["drbqs-manage", "drbqs-node", "drbqs-server"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE.txt",
|
18
18
|
"README.rdoc"
|
@@ -25,13 +25,21 @@ Gem::Specification.new do |s|
|
|
25
25
|
"README.rdoc",
|
26
26
|
"Rakefile",
|
27
27
|
"VERSION",
|
28
|
+
"bin/drbqs-manage",
|
28
29
|
"bin/drbqs-node",
|
29
30
|
"bin/drbqs-server",
|
30
31
|
"drbqs.gemspec",
|
32
|
+
"example/README.md",
|
33
|
+
"example/drbqs-manage-test.rb",
|
34
|
+
"example/drbqs-node-test.rb",
|
35
|
+
"example/drbqs-server-test.rb",
|
36
|
+
"example/sum/server_def.rb",
|
37
|
+
"example/sum/sum.rb",
|
31
38
|
"lib/drbqs.rb",
|
32
39
|
"lib/drbqs/acl_file.rb",
|
33
40
|
"lib/drbqs/client.rb",
|
34
41
|
"lib/drbqs/connection.rb",
|
42
|
+
"lib/drbqs/manage.rb",
|
35
43
|
"lib/drbqs/message.rb",
|
36
44
|
"lib/drbqs/queue.rb",
|
37
45
|
"lib/drbqs/server.rb",
|
data/example/README.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# Usage:
|
3
|
+
# drbqs-server server_def.rb -- 30 50
|
4
|
+
# drbqs-server server_def.rb -- 100 500 --step 100
|
5
|
+
#
|
6
|
+
|
7
|
+
require_relative 'sum.rb'
|
8
|
+
|
9
|
+
DRbQS.option_parser do |opt, hash|
|
10
|
+
opt.on('--step NUM', Integer) do |v|
|
11
|
+
hash[:step] = v
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
DRbQS.define_server do |server, argv, opts|
|
16
|
+
start_num = (argv[0] || 10).to_i
|
17
|
+
end_num = (argv[1] || 100).to_i
|
18
|
+
step_num = opts[:step] || 10
|
19
|
+
start_num.step(end_num, step_num) do |i|
|
20
|
+
task = DRbQS::Task.new(Sum.new(i - 10, i), :exec)
|
21
|
+
server.queue.add(task)
|
22
|
+
end
|
23
|
+
|
24
|
+
server.set_finish_hook do |serv|
|
25
|
+
serv.exit
|
26
|
+
end
|
27
|
+
end
|
data/example/sum/sum.rb
ADDED
data/lib/drbqs/connection.rb
CHANGED
@@ -19,6 +19,8 @@ module DRbQS
|
|
19
19
|
s = create_id_string
|
20
20
|
@message.write([:connect, s])
|
21
21
|
@id = @message.take([s, Fixnum])[1]
|
22
|
+
@logger.info("Get node id: #{@id}") if @logger
|
23
|
+
@id
|
22
24
|
end
|
23
25
|
|
24
26
|
def get_initialization
|
@@ -36,7 +38,9 @@ module DRbQS
|
|
36
38
|
case sym
|
37
39
|
when :alive_p
|
38
40
|
@message.write([:alive, @id])
|
41
|
+
@logger.info("Send alive signal of node id #{@id}") if @logger
|
39
42
|
when :exit
|
43
|
+
@logger.info("Get exit signal") if @logger
|
40
44
|
Kernel.exit
|
41
45
|
end
|
42
46
|
rescue Rinda::RequestExpiredError
|
data/lib/drbqs/manage.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'socket'
|
2
|
+
|
3
|
+
module DRbQS
|
4
|
+
|
5
|
+
class Manage
|
6
|
+
def initialize(access_uri)
|
7
|
+
@access_uri = access_uri
|
8
|
+
end
|
9
|
+
|
10
|
+
def send_exit_signal
|
11
|
+
obj = DRbObject.new_with_uri(@access_uri)
|
12
|
+
obj[:message].write([:exit_server, "Command of #{Socket.gethostname}"])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/drbqs/message.rb
CHANGED
@@ -54,14 +54,17 @@ module DRbQS
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def manage_message(mes, arg)
|
57
|
-
@logger.
|
57
|
+
@logger.info("Get message") { [mes, arg] } if @logger
|
58
58
|
case mes
|
59
59
|
when :connect
|
60
60
|
a = [arg, @node_list.get_new_id(arg)]
|
61
|
-
@logger.
|
61
|
+
@logger.info("New node") { a } if @logger
|
62
62
|
@message.write(a)
|
63
63
|
when :alive
|
64
64
|
@node_list.set_alive(arg)
|
65
|
+
when :exit_server
|
66
|
+
@logger.info("Get exit message from #{arg.to_s}") if @logger
|
67
|
+
return :exit_server
|
65
68
|
else
|
66
69
|
puts "Invalid message from #{arg.to_s}"
|
67
70
|
end
|
data/lib/drbqs/server.rb
CHANGED
@@ -67,7 +67,7 @@ module DRbQS
|
|
67
67
|
|
68
68
|
def check_connection(force = nil)
|
69
69
|
if force || @check_alive.significant_interval?
|
70
|
-
@logger.
|
70
|
+
@logger.debug("Check connection") if @logger
|
71
71
|
@message.check_connection
|
72
72
|
@check_alive.set_checking
|
73
73
|
end
|
@@ -118,13 +118,26 @@ module DRbQS
|
|
118
118
|
Kernel.exit
|
119
119
|
end
|
120
120
|
|
121
|
+
def set_signal_trap
|
122
|
+
Signal.trap(:TERM) do
|
123
|
+
self.exit
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def check_message
|
128
|
+
if @message.get_message == :exit_server
|
129
|
+
self.exit
|
130
|
+
end
|
131
|
+
end
|
132
|
+
private :check_message
|
133
|
+
|
121
134
|
def wait
|
122
135
|
loop do
|
123
|
-
|
136
|
+
check_message
|
124
137
|
check_connection
|
125
138
|
count_results = @queue.get_result
|
126
139
|
exec_hook
|
127
|
-
@logger.
|
140
|
+
@logger.debug("Calculating tasks: #{@queue.calculating_task_number}") if @logger
|
128
141
|
if count_results <= 1
|
129
142
|
sleep(WAIT_NEW_RESULT)
|
130
143
|
end
|
data/lib/drbqs/server_define.rb
CHANGED
@@ -1,21 +1,71 @@
|
|
1
1
|
module DRbQS
|
2
2
|
|
3
|
-
|
3
|
+
class ServerDefinition
|
4
|
+
HELP_MESSAGE =<<HELP
|
5
|
+
[Server specific options]
|
6
|
+
These options are separated by '--' from command options.
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
+
HELP
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@server_create = nil
|
12
|
+
@option_parse = nil
|
13
|
+
@opts = {}
|
14
|
+
@argv = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def define_server(&block)
|
18
|
+
if @server_create
|
19
|
+
raise ArgumentError, "The server has already defined."
|
20
|
+
end
|
21
|
+
@server_create = block
|
22
|
+
end
|
23
|
+
|
24
|
+
def option_parser(&block)
|
25
|
+
if @option_parse
|
26
|
+
raise ArgumentError, "The options parser has already defined."
|
27
|
+
end
|
28
|
+
@option_parse = block
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_option(opt_argv)
|
32
|
+
if @option_parse
|
33
|
+
OptionParser.new(HELP_MESSAGE) do |opt|
|
34
|
+
@option_parse.call(opt, @opts)
|
35
|
+
opt.parse!(opt_argv)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
@argv = opt_argv
|
39
|
+
end
|
40
|
+
|
41
|
+
def start_server(options)
|
42
|
+
unless @server_create
|
43
|
+
raise "Can not get server definition."
|
44
|
+
end
|
45
|
+
server = DRbQS::Server.new(options)
|
46
|
+
@server_create.call(server, @argv, @opts)
|
47
|
+
# @server_create.call(server)
|
48
|
+
server.set_signal_trap
|
49
|
+
server.start
|
50
|
+
server.wait
|
8
51
|
end
|
9
|
-
|
52
|
+
end
|
53
|
+
|
54
|
+
@@server_def = ServerDefinition.new
|
55
|
+
|
56
|
+
def self.define_server(&block)
|
57
|
+
@@server_def.define_server(&block)
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.option_parser(&block)
|
61
|
+
@@server_def.option_parser(&block)
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.parse_option(opt_argv)
|
65
|
+
@@server_def.parse_option(opt_argv)
|
10
66
|
end
|
11
67
|
|
12
68
|
def self.start_server(options)
|
13
|
-
|
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
|
69
|
+
@@server_def.start_server(options)
|
20
70
|
end
|
21
71
|
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.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Takayuki YAMAGUCHI
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-05 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -71,6 +71,7 @@ dependencies:
|
|
71
71
|
description: Task queuing system over network that is implemented by dRuby.
|
72
72
|
email: d@ytak.info
|
73
73
|
executables:
|
74
|
+
- drbqs-manage
|
74
75
|
- drbqs-node
|
75
76
|
- drbqs-server
|
76
77
|
extensions: []
|
@@ -86,13 +87,21 @@ files:
|
|
86
87
|
- README.rdoc
|
87
88
|
- Rakefile
|
88
89
|
- VERSION
|
90
|
+
- bin/drbqs-manage
|
89
91
|
- bin/drbqs-node
|
90
92
|
- bin/drbqs-server
|
91
93
|
- drbqs.gemspec
|
94
|
+
- example/README.md
|
95
|
+
- example/drbqs-manage-test.rb
|
96
|
+
- example/drbqs-node-test.rb
|
97
|
+
- example/drbqs-server-test.rb
|
98
|
+
- example/sum/server_def.rb
|
99
|
+
- example/sum/sum.rb
|
92
100
|
- lib/drbqs.rb
|
93
101
|
- lib/drbqs/acl_file.rb
|
94
102
|
- lib/drbqs/client.rb
|
95
103
|
- lib/drbqs/connection.rb
|
104
|
+
- lib/drbqs/manage.rb
|
96
105
|
- lib/drbqs/message.rb
|
97
106
|
- lib/drbqs/queue.rb
|
98
107
|
- lib/drbqs/server.rb
|
@@ -117,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
126
|
requirements:
|
118
127
|
- - ">="
|
119
128
|
- !ruby/object:Gem::Version
|
120
|
-
hash:
|
129
|
+
hash: 3980203744145532744
|
121
130
|
segments:
|
122
131
|
- 0
|
123
132
|
version: "0"
|