|
libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
|
Component wrapper around an spdlog::logger instance. More...
#include <Logger.h>
Public Member Functions | |
| Logger (const std::string &appName, const std::string &logFilePath) | |
| Constructs a Logger with the given application name and log file path. | |
| ~Logger () override | |
| std::shared_ptr< spdlog::logger > | Get () const |
| Returns the underlying spdlog logger, or nullptr before Init(). | |
Public Member Functions inherited from Ship::Component | |
| Component (const std::string &name, std::shared_ptr< Context > context=nullptr) | |
| Constructs a Component with the given name. | |
| virtual | ~Component () |
| void | Init (const nlohmann::json &initArgs=nlohmann::json::object()) |
| Performs one-time initialization of this component. | |
| bool | IsInitialized () const |
| Returns true once Init() (or MarkInitialized()) has completed successfully. | |
| const std::string & | GetName () const |
| Returns the name of this Component. | |
| std::string | ToString () const |
| Returns a human-readable string representation (e.g. "Name (id)"). | |
| std::string | ToTreeString (int depth=0) const |
| Returns a human-readable tree representation of this component and its children. | |
| operator std::string () const | |
| Conversion operator to std::string; equivalent to ToString(). | |
| ParentComponentList & | GetParents () |
| Returns a mutable reference to the parent list. | |
| const ParentComponentList & | GetParents () const |
| Returns a const reference to the parent list. | |
| ComponentList & | GetChildren () |
| Returns a mutable reference to the child list. | |
| const ComponentList & | GetChildren () const |
| Returns a const reference to the child list. | |
| virtual std::shared_ptr< Component > | TryGetSharedComponent () noexcept |
| Returns a shared_ptr to this Component when available, otherwise nullptr. | |
| virtual std::shared_ptr< Component > | GetSharedComponent () |
| Returns a shared_ptr to this Component via the correct enable_shared_from_this base. | |
| template<typename T > | |
| bool | HasInChildren () const |
| Checks whether any descendant Component matches type T via BFS. | |
| template<typename T > | |
| std::shared_ptr< T > | GetFirstInChildren () const |
| Returns the first descendant that matches type T via BFS. | |
| template<typename T > | |
| std::shared_ptr< std::vector< std::shared_ptr< T > > > | GetInChildren () const |
| Returns all descendants that match type T via BFS. | |
| template<typename T > | |
| bool | HasInParents () const |
| Checks whether any ancestor Component matches type T via BFS. | |
| template<typename T > | |
| std::shared_ptr< T > | GetFirstInParents () const |
| Returns the first ancestor that matches type T via BFS. | |
| template<typename T > | |
| std::shared_ptr< std::vector< std::shared_ptr< T > > > | GetInParents () const |
| Returns all ancestors that match type T via BFS. | |
Public Member Functions inherited from Ship::Part | |
| Part () | |
| Constructs a Part and assigns it a unique ID. | |
| Part (std::shared_ptr< Context > context) | |
| Constructs a Part with an explicit Context reference and unique ID. | |
| virtual | ~Part ()=default |
| uint64_t | GetId () const |
| Returns the unique identifier for this Part. | |
| bool | operator== (const Part &other) const |
| Compares two Parts for equality by their unique IDs. | |
| std::shared_ptr< Context > | GetContext () const |
| Returns the Context this Part belongs to, or nullptr if unset. | |
| void | SetContext (std::shared_ptr< Context > ctx) |
| Sets the Context this Part belongs to. | |
Protected Member Functions | |
| void | OnInit (const nlohmann::json &initArgs) override |
| Override this to implement component-specific initialization logic. | |
Protected Member Functions inherited from Ship::Component | |
| void | MarkInitialized () |
| Marks this component as initialized without going through Init(). | |
| template<typename T > | |
| std::shared_ptr< T > | RequireDependency (const std::shared_ptr< T > &dependency, const std::string &dependencyName) const |
| Returns a cached dependency after validating it exists and is initialized. | |
Protected Member Functions inherited from Ship::Part | |
| virtual void | OnAdded (bool forced) |
| Called after this Part has been added to a PartList. | |
| virtual void | OnRemoved (bool forced) |
| Called after this Part has been removed from a PartList. | |
Component wrapper around an spdlog::logger instance.
Logger owns the spdlog thread-pool, sinks, and default logger. It initialises them in OnInit() so that the component hierarchy is established before logging begins, and shuts them down in ~Logger() so that no log calls race against destruction.
Required Context children: None — Logger has no dependencies on other components.
Obtain the instance from Context::GetChildren().GetFirst<Logger>().
| Ship::Logger::Logger | ( | const std::string & | appName, |
| const std::string & | logFilePath | ||
| ) |
Constructs a Logger with the given application name and log file path.
The spdlog thread-pool and sinks are created in OnInit(); the constructor is cheap and safe to call before the context is fully wired.
| appName | Human-readable application name used as the logger name and included in the rotating log file name. |
| logFilePath | Absolute path to the rotating log file. |
|
override |
| std::shared_ptr< spdlog::logger > Ship::Logger::Get | ( | ) | const |
Returns the underlying spdlog logger, or nullptr before Init().
|
overrideprotectedvirtual |
Override this to implement component-specific initialization logic.
Called by Init() the first time it is invoked. After OnInit() returns without throwing, the component is marked as initialized. If OnInit() throws, the component remains uninitialized so Init() may be retried.
| initArgs | JSON object with component-specific initialization arguments from the build hierarchy. Default implementation ignores them. |
Components with initialization parameters (ResourceManager, Window, …) provide their own Init(…) overload instead of overriding this method.
The default implementation is a no-op.
Reimplemented from Ship::Component.