Show More
Commit Description:
shows contest start confirmation for indv contest
Commit Description:
shows contest start confirmation for indv contest
References:
File last commit:
Show/Diff file:
Action:
app/models/grader_process.rb
| 81 lines
| 1.9 KiB
| text/x-ruby
| RubyLexer
|
|
r29 | class GraderProcess < ActiveRecord::Base | ||
|
r34 | def self.find_by_host_and_pid(host,pid) | ||
|
r29 | return GraderProcess.find(:first, | ||
:conditions => { | ||||
|
r34 | :host => host, | ||
|
r29 | :pid => pid | ||
}) | ||||
end | ||||
|
r34 | |||
def self.register(host,pid,mode) | ||||
grader = GraderProcess.find_by_host_and_pid(host,pid) | ||||
|
r32 | if grader | ||
grader.mode = mode | ||||
grader.active = nil | ||||
grader.task_id = nil | ||||
|
r105 | grader.task_type = nil | ||
|
r175 | grader.terminated = false | ||
|
r32 | grader.save | ||
else | ||||
|
r34 | grader = GraderProcess.create(:host => host, | ||
|
r32 | :pid => pid, | ||
|
r175 | :mode => mode, | ||
:terminated => false) | ||||
|
r32 | end | ||
grader | ||||
end | ||||
|
r175 | |||
def self.find_running_graders | ||||
GraderProcess.find(:all, | ||||
:conditions => {:terminated => 0}) | ||||
end | ||||
|
r32 | |||
|
r175 | def self.find_terminated_graders | ||
|
r32 | GraderProcess.find(:all, | ||
|
r175 | :conditions => "`terminated`") | ||
end | ||||
def self.find_stalled_process | ||||
GraderProcess.find(:all, | ||||
:conditions => ["(`terminated` = 0) AND active AND " + | ||||
"(updated_at < ?)", | ||||
|
r32 | Time.now.gmtime - GraderProcess.stalled_time]) | ||
end | ||||
def report_active(task=nil) | ||||
self.active = true | ||||
|
r125 | if task!=nil | ||
self.task_id = task.id | ||||
|
r126 | self.task_type = task.class.to_s | ||
|
r125 | else | ||
self.task_id = nil | ||||
|
r126 | self.task_type = nil | ||
|
r125 | end | ||
|
r32 | self.save | ||
|
r29 | end | ||
|
r126 | def report_inactive(task=nil) | ||
|
r32 | self.active = false | ||
|
r126 | if task!=nil | ||
self.task_id = task.id | ||||
self.task_type = task.class.to_s | ||||
else | ||||
self.task_id = nil | ||||
self.task_type = nil | ||||
end | ||||
|
r32 | self.save | ||
|
r29 | end | ||
|
r175 | def terminate | ||
self.terminated = true | ||||
self.save | ||||
end | ||||
|
r32 | protected | ||
def self.stalled_time() | ||||
return 1.minute | ||||
end | ||||
|
r29 | end | ||