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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
<?php namespace Illuminate\Queue;
use Closure; use DateTime; use Illuminate\Container\Container; use Illuminate\Support\SerializableClosure;
abstract class Queue {
/** * The IoC container instance. * * @var \Illuminate\Container\Container */ protected $container;
/** * Marshal a push queue request and fire the job. * * @throws \RuntimeException */ public function marshal() { throw new \RuntimeException("Push queues only supported by Iron."); }
/** * Push a new an array of jobs onto the queue. * * @param array $jobs * @param mixed $data * @param string $queue * @return mixed */ public function bulk($jobs, $data = '', $queue = null) { foreach ((array) $jobs as $job) { $this->push($job, $data, $queue); } }
/** * Create a payload string from the given job and data. * * @param string $job * @param mixed $data * @param string $queue * @return string */ protected function createPayload($job, $data = '', $queue = null) { if ($job instanceof Closure) { return json_encode($this->createClosurePayload($job, $data)); } else { return json_encode(array('job' => $job, 'data' => $data)); } }
/** * Create a payload string for the given Closure job. * * @param \Closure $job * @param mixed $data * @return string */ protected function createClosurePayload($job, $data) { $closure = serialize(new SerializableClosure($job));
return array('job' => 'IlluminateQueueClosure', 'data' => compact('closure')); }
/** * Set additional meta on a payload string. * * @param string $payload * @param string $key * @param string $value * @return string */ protected function setMeta($payload, $key, $value) { $payload = json_decode($payload, true);
return json_encode(array_set($payload, $key, $value)); }
/** * Calculate the number of seconds with the given delay. * * @param \DateTime|int $delay * @return int */ protected function getSeconds($delay) { if ($delay instanceof DateTime) { return max(0, $delay->getTimestamp() - $this->getTime()); } else { return intval($delay); } }
/** * Get the current UNIX timestamp. * * @return int */ public function getTime() { return time(); }
/** * Set the IoC container instance. * * @param \Illuminate\Container\Container $container * @return void */ public function setContainer(Container $container) { $this->container = $container; }
}
|