Horizon Official Technical Documentation
Horizon::Zone::ZoneRuntime Class Reference

#include <Zone.hpp>

+ Inheritance diagram for Horizon::Zone::ZoneRuntime:
+ Collaboration diagram for Horizon::Zone::ZoneRuntime:

Public Member Functions

 ZoneRuntime ()
 
virtual void initialize (int segment_number=1) override
 
virtual void finalize () override
 
void start ()
 
virtual void update (int64_t diff)
 
bool is_initialized () override
 
bool is_finalized () override
 
ResourceManagerget_resource_manager ()
 
- Public Member Functions inherited from KernelComponent
 KernelComponent (Kernel *kernel, Horizon::System::runtime_module_type module_type)
 
virtual void initialize (int segment_number=1)
 
virtual void finalize ()
 
virtual bool is_initialized ()
 
virtual bool is_finalized ()
 
void set_segment_number (int64_t segment_number)
 
int64_t get_segment_number ()
 
void system_routine_queue_push (std::shared_ptr< Horizon::System::RuntimeContext > context)
 
void system_routine_queue_push (std::shared_ptr< Horizon::System::RuntimeContextChain > context)
 
void system_routine_process_queue ()
 
void system_routine_register (Horizon::System::runtime_module_type module_t, Horizon::System::runtime_synchronization_method sync_t, std::shared_ptr< Horizon::System::RuntimeContext > context)
 
const std::string get_uuid_string ()
 
const std::string get_type_string ()
 
Horizon::System::SystemRoutineManagerget_system_routine_manager ()
 
Kernelget_kernel ()
 
void set_thread_cpu_id (int cpu_id)
 
int get_thread_cpu_id ()
 
void set_thread_update_rate (double rate)
 
double get_thread_update_rate ()
 
void set_total_execution_time (int time)
 
int get_total_execution_time ()
 
void calculate_and_set_cpu_load ()
 

Protected Types

using PrimaryResource = SharedPriorityResourceMedium< s_segment_storage< uint64_t, std::shared_ptr< ZoneSession > > >
 
using ResourceManager = SharedPriorityResourceManager< PrimaryResource >
 

Protected Attributes

ResourceManager _resource_manager
 

Private Attributes

std::thread _thread
 
std::atomic< bool > _is_initialized {false}
 
std::atomic< bool > _is_finalized {false}
 

Member Typedef Documentation

◆ PrimaryResource

◆ ResourceManager

Constructor & Destructor Documentation

◆ ZoneRuntime()

ZoneRuntime::ZoneRuntime ( )
323_resource_manager(PrimaryResource(RESOURCE_PRIORITY_PRIMARY, std::make_shared<s_segment_storage<uint64_t, std::shared_ptr<ZoneSession>>>()))
324{
325}
@ RESOURCE_PRIORITY_PRIMARY
Definition: Server.hpp:79
#define sZone
Definition: Zone.hpp:247
ResourceManager _resource_manager
Definition: Zone.hpp:202
SharedPriorityResourceMedium< s_segment_storage< uint64_t, std::shared_ptr< ZoneSession > > > PrimaryResource
Definition: Zone.hpp:200
KernelComponent(Kernel *kernel, Horizon::System::runtime_module_type module_type)
Definition: Server.hpp:194
@ RUNTIME_RUNTIME
Definition: System.hpp:92
Definition: Server.hpp:93

Member Function Documentation

◆ finalize()

virtual void Horizon::Zone::ZoneRuntime::finalize ( )
inlineoverridevirtual

Reimplemented from KernelComponent.

186 {
187 if (_thread.joinable())
188 _thread.join();
189
190 _is_finalized.exchange(true);
191 }
std::atomic< bool > _is_finalized
Definition: Zone.hpp:208
std::thread _thread
Definition: Zone.hpp:206

References _is_finalized, and _thread.

◆ get_resource_manager()

ResourceManager & Horizon::Zone::ZoneRuntime::get_resource_manager ( )
inline
204{ return _resource_manager; }

References _resource_manager.

◆ initialize()

virtual void Horizon::Zone::ZoneRuntime::initialize ( int  segment_number = 1)
inlineoverridevirtual

Reimplemented from KernelComponent.

177 {
178 set_segment_number(segment_number);
179
180 _is_initialized.exchange(true);
181
182 _thread = std::thread(&ZoneRuntime::start, this);
183 }
std::atomic< bool > _is_initialized
Definition: Zone.hpp:207
void start()
Definition: Zone.cpp:327
void set_segment_number(int64_t segment_number)
Definition: Server.hpp:206

References _is_initialized, _thread, KernelComponent::set_segment_number(), and start().

+ Here is the call graph for this function:

◆ is_finalized()

bool Horizon::Zone::ZoneRuntime::is_finalized ( )
inlineoverridevirtual

Reimplemented from KernelComponent.

197{ return _is_finalized; }

References _is_finalized.

◆ is_initialized()

bool Horizon::Zone::ZoneRuntime::is_initialized ( )
inlineoverridevirtual

Reimplemented from KernelComponent.

196{ return _is_initialized; }

References _is_initialized.

◆ start()

void ZoneRuntime::start ( )
328{
329 while (!sZone->general_conf().is_test_run_minimal() && get_shutdown_stage() == SHUTDOWN_NOT_STARTED) {
330 update(std::time(nullptr));
331 std::this_thread::sleep_for(std::chrono::microseconds(MAX_CORE_UPDATE_INTERVAL));
332 };
333}
#define MAX_CORE_UPDATE_INTERVAL
Definition: Horizon.hpp:63
shutdown_stages get_shutdown_stage()
Definition: Server.hpp:74
@ SHUTDOWN_NOT_STARTED
Definition: Server.hpp:64
virtual void update(int64_t diff)
Definition: Zone.cpp:335

References get_shutdown_stage(), MAX_CORE_UPDATE_INTERVAL, SHUTDOWN_NOT_STARTED, sZone, and update().

Referenced by initialize(), and update().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ update()

void ZoneRuntime::update ( int64_t  diff)
virtual
336{
337 std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
339
341 std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();
342 std::chrono::nanoseconds time_span = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
343 set_total_execution_time(time_span.count());
344}
void process_queue()
Definition: System.hpp:676
Horizon::System::SystemRoutineManager & get_system_routine_manager()
Definition: Server.hpp:235
void set_total_execution_time(int time)
Definition: Server.hpp:245
void calculate_and_set_cpu_load()
Definition: Server.hpp:257

References KernelComponent::calculate_and_set_cpu_load(), KernelComponent::get_system_routine_manager(), Horizon::System::SystemRoutineManager::process_queue(), KernelComponent::set_total_execution_time(), and start().

Referenced by start().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ _is_finalized

std::atomic<bool> Horizon::Zone::ZoneRuntime::_is_finalized {false}
private

Referenced by finalize(), and is_finalized().

◆ _is_initialized

std::atomic<bool> Horizon::Zone::ZoneRuntime::_is_initialized {false}
private

Referenced by initialize(), and is_initialized().

◆ _resource_manager

ResourceManager Horizon::Zone::ZoneRuntime::_resource_manager
protected

Referenced by get_resource_manager().

◆ _thread

std::thread Horizon::Zone::ZoneRuntime::_thread
private

Referenced by finalize(), and initialize().


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