lib/upr/monitor.rb in upr-0.1.0 vs lib/upr/monitor.rb in upr-0.2.0

- old
+ new

@@ -6,15 +6,15 @@ # store to monitor upload progress. # # Usage (in config.ru with Moneta::Memory store): # require 'upr' # require 'moneta/memory' - # use Upr, :backend => Upr::MonetaMonitor.new(Moneta::Memory.new) + # use Upr, :backend => Upr::Monitor.new(Moneta::Memory.new) # run YourApplication.new class Monitor < Struct.new(:moneta) - # nuke anything not read/updated in 10 seconds - OPT = { :expires_in => 10 } + # nuke anything not read/updated in 60 seconds + OPT = { :expires_in => 60 } def initialize(moneta_store = nil) super if moneta_store.nil? require 'moneta/memory' # moneta does not autoload :< @@ -25,16 +25,28 @@ def start(upid, length) moneta.store(upid, Status.new(0, length), OPT) end def read(upid) - moneta.update_key(upid, OPT) moneta[upid] end def incr(upid, nr) - status = moneta[upid] - status.seen += nr + status = moneta[upid] or return + status.seen += nr if status.seen >= 0 + moneta.store(upid, status, OPT) + end + + def finish(upid) + status = moneta[upid] or return + status.length ||= status.seen + status.seen = status.length + moneta.store(upid, status, OPT) + end + + def error!(upid) + status = moneta[upid] or return + status.seen = -1 moneta.store(upid, status, OPT) end end end