lib/kamerling/task_dispatcher.rb in kamerling-0.0.2 vs lib/kamerling/task_dispatcher.rb in kamerling-0.0.3
- old
+ new
@@ -1,29 +1,38 @@
-module Kamerling class TaskDispatcher
- def initialize net_dispatcher: NetDispatcher, repos: Repos
- @net_dispatcher = net_dispatcher
- @repos = repos
- end
+require_relative 'dispatch'
+require_relative 'message'
+require_relative 'net_dispatcher'
+require_relative 'repos'
- def dispatch
- repos.projects.each do |project|
- repos.free_clients_for(project).each do |client|
- task = repos.next_task_for(project)
- dispatch_task client: client, project: project, task: task if task
+module Kamerling
+ class TaskDispatcher
+ def initialize(net_dispatcher: NetDispatcher, repos: Repos)
+ @net_dispatcher = net_dispatcher
+ @repos = repos
+ end
+
+ def dispatch_all
+ repos.projects.each do |project|
+ repos.free_clients_for(project).each do |client|
+ task = repos.next_task_for(project)
+ dispatch_task client: client, project: project, task: task if task
+ end
end
end
- end
- attr_reader :net_dispatcher, :repos
- private :net_dispatcher, :repos
+ attr_reader :net_dispatcher, :repos
+ private :net_dispatcher, :repos
- private
+ private
- def dispatch_task client: req(:client), project: req(:project),
- task: req(:task)
- message = Message[client: client, payload: task.data, project: project,
- task: task, type: :DATA]
- net_dispatcher.dispatch client.addr, message.to_s
- client.busy = true
- repos << client
+ def dispatch_task(client:, project:, task:)
+ message = Message.build(client: client, payload: task.data,
+ project: project, task: task, type: :DATA)
+ dispatch = Dispatch.new(addr: client.addr, client: client,
+ project: project, task: task)
+ net_dispatcher.dispatch client.addr, message
+ client.busy = true
+ repos << client
+ repos << dispatch
+ end
end
-end end
+end