Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
/**
* @file
* Definition of Drupal\Core\Queue\Memory.
*/
namespace Drupal\Core\Queue;
use stdClass;
/**
* Static queue implementation.
*
* This allows "undelayed" variants of processes relying on the Queue
* interface. The queue data resides in memory. It should only be used for
* items that will be queued and dequeued within a given page request.
*/
class Memory implements QueueInterface {
/**
* The queue data.
*
* @var array
*/
protected $queue;
/**
* Counter for item ids.
*
* @var int
*/
protected $idSequence;
/**
* Implements Drupal\Core\Queue\QueueInterface::__construct().
*/
public function __construct($name) {
$this->queue = array();
$this->idSequence = 0;
}
/**
* Implements Drupal\Core\Queue\QueueInterface::createItem().
*/
public function createItem($data) {
$item = new stdClass();
$item->item_id = $this->idSequence++;
$item->data = $data;
$item->created = time();
$item->expire = 0;
$this->queue[$item->item_id] = $item;
}
/**
* Implements Drupal\Core\Queue\QueueInterface::numberOfItems().
*/
public function numberOfItems() {
return count($this->queue);
}
/**
* Implements Drupal\Core\Queue\QueueInterface::claimItem().
*/
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;
}
/**
* Implements Drupal\Core\Queue\QueueInterface::deleteItem().
*/
public function deleteItem($item) {
unset($this->queue[$item->item_id]);
}
/**
* Implements Drupal\Core\Queue\QueueInterface::releaseItem().
*/
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;
}
return FALSE;
}
/**
* Implements Drupal\Core\Queue\QueueInterface::createQueue().
*/
public function createQueue() {
// Nothing needed here.
}
/**
* Implements Drupal\Core\Queue\QueueInterface::deleteQueue().
*/
public function deleteQueue() {
$this->queue = array();
$this->idSequence = 0;
}
}