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 CHANGED
@@ -1,6 +1,62 @@
1
1
  = drbqs
2
2
 
3
- Description goes here.
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 = "Queuing system over network that is implemented by dRuby."
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.3
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.3"
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-02-28}
13
- s.default_executable = %q{drbqs-node}
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
@@ -21,6 +21,11 @@ module DRbQS
21
21
  class Server
22
22
  attr_reader :queue
23
23
 
24
+ # :port
25
+ # :acl
26
+ # :log_file
27
+ # :log_level
28
+ # :check_alive
24
29
  def initialize(opts = {})
25
30
  @port = opts[:port] || ROOT_DEFAULT_PORT
26
31
  @acl = acl_init(opts[:acl])
@@ -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
@@ -6,6 +6,8 @@ require 'drb/acl'
6
6
  require 'rinda/tuplespace'
7
7
  require 'rinda/rinda'
8
8
 
9
+ require 'drbqs/server_define'
10
+
9
11
  module DRbQS
10
12
  autoload :Server, 'drbqs/server'
11
13
  autoload :Client, 'drbqs/client'
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: drbqs
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
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-02-28 00:00:00 +09:00
14
- default_executable: drbqs-node
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: Queuing system over network that is implemented by dRuby.
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: 4288822500604112980
120
+ hash: 1097812397295030278
118
121
  segments:
119
122
  - 0
120
123
  version: "0"