/var/www/hkosl.com/littleark/webadmin/libraies/illuminate/queue/Illuminate/Queue/Queue.php


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($payloadtrue);

        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;
    }

}