Simulation Modeling Tool Kit
Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
smtk::task::GatherResources Class Reference

GatherResources is a task that requires resources from a resource manager. More...

#include <GatherResources.h>

Inheritance diagram for smtk::task::GatherResources:
Collaboration diagram for smtk::task::GatherResources:


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.
- Public Types inherited from smtk::task::Task
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)
- Public Member Functions inherited from smtk::task::Task
 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...
Taskparent () 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...
Observersobservers ()
 Return this object's observers so other classes may insert themselves.
State internalState () const
 Return the internal state of the task. More...
Managermanager () 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.
- Protected Member Functions inherited from smtk::task::Task
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, ResourceSetm_resourcesByRole
- Protected Attributes inherited from smtk::task::Task
std::string m_title
 A task name to present to the user.
std::set< smtk::string::Tokenm_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.
Taskm_parent = nullptr
 If this task is the child of another task, this pointer references its parent. More...
std::weak_ptr< smtk::task::Managerm_manager
 If this task is being managed, this will refer to its manager.
smtk::string::Token m_id
 The unique identifier for this task.

Detailed Description

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.

Member Function Documentation

◆ addResourceInRole()

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.

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