about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-11-12 13:45:10 -0800
committerEric Wong <normalperson@yhbt.net>2009-11-12 13:45:10 -0800
commit680a3827db292bcf34ab0aeb773720562866bc3b (patch)
tree2c7a02437f9085963dceaf4c1a0de0c8a6d9dac3 /lib
parentdd08acc53b0f17946b47a7a8f5e6b3f219c218fd (diff)
downloadupr-680a3827db292bcf34ab0aeb773720562866bc3b.tar.gz
backends: internal API updates/cleanups
Return values for class methods for Upr::Monitor and UprStatus
should synched.

Class methods:
  * error!(upid) method added:
    sets seen = -1, updates time and returns Status(-like) object
  * read(upid) no longer updates time
  * incr(upid, nr) does up increment errored statuses
  * incr(upid, nr) returns nil on invalid upids
  * finish(upid) returns nil on invalid upids

Additionally the AR example has been updated to include
Upr::StatusMethods for instance methods.
Diffstat (limited to 'lib')
-rw-r--r--lib/upr/monitor.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/upr/monitor.rb b/lib/upr/monitor.rb
index 2ccb447..bcf3f03 100644
--- a/lib/upr/monitor.rb
+++ b/lib/upr/monitor.rb
@@ -27,22 +27,27 @@ module Upr
     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]
+      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