SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
GatherResources is a task that requires resources from a resource manager. More...
#include <GatherResources.h>
Classes | |
struct | ResourceSet |
A predicate used to collect resources that fit a given role. More... | |
Public Types | |
using | ResourceSetVisitor = std::function< smtk::common::Visit(const ResourceSet &)> |
Signature of functors that visit resources-by-role predicates. | |
![]() | |
enum | RelatedTasks { RelatedTasks::Depend, RelatedTasks::Child } |
The types of related tasks to visit. More... | |
using | Observer = std::function< void(Task &, State, State)> |
A task's state changes may be observed. | |
using | Observers = smtk::common::Observers< Observer > |
The collection of all observers of this task instance. | |
using | Dependencies = std::map< WeakPtr, typename Observers::Key, std::owner_less< WeakPtr > > |
A task's dependencies are other tasks stored as weak pointers. | |
using | PassedDependencies = std::set< Ptr > |
A task's dependencies are other tasks passed as shared pointers. | |
using | Configuration = nlohmann::json |
Tasks are configured with arbitrary JSON objects, though this may change. | |
using | Visitor = std::function< smtk::common::Visit(Task &)> |
Signature of functions invoked when visiting dependencies or children while allowing early termination. | |
Public Member Functions | |
smtkTypeMacro (smtk::task::GatherResources) | |
smtkSuperclassMacro (smtk::task::Task) | |
smtkCreateMacro (smtk::task::Task) | |
GatherResources (const Configuration &config, Manager &taskManager, const smtk::common::Managers::Ptr &managers=nullptr) | |
GatherResources (const Configuration &config, const PassedDependencies &dependencies, Manager &taskManager, const smtk::common::Managers::Ptr &managers=nullptr) | |
void | configure (const Configuration &config) |
bool | addResourceInRole (const std::shared_ptr< smtk::resource::Resource > &resource, const std::string &role) |
Explicitly add a resource in the given role. More... | |
smtk::common::Visit | visitResourceSets (ResourceSetVisitor visitor) |
![]() | |
smtkTypeMacroBase (smtk::task::Task) | |
smtkCreateMacro (smtk::task::Task) | |
Task (const Configuration &config, const std::shared_ptr< smtk::common::Managers > &managers=nullptr) | |
Task (const Configuration &config, Manager &taskManager, const std::shared_ptr< smtk::common::Managers > &managers=nullptr) | |
Task (const Configuration &config, const PassedDependencies &dependencies, const std::shared_ptr< smtk::common::Managers > &managers=nullptr) | |
Task (const Configuration &config, const PassedDependencies &dependencies, Manager &taskManager, const std::shared_ptr< smtk::common::Managers > &managers=nullptr) | |
smtk::string::Token | id () const |
Return a unique, ephemeral identifier for this task. More... | |
void | configure (const Configuration &config) |
A method called by all constructors passed Configuration information. More... | |
const std::string & | title () const |
Return the title of the task (if one was provided). | |
void | setTitle (const std::string &title) |
Set the title of the task to be presented to users. More... | |
const std::set< smtk::string::Token > & | style () const |
Set/get style classes for the task. More... | |
bool | addStyle (const smtk::string::Token &styleClass) |
bool | removeStyle (const smtk::string::Token &styleClass) |
bool | clearStyle () |
virtual bool | getViewData (smtk::common::TypeContainer &configuration) const |
Populate a type-container with view-related data for configuration. More... | |
virtual State | state () const |
Get the state. More... | |
bool | markCompleted (bool completed) |
This public method allows user-interface components to indicate when the user marks a task complete (or unmarks it). More... | |
PassedDependencies | dependencies () const |
Return the tasks which this task depends upon. More... | |
bool | addDependency (const std::shared_ptr< Task > &dependency) |
Add a dependency. More... | |
template<typename Container > | |
bool | addDependencies (const Container &tasks) |
Add a container of task-pointers as dependencies. More... | |
bool | removeDependency (const std::shared_ptr< Task > &dependency) |
Remove a dependency. More... | |
template<typename Container > | |
bool | removeDependencies (const Container &tasks) |
Remove a container of task-pointers as dependencies. More... | |
Task * | parent () const |
Return a parent task if one exists; null otherwise. | |
virtual bool | hasChildren () const |
Return whether or not the task has children. More... | |
virtual smtk::common::Visit | visit (RelatedTasks relation, Visitor visitor) const |
Visit children. More... | |
Observers & | observers () |
Return this object's observers so other classes may insert themselves. | |
State | internalState () const |
Return the internal state of the task. More... | |
Manager * | manager () const |
Return the tasks's manager (or null if unmanaged). | |
Protected Member Functions | |
void | updateResources (smtk::resource::Resource &resource, smtk::resource::EventType event) |
Respond to resource changes that may change task state. | |
State | computeInternalState () const |
Check m_resourcesByRole to see if all requirements are met. | |
![]() | |
bool | changeState (State previous, State next) |
Indicate the state has changed. More... | |
virtual bool | updateState (Task &dependency, State prev, State next) |
Update our state because a dependent task has changed state or a subclass has marked the internal state as changed. More... | |
bool | internalStateChanged (State next) |
Update the internal state, possibly transitioning the task's final state. More... | |
Protected Attributes | |
bool | m_autoconfigure = false |
smtk::common::Managers::Ptr | m_managers |
smtk::resource::Observers::Key | m_observer |
std::map< std::string, ResourceSet > | m_resourcesByRole |
![]() | |
std::string | m_title |
A task name to present to the user. | |
std::set< smtk::string::Token > | m_style |
The set of style classes for this task. | |
bool | m_completed = false |
Whether the user has marked the task completed or not. | |
std::map< WeakPtr, Observers::Key, std::owner_less< WeakPtr > > | m_dependencies |
A set of dependent tasks and the keys used to observe their state so that this task can update its state in response. | |
std::set< WeakPtr, std::owner_less< WeakPtr > > | m_dependents |
Tasks upon which this task depends. More... | |
Observers | m_observers |
The set of observers of this task's state. | |
Task * | m_parent = nullptr |
If this task is the child of another task, this pointer references its parent. More... | |
std::weak_ptr< smtk::task::Manager > | m_manager |
If this task is being managed, this will refer to its manager. | |
smtk::string::Token | m_id |
The unique identifier for this task. | |
GatherResources is a task that requires resources from a resource manager.
Tasks of this type observe a resource manager for resources to be added and marked with a Role as specified (at construction time). When all the required resources are present with the required roles, then the task becomes completable.
bool smtk::task::GatherResources::addResourceInRole | ( | const std::shared_ptr< smtk::resource::Resource > & | resource, |
const std::string & | role | ||
) |
Explicitly add a resource in the given role.
If autoconfigure is disabled, calling this method is the only way to complete this task.
The role must be one this task is configured to accept. This method will add the resource as long as it is of the correct type (regardless of whether it is marked with the role passed to this method).
If the resource was added (i.e., not already present in the given role), then this method returns true.