lib/noda/job_worker.rb in noda-0.0.12 vs lib/noda/job_worker.rb in noda-0.0.13
- old
+ new
@@ -6,13 +6,27 @@
# Taskを取りだして実行します.
# ip=127.0.0.1
# w=Noda::JobWorker.new("#{ip}", "10001")
# t = DRb.start_service("druby://#{ip}:10101",w)
# w.start
-#
+# Taskをサーバー経由で送信する
+# ip=127.0.0.1
+# server = Noda::JobServer.new ip,"10001"
+# str = %Q'
+# class Noda::MyTask
+# def do_task(table)
+# table.put @name, "#{Process.pid} : #{Time.now}"
+# return "#{@name} in #{Process.pid} : #{Time.now}"
+# end
+# def initialize(name) @name end
+# end
+# '
+# eval(str)
+# task = Noda::MyTask.new("test")
+# server.add_task_class( task.class.to_s, str)
+# 10.times{|i| server.input.push Noda::MyTask.new(i) }
#
-
class JobWorker
attr_reader :thread
attr_accessor :max_retry_connect , :wait_time_to_retry
# * server_addr ジョブサーバーアドレス、またはホスト名
# * server_port ジョブサーバーポート
@@ -57,10 +71,10 @@
# クラス定義をEvalする。クラス定義はサーバーから取り出す.
# ワーカー側にクラス定義を動的に渡すときに使います.
# *name クラス名
def load_class(name)
s = @job.task_class(name)
- Noda.module_eval(s)
+ Noda.module_eval(s) if s
end
# ワーカーのメインスレッドを起動します.start で使います.
def init_thread
@table = @job.hash_table
@thread= Thread.new{