10#ifndef LINKGRAPHSCHEDULE_H
11#define LINKGRAPHSCHEDULE_H
40 typedef std::list<LinkGraph *> GraphList;
41 typedef std::list<LinkGraphJob *> JobList;
45 std::array<std::unique_ptr<ComponentHandler>, 6>
handlers{};
61 void ShiftDates(TimerGameEconomy::Date interval);
70 this->schedule.push_back(lg);
A handler doing "something" on a link graph component.
virtual ~ComponentHandler()=default
Destroy the handler.
virtual void Run(LinkGraphJob &job) const =0
Run the handler.
Class for calculation jobs to be run on link graphs.
LinkGraphSchedule()
Create a link graph schedule and initialize its handlers.
GraphList schedule
Queue for new jobs.
void SpawnNext()
Start the next job in the schedule.
static LinkGraphSchedule instance
Static instance of LinkGraphSchedule.
static void Clear()
Clear all link graphs and jobs from the schedule.
void ShiftDates(TimerGameEconomy::Date interval)
Shift all dates (join dates and edge annotations) of link graphs and link graph jobs by the number of...
~LinkGraphSchedule()
Delete a link graph schedule and its handlers.
friend SaveLoadTable GetLinkGraphScheduleDesc()
Get a SaveLoad array for the link graph schedule.
bool IsJoinWithUnfinishedJobDue() const
Check if the next job is supposed to be finished, but has not yet completed.
static const uint SPAWN_JOIN_TICK
Tick when jobs are spawned or joined every day.
void Unqueue(LinkGraph *lg)
Remove a link graph from the execution queue.
void Queue(LinkGraph *lg)
Queue a link graph for execution.
static void Run(LinkGraphJob *job)
Run all handlers for the given Job.
void JoinNext()
Join the next finished job, if available.
std::array< std::unique_ptr< ComponentHandler >, 6 > handlers
Handlers to be run for each job.
JobList running
Currently running jobs.
void SpawnAll()
Start all threads in the running list.
A connected component of a link graph.
Declaration of link graph classes used for cargo distribution.
void StateGameLoop_LinkGraphPauseControl()
Pause the game if in 2 TimerGameEconomy::date_fract ticks, we would do a join with the next link grap...
void AfterLoad_LinkGraphPauseControl()
Pause the game on load if we would do a join with the next link graph job, but it is still running,...
std::span< const struct SaveLoad > SaveLoadTable
A table of SaveLoad entries.
Tindex index
Index of this pool item.
static Titem * Get(size_t index)
Returns Titem with given index.