OpenTTD Source
20241108-master-g80f628063a
|
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. More... | |
void | JoinNext () |
Join the next finished job, if available. | |
void | SpawnAll () |
Start all threads in the running list. More... | |
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. More... | |
void | Queue (LinkGraph *lg) |
Queue a link graph for execution. More... | |
void | Unqueue (LinkGraph *lg) |
Remove a link graph from the execution queue. More... | |
Static Public Member Functions | |
static void | Run (LinkGraphJob *job) |
Run all handlers for the given Job. More... | |
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. More... | |
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. More... | |
Definition at line 36 of file linkgraphschedule.h.
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().
|
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 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 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().
|
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 JoinNext().
|
friend |
Get a SaveLoad array for the link graph schedule.
Definition at line 219 of file linkgraph_sl.cpp.
|
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(), Clear(), ClickChangeDateCheat(), LGRSChunkHandler::FixPointers(), LGRSChunkHandler::Load(), OnTick_LinkGraph(), Run(), SetStartingYear(), and StateGameLoop_LinkGraphPauseControl().