summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.de>2010-01-31 19:09:17 +0100
committerChristoph Helma <helma@in-silico.de>2010-01-31 19:09:17 +0100
commitc5598f77170727cf51d91499e2c475b769d2a3fd (patch)
tree88395a0613ceed7e7199713aa0fb2238261c587a
parent0cafd987e88ef0581f0e15dda217e10033ffc048 (diff)
Upload facilities added, Ambit disabled
-rw-r--r--application.rb25
1 files changed, 22 insertions, 3 deletions
diff --git a/application.rb b/application.rb
index 8c67180..ecda138 100644
--- a/application.rb
+++ b/application.rb
@@ -11,6 +11,7 @@ DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/task.sqlite3")
class Task
include DataMapper::Resource
property :id, Serial
+ property :pid, Integer
property :uri, String, :length => 100
property :resource, String, :length => 100
property :status, String, :default => "created"
@@ -45,21 +46,39 @@ end
put '/:id/:status/?' do
task = Task.get(params[:id])
- task.status = params[:status]
- if params[:status] == "completed"
+ task.status = params[:status] unless params[:status] == "pid"
+ case params[:status]
+ when "completed"
task.resource = params[:resource]
task.finished_at = DateTime.now
+ task.pid = nil
+ when "pid"
+ task.pid = params[:pid]
+ when "cancelled"
+ Process.kill(9,task.pid) unless task.pid.nil?
+ task.pid = nil
end
task.save
end
delete '/:id/?' do
- Task.get(params[:id]).destroy!
+ task = Task.get(params[:id])
+ begin
+ Process.kill(9,task.pid) unless task.pid.nil?
+ rescue
+ "Cannot kill task with pid #{task.pid}"
+ end
+ task.destroy!
"Task #{params[:id]} deleted."
end
delete '/?' do
Task.all.each do |task|
+ begin
+ Process.kill(9,task.pid) unless task.pid.nil?
+ rescue
+ "Cannot kill task with pid #{task.pid}"
+ end
task.destroy!
end
"All tasks deleted."