1<?php
2
3namespace Illuminate\Contracts\Queue;
4
5interface Queue
6{
7    /**
8     * Get the size of the queue.
9     *
10     * @param  string|null  $queue
11     * @return int
12     */
13    public function size($queue = null);
14
15    /**
16     * Push a new job onto the queue.
17     *
18     * @param  string|object  $job
19     * @param  mixed   $data
20     * @param  string|null  $queue
21     * @return mixed
22     */
23    public function push($job, $data = '', $queue = null);
24
25    /**
26     * Push a new job onto the queue.
27     *
28     * @param  string  $queue
29     * @param  string|object  $job
30     * @param  mixed   $data
31     * @return mixed
32     */
33    public function pushOn($queue, $job, $data = '');
34
35    /**
36     * Push a raw payload onto the queue.
37     *
38     * @param  string  $payload
39     * @param  string|null  $queue
40     * @param  array   $options
41     * @return mixed
42     */
43    public function pushRaw($payload, $queue = null, array $options = []);
44
45    /**
46     * Push a new job onto the queue after a delay.
47     *
48     * @param  \DateTimeInterface|\DateInterval|int  $delay
49     * @param  string|object  $job
50     * @param  mixed   $data
51     * @param  string|null  $queue
52     * @return mixed
53     */
54    public function later($delay, $job, $data = '', $queue = null);
55
56    /**
57     * Push a new job onto the queue after a delay.
58     *
59     * @param  string  $queue
60     * @param  \DateTimeInterface|\DateInterval|int  $delay
61     * @param  string|object  $job
62     * @param  mixed   $data
63     * @return mixed
64     */
65    public function laterOn($queue, $delay, $job, $data = '');
66
67    /**
68     * Push an array of jobs onto the queue.
69     *
70     * @param  array   $jobs
71     * @param  mixed   $data
72     * @param  string|null  $queue
73     * @return mixed
74     */
75    public function bulk($jobs, $data = '', $queue = null);
76
77    /**
78     * Pop the next job off of the queue.
79     *
80     * @param  string  $queue
81     * @return \Illuminate\Contracts\Queue\Job|null
82     */
83    public function pop($queue = null);
84
85    /**
86     * Get the connection name for the queue.
87     *
88     * @return string
89     */
90    public function getConnectionName();
91
92    /**
93     * Set the connection name for the queue.
94     *
95     * @param  string  $name
96     * @return $this
97     */
98    public function setConnectionName($name);
99}
100