summaryrefslogtreecommitdiff
path: root/_darcs/pristine/classes/Queue_item.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-05-06 11:17:29 -0400
committerEvan Prodromou <evan@prodromou.name>2008-05-06 11:17:29 -0400
commit1d4f1f6bf6bd8313cbb51dbf61d675408171d1b8 (patch)
tree8c622e1c4c1cbfc78abe335c1a153e354f29eee4 /_darcs/pristine/classes/Queue_item.php
parentd4fd1c505e14bdef4945e51d4f46a949d3abfb98 (diff)
add standard directories
Added some of the standard directories darcs-hash:20080506151729-84dde-563da8505e06a7302041c93ab157ced31165876c.gz
Diffstat (limited to '_darcs/pristine/classes/Queue_item.php')
-rw-r--r--_darcs/pristine/classes/Queue_item.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/_darcs/pristine/classes/Queue_item.php b/_darcs/pristine/classes/Queue_item.php
new file mode 100644
index 000000000..8ba3281de
--- /dev/null
+++ b/_darcs/pristine/classes/Queue_item.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Table Definition for queue_item
+ */
+require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
+
+class Queue_item extends Memcached_DataObject
+{
+ ###START_AUTOCODE
+ /* the code below is auto generated do not remove the above tag */
+
+ public $__table = 'queue_item'; // table name
+ public $notice_id; // int(4) primary_key not_null
+ public $transport; // varchar(8) primary_key not_null
+ public $created; // datetime() not_null
+ public $claimed; // datetime()
+
+ /* Static get */
+ function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Queue_item',$k,$v); }
+
+ /* the code above is auto generated do not remove the tag below */
+ ###END_AUTOCODE
+
+ function sequenceKey() { return array(false, false); }
+
+ static function top($transport) {
+
+ $qi = new Queue_item();
+ $qi->transport = $transport;
+ $qi->orderBy('created');
+ $qi->whereAdd('claimed is NULL');
+
+ $qi->limit(1);
+
+ $cnt = $qi->find(TRUE);
+
+ if ($cnt) {
+ # XXX: potential race condition
+ # can we force it to only update if claimed is still NULL
+ # (or old)?
+ common_log(LOG_INFO, 'claiming queue item = ' . $qi->notice_id . ' for transport ' . $transport);
+ $orig = clone($qi);
+ $qi->claimed = common_sql_now();
+ $result = $qi->update($orig);
+ if ($result) {
+ common_log(LOG_INFO, 'claim succeeded.');
+ return $qi;
+ } else {
+ common_log(LOG_INFO, 'claim failed.');
+ }
+ }
+ $qi = NULL;
+ return NULL;
+ }
+}