Index: modules/system/system.queue.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.queue.inc,v
retrieving revision 1.13
diff -u -r1.13 system.queue.inc
--- modules/system/system.queue.inc	14 Jun 2010 13:10:31 -0000	1.13
+++ modules/system/system.queue.inc	24 Jun 2010 12:59:41 -0000
@@ -307,61 +307,41 @@
    */
   protected $queue;
 
-  /**
-   * Counter for item ids.
-   *
-   * @var int
-   */
-  protected $id_sequence;
-
   public function __construct($name) {
-    $this->queue = array();
-    $this->id_sequence = 0;
+    $this->queue = new SplQueue();
   }
 
   public function createItem($data) {
     $item = new stdClass();
-    $item->item_id = $this->id_sequence++;
     $item->data = $data;
-    $item->created = time();
-    $item->expire = 0;
-    $this->queue[$item->item_id] = $item;
+    $this->queue[] = $item;
   }
 
   public function numberOfItems() {
-    return count($this->queue);
+    return $this->queue->count();
   }
 
   public function claimItem($lease_time = 30) {
-    foreach ($this->queue as $key => $item) {
-      if ($item->expire == 0) {
-        $item->expire = time() + $lease_time;
-        $this->queue[$key] = $item;
-        return $item;
-      }
-    }
-    return FALSE;
+  	$item = $this->queue->current();
+  	$this->queue->next();
+    return $item;
   }
 
   public function deleteItem($item) {
-    unset($this->queue[$item->item_id]);
-  }
-
-  public function releaseItem($item) {
-    if (isset($this->queue[$item->item_id]) && $this->queue[$item->item_id]->expire != 0) {
-      $this->queue[$item->item_id]->expire = 0;
-      return TRUE;
+    for($i = 0; $i < $this->queue->count(); $i++) {
+      if($this->queue->current() === $item) {
+        $this->queue->offsetUnset($this->queue->key());
+      }
+      $this->queue->next();
     }
-    return FALSE;
   }
 
   public function createQueue() {
-    // Nothing needed here.
+    return $this->queue->rewind();
   }
 
   public function deleteQueue() {
-    $this->queue = array();
-    $this->id_sequence = 0;
+    $this->queue = new SplQueue();
   }
 }
 
