about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-11-11 15:41:44 -0800
committerEric Wong <normalperson@yhbt.net>2009-11-11 15:41:44 -0800
commita3977a51ae30fd2856c969e2e7897535715d19c6 (patch)
treec8c0f2aece009a3643bfd31a45026059b82b842d
parent4e1763e8bacdec892b98844ff514d2e505bb6d54 (diff)
downloadupr-a3977a51ae30fd2856c969e2e7897535715d19c6.tar.gz
monitor: add "finish" method
This lets us finish up connections by setting seen == length
when the client is finished uploading.
-rw-r--r--examples/rails_app-2.3.4/app/models/upr_status.rb12
-rw-r--r--lib/upr/monitor.rb7
2 files changed, 19 insertions, 0 deletions
diff --git a/examples/rails_app-2.3.4/app/models/upr_status.rb b/examples/rails_app-2.3.4/app/models/upr_status.rb
index 81031c2..61d39bc 100644
--- a/examples/rails_app-2.3.4/app/models/upr_status.rb
+++ b/examples/rails_app-2.3.4/app/models/upr_status.rb
@@ -26,6 +26,18 @@ class UprStatus < ActiveRecord::Base
                  { :upid => upid })
     end
 
+    def finish(upid)
+      transaction do
+        if rv = find_by_upid(upid)
+          rv.time = Time.now.to_i
+          rv.length ||= rv.seen
+          rv.seen = rv.length
+          rv.save
+          rv
+        end
+      end
+    end
+
     def gc
       cutoff = Time.now.to_i - @@gc_cutoff
       delete_all "time < #{cutoff}"
diff --git a/lib/upr/monitor.rb b/lib/upr/monitor.rb
index d1955f9..2ccb447 100644
--- a/lib/upr/monitor.rb
+++ b/lib/upr/monitor.rb
@@ -37,5 +37,12 @@ module Upr
       moneta.store(upid, status, OPT)
     end
 
+    def finish(upid)
+      status = moneta[upid]
+      status.length ||= status.seen
+      status.seen = status.length
+      moneta.store(upid, status, OPT)
+    end
+
   end
 end