1: <?php
2:
3: namespace Charcoal\Queue;
4:
5: /**
6: *
7: */
8: interface QueueItemInterface
9: {
10: /**
11: * Process the item.
12: *
13: * @param callable $callback An optional callback routine executed after the item is processed.
14: * @param callable $successCallback An optional callback routine executed when the item is resolved.
15: * @param callable $failureCallback An optional callback routine executed when the item is rejected.
16: * @return boolean Success / Failure
17: */
18: public function process(
19: callable $callback = null,
20: callable $successCallback = null,
21: callable $failureCallback = null
22: );
23:
24: /**
25: * Set the queue item's data.
26: *
27: * @param array $data The queue item data to set.
28: * @return QueueItemTrait Chainable
29: */
30: public function setQueueItemData(array $data);
31:
32: /**
33: * Set the queue's ID.
34: *
35: * @param mixed $id The unique queue identifier.
36: * @return QueueItemInterface Chainable
37: */
38: public function setQueueId($id);
39:
40: /**
41: * Get the queue's ID.
42: *
43: * @return string
44: */
45: public function queueId();
46:
47: /**
48: * Set the date/time the item was queued at.
49: *
50: * @param null|string|DateTimeInterface $ts A date/time string or object.
51: * @return QueueItemInterface Chainable
52: */
53: public function setQueuedDate($ts);
54:
55: /**
56: * Retrieve the date/time the item was queued at.
57: *
58: * @return null|DateTimeInterface
59: */
60: public function queuedDate();
61:
62: /**
63: * Set the date/time the item should be processed at.
64: *
65: * @param null|string|DateTimeInterface $ts A date/time string or object.
66: * @throws InvalidArgumentException If the date/time is invalid.
67: * @return QueueItemInterface Chainable
68: */
69: public function setProcessingDate($ts);
70:
71: /**
72: * Retrieve the date/time the item should be processed at.
73: *
74: * @return null|DateTimeInterface
75: */
76: public function processingDate();
77:
78: /**
79: * Set the date/time the item was processed at.
80: *
81: * @param null|string|DateTimeInterface $ts A date/time string or object.
82: * @throws InvalidArgumentException If the date/time is invalid.
83: * @return QueueItemInterface Chainable
84: */
85: public function setProcessedDate($ts);
86:
87: /**
88: * Retrieve the date/time the item was processed at.
89: *
90: * @return null|DateTimeInterface
91: */
92: public function processedDate();
93: }
94: