Horizon Official Technical Documentation
TestWorkWithUseResult Class Reference
+ Inheritance diagram for TestWorkWithUseResult:
+ Collaboration diagram for TestWorkWithUseResult:

Public Member Functions

 TestWorkWithUseResult (std::shared_ptr< Horizon::System::RuntimeRoutineContext > parent_context)
 
bool execute ()
 
void set_previous_result (Horizon::System::Result< int > prev)
 
Horizon::System::Result< int > get_previous_result ()
 
void set_request (work_request _req)
 
work_request get_request ()
 
void set_result (ResultType res)
 
ResultType get_result ()
 
bool has_result ()
 
- Public Member Functions inherited from Horizon::System::RuntimeRoutineContext::Work
 Work (std::shared_ptr< RuntimeRoutineContext > runtime_context)
 
 ~Work ()
 
virtual bool execute ()
 
std::shared_ptr< RuntimeRoutineContextget_runtime_context ()
 
void set_runtime_context (std::shared_ptr< RuntimeRoutineContext > runtime_context)
 
MessageAgentget_message_agent ()
 
- Public Member Functions inherited from Horizon::System::RuntimeContext::WorkContext
 WorkContext ()
 
virtual bool execute ()
 
std::string get_uuid_string ()
 

Public Attributes

Horizon::System::Result< int > _prev_result
 
work_request _request
 
ResultType _result
 
- Public Attributes inherited from Horizon::System::RuntimeContext::WorkContext
boost::uuids::uuid _uuid
 

Private Types

typedef Horizon::System::Result< int > ResultType
 

Additional Inherited Members

- Protected Attributes inherited from Horizon::System::RuntimeRoutineContext::Work
std::weak_ptr< RuntimeRoutineContext_runtime_context
 
MessageAgent _message_agent
 

Member Typedef Documentation

◆ ResultType

Constructor & Destructor Documentation

◆ TestWorkWithUseResult()

TestWorkWithUseResult::TestWorkWithUseResult ( std::shared_ptr< Horizon::System::RuntimeRoutineContext parent_context)
inline
Horizon::System::Result< int > _prev_result
Definition: SystemRoutinesTest.cpp:134
ResultType _result
Definition: SystemRoutinesTest.cpp:136

Member Function Documentation

◆ execute()

bool TestWorkWithUseResult::execute ( )
inlinevirtual

Reimplemented from Horizon::System::RuntimeRoutineContext::Work.

98 {
100 std::promise<ResultType> p;
101 // Assuming this is the thread that will work on getting the result for either of the Kernel Components...
102 // We can use a promise / future combination of techniques to derive the final result.
103 std::thread t = std::thread([&]()
104 {
105 std::cout << "Calculating..." << std::endl;
106 p.set_value(ResultType(get_request().i * 20 + get_previous_result().get_one()));
107 });
108
109 std::future<ResultType> f = p.get_future();
110 get_runtime_context()->get_runtime_synchronization_mutex().lock();
111 set_result(ResultType(f.get()));
112 get_runtime_context()->get_runtime_synchronization_mutex().unlock();
113 t.join();
114
115 return true;
116 }
std::shared_ptr< RuntimeRoutineContext > get_runtime_context()
Definition: System.hpp:412
Horizon::System::Result< int > ResultType
Definition: SystemRoutinesTest.cpp:93
void set_result(ResultType res)
Definition: SystemRoutinesTest.cpp:124
Horizon::System::Result< int > get_previous_result()
Definition: SystemRoutinesTest.cpp:119
work_request get_request()
Definition: SystemRoutinesTest.cpp:122

References get_previous_result(), get_request(), Horizon::System::RuntimeRoutineContext::Work::get_runtime_context(), and set_result().

+ Here is the call graph for this function:

◆ get_previous_result()

Horizon::System::Result< int > TestWorkWithUseResult::get_previous_result ( )
inline
119{ return _prev_result; }

References _prev_result.

Referenced by execute().

+ Here is the caller graph for this function:

◆ get_request()

work_request TestWorkWithUseResult::get_request ( )
inline
122{ return _request; }
work_request _request
Definition: SystemRoutinesTest.cpp:135

References _request.

Referenced by execute().

+ Here is the caller graph for this function:

◆ get_result()

ResultType TestWorkWithUseResult::get_result ( )
inline
125{ return _result; }

References _result.

◆ has_result()

bool TestWorkWithUseResult::has_result ( )
inline
127 {
128 get_runtime_context()->get_runtime_synchronization_mutex().lock();
129 bool result = _result.get_one() > 0;
130 get_runtime_context()->get_runtime_synchronization_mutex().unlock();
131 return result;
132 }
virtual T get_one()
Definition: System.hpp:362

References _result, Horizon::System::ContextWithResult< T >::get_one(), and Horizon::System::RuntimeRoutineContext::Work::get_runtime_context().

+ Here is the call graph for this function:

◆ set_previous_result()

void TestWorkWithUseResult::set_previous_result ( Horizon::System::Result< int >  prev)
inline
118{ _prev_result = prev; }

References _prev_result.

◆ set_request()

void TestWorkWithUseResult::set_request ( work_request  _req)
inline
121{ _request = _req; }

References _request.

◆ set_result()

void TestWorkWithUseResult::set_result ( ResultType  res)
inline
124{ _result = res; }

References _result.

Referenced by execute().

+ Here is the caller graph for this function:

Member Data Documentation

◆ _prev_result

Horizon::System::Result<int> TestWorkWithUseResult::_prev_result

◆ _request

work_request TestWorkWithUseResult::_request

Referenced by get_request(), and set_request().

◆ _result

ResultType TestWorkWithUseResult::_result

Referenced by get_result(), has_result(), and set_result().


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