OpenTTD Source 20241224-master-gf74b0cf984
|
Public Member Functions | |
void | SpawnNext () |
Start the next job in the schedule. | |
bool | IsJoinWithUnfinishedJobDue () const |
Check if the next job is supposed to be finished, but has not yet completed. | |
void | JoinNext () |
Join the next finished job, if available. | |
void | SpawnAll () |
Start all threads in the running list. | |
void | ShiftDates (TimerGameEconomy::Date interval) |
Shift all dates (join dates and edge annotations) of link graphs and link graph jobs by the number of days given. | |
void | Queue (LinkGraph *lg) |
Queue a link graph for execution. | |
void | Unqueue (LinkGraph *lg) |
Remove a link graph from the execution queue. | |
Static Public Member Functions | |
static void | Run (LinkGraphJob *job) |
Run all handlers for the given Job. | |
static void | Clear () |
Clear all link graphs and jobs from the schedule. | |
Static Public Attributes | |
static const uint | SPAWN_JOIN_TICK = 21 |
Tick when jobs are spawned or joined every day. | |
static LinkGraphSchedule | instance |
Static instance of LinkGraphSchedule. | |
Protected Attributes | |
std::array< std::unique_ptr< ComponentHandler >, 6 > | handlers {} |
Handlers to be run for each job. | |
GraphList | schedule |
Queue for new jobs. | |
JobList | running |
Currently running jobs. | |
Private Types | |
typedef std::list< LinkGraph * > | GraphList |
typedef std::list< LinkGraphJob * > | JobList |
Private Member Functions | |
LinkGraphSchedule () | |
Create a link graph schedule and initialize its handlers. | |
~LinkGraphSchedule () | |
Delete a link graph schedule and its handlers. | |
Friends | |
SaveLoadTable | GetLinkGraphScheduleDesc () |
Get a SaveLoad array for the link graph schedule. | |
Definition at line 36 of file linkgraphschedule.h.
|
private |
Definition at line 40 of file linkgraphschedule.h.
|
private |
Definition at line 41 of file linkgraphschedule.h.
|
private |
Create a link graph schedule and initialize its handlers.
Definition at line 144 of file linkgraphschedule.cpp.
References handlers.
|
private |
Delete a link graph schedule and its handlers.
Definition at line 157 of file linkgraphschedule.cpp.
References Clear().
|
static |
Clear all link graphs and jobs from the schedule.
Definition at line 121 of file linkgraphschedule.cpp.
References instance, running, and schedule.
Referenced by ShutdownGame(), and ~LinkGraphSchedule().
bool LinkGraphSchedule::IsJoinWithUnfinishedJobDue | ( | ) | const |
Check if the next job is supposed to be finished, but has not yet completed.
Definition at line 58 of file linkgraphschedule.cpp.
References LinkGraphJob::IsJobCompleted(), LinkGraphJob::IsScheduledToBeJoined(), and running.
Referenced by StateGameLoop_LinkGraphPauseControl().
void LinkGraphSchedule::JoinNext | ( | ) |
Join the next finished job, if available.
Definition at line 68 of file linkgraphschedule.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_pool >::Get(), LinkGraphJob::IsScheduledToBeJoined(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_pool >::IsValidID(), LinkGraphJob::LinkGraphIndex(), Queue(), running, and Unqueue().
Referenced by OnTick_LinkGraph().
|
inline |
Queue a link graph for execution.
lg | Link graph to be queued. |
Definition at line 67 of file linkgraphschedule.h.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_pool >::Get(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index.
Referenced by IncreaseStats(), and JoinNext().
|
static |
Run all handlers for the given Job.
job | Pointer to a link graph job. |
Definition at line 87 of file linkgraphschedule.cpp.
References handlers, instance, LinkGraphJob::IsJobAborted(), and LinkGraphJob::job_completed.
Referenced by LinkGraphJob::SpawnThread().
void LinkGraphSchedule::ShiftDates | ( | TimerGameEconomy::Date | interval | ) |
Shift all dates (join dates and edge annotations) of link graphs and link graph jobs by the number of days given.
interval | Number of days to be added or subtracted. |
Definition at line 135 of file linkgraphschedule.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_job_pool >::Iterate(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_pool >::Iterate().
Referenced by ChangeTimekeepingUnits(), ClickChangeDateCheat(), and SetStartingYear().
void LinkGraphSchedule::SpawnAll | ( | ) |
Start all threads in the running list.
This is only useful for save/load. Usually threads are started when the job is created.
Definition at line 111 of file linkgraphschedule.cpp.
References running.
Referenced by AfterLoadLinkGraphs().
void LinkGraphSchedule::SpawnNext | ( | ) |
Start the next job in the schedule.
Definition at line 33 of file linkgraphschedule.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_job_pool >::CanAllocateItem(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_link_graph_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, running, schedule, LinkGraph::Size(), and LinkGraphJob::SpawnThread().
Referenced by OnTick_LinkGraph().
|
inline |
Remove a link graph from the execution queue.
lg | Link graph to be removed. |
Definition at line 77 of file linkgraphschedule.h.
Referenced by IncreaseStats(), JoinNext(), and Station::~Station().
|
friend |
Get a SaveLoad array for the link graph schedule.
Definition at line 219 of file linkgraph_sl.cpp.
|
protected |
Handlers to be run for each job.
Definition at line 45 of file linkgraphschedule.h.
Referenced by LinkGraphSchedule(), and Run().
|
static |
Static instance of LinkGraphSchedule.
Note: This instance is created on task start. Lazy creation on first usage results in a data race between the CDist threads.
Definition at line 52 of file linkgraphschedule.h.
Referenced by AfterLoad_LinkGraphPauseControl(), AfterLoadLinkGraphs(), ChangeTimekeepingUnits(), Clear(), ClickChangeDateCheat(), LGRSChunkHandler::FixPointers(), IncreaseStats(), LGRSChunkHandler::Load(), OnTick_LinkGraph(), Run(), LGRSChunkHandler::Save(), SetStartingYear(), StateGameLoop_LinkGraphPauseControl(), and Station::~Station().
|
protected |
Currently running jobs.
Definition at line 47 of file linkgraphschedule.h.
Referenced by Clear(), IsJoinWithUnfinishedJobDue(), JoinNext(), SpawnAll(), and SpawnNext().
|
protected |
Queue for new jobs.
Definition at line 46 of file linkgraphschedule.h.
Referenced by Clear(), and SpawnNext().
|
static |
Tick when jobs are spawned or joined every day.
Definition at line 51 of file linkgraphschedule.h.
Referenced by OnTick_LinkGraph(), and StateGameLoop_LinkGraphPauseControl().