MySQL 26.7.0
Source Code Documentation
mysql::scheduler::Dependency_tracker_single_predecessor Class Reference

An example of Dependency Tracker implementation that tracks a single task predecessor. More...

#include <dependency_tracker_single_predecessor_example.h>

Inheritance diagram for mysql::scheduler::Dependency_tracker_single_predecessor:
[legend]

Classes

struct  Dependency
 Representation of a dependency. More...
 

Public Types

using Task_id_type = Task_id
 
using Mutex_type = concurrency::Mutex
 
using Mt_key = concurrency::Mutex_key
 
using St_key = concurrency::Stage_key
 
- Public Types inherited from mysql::scheduler::Base_dependency_tracker
using Task_id_type = Task_id
 
using Mutex_type = concurrency::Mutex
 

Public Member Functions

 Dependency_tracker_single_predecessor ()
 
bool add_dependency (const Task_id_type &predecessor, const Task_id_type &successor) override
 add_dependency More...
 
bool activate_task (const Task_id &task) override
 Register task in the system to prevent adding dependencies on non-existing tasks and adding active dependencies on tasks that are already finished. More...
 
bool check_ready (const Task_id &task) override
 check_ready More...
 
std::vector< Task_idmark_dependency_met (const Task_id &task, bool is_finished) override
 Task is finished, mark all dependencies of this task as met. More...
 
std::vector< Task_idget_successors (const Task_id &task)
 Get the list of tasks that depend on the given task. More...
 
- Public Member Functions inherited from mysql::scheduler::Base_dependency_tracker
virtual ~Base_dependency_tracker ()=default
 Destructor. More...
 

Private Types

using Dependencies_registry = Task_registry_multi< Task_id, Dependency >
 

Private Attributes

Dependencies_registry m_dependencies
 Registry of task dependencies. More...
 

Detailed Description

An example of Dependency Tracker implementation that tracks a single task predecessor.

Used only for excercising the tracker interface.

Member Typedef Documentation

◆ Dependencies_registry

◆ Mt_key

◆ Mutex_type

◆ St_key

◆ Task_id_type

Constructor & Destructor Documentation

◆ Dependency_tracker_single_predecessor()

mysql::scheduler::Dependency_tracker_single_predecessor::Dependency_tracker_single_predecessor ( )

Member Function Documentation

◆ activate_task()

bool mysql::scheduler::Dependency_tracker_single_predecessor::activate_task ( const Task_id task)
overridevirtual

Register task in the system to prevent adding dependencies on non-existing tasks and adding active dependencies on tasks that are already finished.

Implements mysql::scheduler::Base_dependency_tracker.

◆ add_dependency()

bool mysql::scheduler::Dependency_tracker_single_predecessor::add_dependency ( const Task_id_type predecessor,
const Task_id_type successor 
)
overridevirtual

add_dependency

Function adds dependency if valid

Parameters
predecessorPredecessor task ID
successorSuccessor task ID
Return values
trueDependency added successfully
falseFailed to add dependency

Implements mysql::scheduler::Base_dependency_tracker.

◆ check_ready()

bool mysql::scheduler::Dependency_tracker_single_predecessor::check_ready ( const Task_id task)
overridevirtual

check_ready

Function checks whether a task is ready for execution, without locking the object (load)

Parameters
taskTask ID
Returns
true - dependencies of task are met, false - not met, second is

Implements mysql::scheduler::Base_dependency_tracker.

◆ get_successors()

std::vector< Task_id > mysql::scheduler::Dependency_tracker_single_predecessor::get_successors ( const Task_id task)

Get the list of tasks that depend on the given task.

Parameters
taskThe task ID
Returns
Vector of successor task IDs

◆ mark_dependency_met()

std::vector< Task_id > mysql::scheduler::Dependency_tracker_single_predecessor::mark_dependency_met ( const Task_id task,
bool  is_finished 
)
overridevirtual

Task is finished, mark all dependencies of this task as met.

Parameters
taskIdentifier of a task that finished its execution
is_finishedWhether the task has finished execution
Returns
Vector of task IDs whose dependencies changed, since this class implementation supports 1 predecessor, this will be a vector of tasks IDs ready to execute

Implements mysql::scheduler::Base_dependency_tracker.

Member Data Documentation

◆ m_dependencies

Dependencies_registry mysql::scheduler::Dependency_tracker_single_predecessor::m_dependencies
private

Registry of task dependencies.

Concurrency is covered by internal representation of the registry.


The documentation for this class was generated from the following files: