noda 0.0.10 → 0.0.11

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/Rakefile CHANGED
@@ -45,6 +45,7 @@ task :default => :test
45
45
  require 'rake/rdoctask'
46
46
  Rake::RDocTask.new do |rdoc|
47
47
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+ rdoc.options << '-c UTF8'
48
49
 
49
50
  rdoc.rdoc_dir = 'rdoc'
50
51
  rdoc.title = "noda #{version}"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.10
1
+ 0.0.11
data/lib/noda.rb CHANGED
File without changes
@@ -1,5 +1,8 @@
1
1
 
2
2
  module Noda
3
+ #=�T�v
4
+ # �W���u��Ԃ��Ď�����WEB�T�[�o�[�ł��B
5
+ # DRB�ɐڑ����āC�L���[�c���C���L�n�b�V���e�[�u���A�L���[�̒��g�����邱�Ƃ��o���܂��D
3
6
 
4
7
  class JobMonitor
5
8
  require 'webrick'
@@ -1,11 +1,23 @@
1
1
  module Noda
2
2
 
3
+ # ジョブワーカー
4
+ #
5
+ # ジョブを待ち受けるスレッドです。
6
+ # Taskを取りだして実行します.
7
+ # ip=127.0.0.1
8
+ # w=Noda::JobWorker.new("#{ip}", "10001")
9
+ # t = DRb.start_service("druby://#{ip}:10101",w)
10
+ # w.start
11
+ #
12
+ #
3
13
 
4
14
  class JobWorker
5
15
  attr_reader :thread
6
16
  attr_accessor :max_retry_connect , :wait_time_to_retry
7
- def initialize( job_server_addr="localhost",job_server_port="10001" )
8
- @server_uri = "druby://#{job_server_addr}:#{job_server_port}"
17
+ # * server_addr ジョブサーバーアドレス、またはホスト名
18
+ # * server_port ジョブサーバーポート
19
+ def initialize( server_addr="localhost",server_port="10001",q="" )
20
+ @server_uri = "druby://#{server_addr}:#{server_port}/?#{q}"
9
21
  @max_retry_connect = 30
10
22
  @wait_time_to_retry = 2
11
23
  require "socket"
@@ -13,6 +25,7 @@ class JobWorker
13
25
  self.connect
14
26
  self
15
27
  end
28
+ # 内部的に使います。ジョブサーバーへ接続
16
29
  def connect_job_server
17
30
  error_conter = 0
18
31
  begin
@@ -26,6 +39,11 @@ class JobWorker
26
39
  retry
27
40
  end
28
41
  end
42
+ # 担当ジョブからタスクを実行します.
43
+ #
44
+ # タスクは do_task(hash)実装が必須
45
+ # タスクのクラス定義はrequire必須.(start前にrequire)
46
+ # タスクのクラス定義はサーバー側から自動ロード(eval)します.
29
47
  def handle_task()
30
48
  # @logger.info("self.class@#{@local_addr}#{self.object_id}"){"i try to pop a task."}
31
49
  task = @job.input.pop
@@ -36,10 +54,14 @@ class JobWorker
36
54
  result = task.do_task(@job.hash_table)
37
55
  @job.output.push result
38
56
  end
57
+ # クラス定義をEvalする。クラス定義はサーバーから取り出す.
58
+ # ワーカー側にクラス定義を動的に渡すときに使います.
59
+ # *name クラス名
39
60
  def load_class(name)
40
61
  s = @job.task_class(name)
41
62
  Noda.module_eval(s)
42
63
  end
64
+ # ワーカーのメインスレッドを起動します.start で使います.
43
65
  def init_thread
44
66
  @table = @job.hash_table
45
67
  @thread= Thread.new{
@@ -49,16 +71,29 @@ class JobWorker
49
71
  }
50
72
  }
51
73
  end
74
+
75
+ # サーバーに接続します
76
+ #
52
77
  def connect
53
78
  self.connect_job_server
54
79
  end
80
+
81
+ # 処理を開始します.
82
+ #
83
+ # threadを返します. worker を起動しっぱなしにするなら thread.joinしてください
55
84
  def start
56
85
  self.init_thread
57
86
  @thread.join
58
87
  end
88
+
89
+ # ワーカースレッドの状態を取り出します.
90
+ #
91
+ # マルチスレッドでブロックされてるとsleep になります
59
92
  def status
60
93
  @thread.status if @thread
61
94
  end
95
+
96
+ # スレッド停止します.このインスタンスは死にません.start で再起動します.
62
97
  def stop
63
98
  @thread.kill
64
99
  end
data/lib/noda/rqueue.rb CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  module Noda
4
4
  require 'monitor'
5
+ # �W���u�̃L���[����
6
+ # �L���[�̓X���b�h�Z�[�t�ɏ����Ă���
7
+ #
8
+ #
5
9
  class RQueue
6
10
  include DRb::DRbUndumped
7
11
  attr_reader :name
data/noda.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{noda}
8
- s.version = "0.0.10"
8
+ s.version = "0.0.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["takuya"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noda
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 10
10
- version: 0.0.10
9
+ - 11
10
+ version: 0.0.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - takuya