<?php
/**
 * Scheduling module service bundle.
 *
 * @package ScheduledChanges
 */

namespace ScheduledChanges\Scheduler;

/**
 * Holds queue services owned by the lifecycle scheduling module.
 */
final class SchedulingServices {
	private ActionSchedulerGateway $actions;
	private CurrentActionContext $action_context;
	private SchedulerWorker $worker;
	private SchedulerService $scheduler;
	private QueueMonitor $queue;

	public function __construct(
		ActionSchedulerGateway $actions,
		CurrentActionContext $action_context,
		SchedulerWorker $worker,
		SchedulerService $scheduler,
		QueueMonitor $queue
	) {
		$this->actions        = $actions;
		$this->action_context = $action_context;
		$this->worker         = $worker;
		$this->scheduler      = $scheduler;
		$this->queue          = $queue;
	}

	public function actions(): ActionSchedulerGateway {
		return $this->actions;
	}

	public function actionContext(): CurrentActionContext {
		return $this->action_context;
	}

	public function worker(): SchedulerWorker {
		return $this->worker;
	}

	public function scheduler(): SchedulerService {
		return $this->scheduler;
	}

	public function queue(): QueueMonitor {
		return $this->queue;
	}
}
