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 CHANGED
@@ -1 +1 @@
1
- 0.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
- obj = Marshal.load(marshal_obj)
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
@@ -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
- @method_sym = method_sym
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
@@ -54,6 +54,10 @@ module DRbQS
54
54
  end
55
55
  private :check_connection
56
56
 
57
+ def set_initialization_task(task)
58
+ @message.set_initialization(task)
59
+ end
60
+
57
61
  def set_empty_queue_hook(&block)
58
62
  if block_given?
59
63
  @empty_queue_hook = block
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: drbqs
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.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-22 00:00:00 +09:00
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: 4249913023693362240
112
+ hash: 2055221894709119612
112
113
  segments:
113
114
  - 0
114
115
  version: "0"