drbqs 0.0.0 → 0.0.1
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/drbqs.gemspec +72 -0
- data/lib/drbqs/client.rb +10 -4
- data/lib/drbqs/connection.rb +12 -1
- data/lib/drbqs/message.rb +11 -0
- data/lib/drbqs/queue.rb +4 -1
- data/lib/drbqs/server.rb +4 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/drbqs.gemspec
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{drbqs}
|
8
|
+
s.version = "0.0.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Takayuki YAMAGUCHI"]
|
12
|
+
s.date = %q{2011-02-26}
|
13
|
+
s.description = %q{Queuing system over network that is implemented by dRuby.}
|
14
|
+
s.email = %q{d@ytak.info}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rspec",
|
22
|
+
"Gemfile",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"drbqs.gemspec",
|
28
|
+
"lib/drbqs.rb",
|
29
|
+
"lib/drbqs/client.rb",
|
30
|
+
"lib/drbqs/connection.rb",
|
31
|
+
"lib/drbqs/message.rb",
|
32
|
+
"lib/drbqs/queue.rb",
|
33
|
+
"lib/drbqs/server.rb",
|
34
|
+
"lib/drbqs/task_client.rb",
|
35
|
+
"spec/drbqs_spec.rb",
|
36
|
+
"spec/spec_helper.rb"
|
37
|
+
]
|
38
|
+
s.homepage = %q{http://github.com/ytaka/drbqs}
|
39
|
+
s.licenses = ["GPL3"]
|
40
|
+
s.require_paths = ["lib"]
|
41
|
+
s.rubygems_version = %q{1.5.2}
|
42
|
+
s.summary = %q{dRuby Queueing System}
|
43
|
+
s.test_files = [
|
44
|
+
"spec/drbqs_spec.rb",
|
45
|
+
"spec/spec_helper.rb"
|
46
|
+
]
|
47
|
+
|
48
|
+
if s.respond_to? :specification_version then
|
49
|
+
s.specification_version = 3
|
50
|
+
|
51
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
52
|
+
s.add_development_dependency(%q<rspec>, [">= 2.5.0"])
|
53
|
+
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
54
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
55
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
56
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<rspec>, [">= 2.5.0"])
|
59
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
60
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
61
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
62
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
63
|
+
end
|
64
|
+
else
|
65
|
+
s.add_dependency(%q<rspec>, [">= 2.5.0"])
|
66
|
+
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
67
|
+
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
68
|
+
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
69
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
data/lib/drbqs/client.rb
CHANGED
@@ -12,11 +12,20 @@ module DRbQS
|
|
12
12
|
@task_client = nil
|
13
13
|
end
|
14
14
|
|
15
|
+
def execute_task(marshal_obj, method_sym, args)
|
16
|
+
obj = Marshal.load(marshal_obj)
|
17
|
+
obj.__send__(method_sym, *args)
|
18
|
+
end
|
19
|
+
private :execute_task
|
20
|
+
|
15
21
|
def connect
|
16
22
|
obj = DRbObject.new_with_uri(@access_uri)
|
17
23
|
@connection = ConnectionClient.new(obj[:message], @logger)
|
18
24
|
node_id = @connection.get_id
|
19
25
|
@task_client = TaskClient.new(node_id, obj[:queue], obj[:result], @logger)
|
26
|
+
if ary = @connection.get_initialization
|
27
|
+
execute_task(*ary)
|
28
|
+
end
|
20
29
|
end
|
21
30
|
|
22
31
|
def calculate
|
@@ -31,12 +40,9 @@ module DRbQS
|
|
31
40
|
exec = Thread.new do
|
32
41
|
loop do
|
33
42
|
marshal_obj, method_sym, args = @task_client.get
|
34
|
-
|
35
|
-
result = obj.__send__(method_sym, *args)
|
36
|
-
@task_client.transmit(result)
|
43
|
+
@task_client.transmit(execute_task(marshal_obj, method_sym, args))
|
37
44
|
end
|
38
45
|
end
|
39
|
-
exec.join
|
40
46
|
cn.join
|
41
47
|
end
|
42
48
|
end
|
data/lib/drbqs/connection.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'socket'
|
2
|
+
|
1
3
|
module DRbQS
|
2
4
|
# The class of connection to s.erver.
|
3
5
|
class ConnectionClient
|
@@ -9,7 +11,7 @@ module DRbQS
|
|
9
11
|
|
10
12
|
def create_id_string
|
11
13
|
t = Time.now
|
12
|
-
sprintf("%d%d%d", t.to_i, t.usec, rand(1000))
|
14
|
+
sprintf("#{Socket.gethostname} %d%d%d", t.to_i, t.usec, rand(1000))
|
13
15
|
end
|
14
16
|
private :create_id_string
|
15
17
|
|
@@ -19,6 +21,15 @@ module DRbQS
|
|
19
21
|
@id = @message.take([s, Fixnum])[1]
|
20
22
|
end
|
21
23
|
|
24
|
+
def get_initialization
|
25
|
+
begin
|
26
|
+
ary = @message.read([:initialize, nil, Symbol, nil], 0)
|
27
|
+
ary[1..-1]
|
28
|
+
rescue
|
29
|
+
nil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
22
33
|
def respond_alive_signal
|
23
34
|
begin
|
24
35
|
node_id, sym = @message.take([@id, Symbol], 0)
|
data/lib/drbqs/message.rb
CHANGED
@@ -87,6 +87,17 @@ module DRbQS
|
|
87
87
|
def node_not_exist?
|
88
88
|
@node_list.empty?
|
89
89
|
end
|
90
|
+
|
91
|
+
# If the task has already set,
|
92
|
+
# the method overwrite old task of initialization by new task.
|
93
|
+
def set_initialization(task)
|
94
|
+
begin
|
95
|
+
@message.take([:initialize, nil, Symbol, nil], 0)
|
96
|
+
rescue
|
97
|
+
end
|
98
|
+
@message.write(task.drb_args(:initialize))
|
99
|
+
end
|
100
|
+
|
90
101
|
end
|
91
102
|
|
92
103
|
end
|
data/lib/drbqs/queue.rb
CHANGED
@@ -8,7 +8,10 @@ module DRbQS
|
|
8
8
|
rescue
|
9
9
|
raise "Can not dump an instance of #{obj.class}."
|
10
10
|
end
|
11
|
-
|
11
|
+
unless Array === args
|
12
|
+
raise "Arguments of task must be an array."
|
13
|
+
end
|
14
|
+
@method_sym = method_sym.intern
|
12
15
|
@args = args
|
13
16
|
@hook = hook
|
14
17
|
end
|
data/lib/drbqs/server.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.1
|
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-02-
|
13
|
+
date: 2011-02-26 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- README.rdoc
|
86
86
|
- Rakefile
|
87
87
|
- VERSION
|
88
|
+
- drbqs.gemspec
|
88
89
|
- lib/drbqs.rb
|
89
90
|
- lib/drbqs/client.rb
|
90
91
|
- lib/drbqs/connection.rb
|
@@ -108,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
109
|
requirements:
|
109
110
|
- - ">="
|
110
111
|
- !ruby/object:Gem::Version
|
111
|
-
hash:
|
112
|
+
hash: 2055221894709119612
|
112
113
|
segments:
|
113
114
|
- 0
|
114
115
|
version: "0"
|