<?php

namespace xmvc\libQueue;

/**
* 队列 - 接口
*/
interface InterfaceQueue
{
    /**
     * 构造
     * @param array $options 配置数组
     */
    public function __construct(array $options);
    /**
     * 将任务数据加入队列
     */
    public function put(array $data): self;
    /**
     * 获取任务
     *
     * @return QueueJob
     */
    public function reserve(): QueueJob;
    /**
     * 保持活动
     */
    public function touch(QueueJob $job): void;
    /**
     * 删除任务
     */
    public function delete(QueueJob $job): void;
    /**
     * 释放一个任务回到队列中
     */
    public function release(QueueJob $job): void;
    /**
     * 队列状态信息
     *
     * @return array
     */
    public function status(): array;
}
