From bb681fe33443cb059532dcab13d80759e883f1da Mon Sep 17 00:00:00 2001 From: Daniel <d.hornung@indiscale.com> Date: Fri, 30 Jul 2021 17:56:19 +0200 Subject: [PATCH] DOC: Documentation and typos. --- include/caosdb/connection.h | 3 +++ include/caosdb/entity.h | 6 +++++ include/caosdb/log_level.h | 4 +-- include/caosdb/logging.h | 42 ++++++++++++++++++++++++----- include/caosdb/message_code.h | 3 +++ include/caosdb/transaction_status.h | 6 ++++- include/caosdb/utility.h | 15 ++++++----- include/ccaosdb.h | 4 +-- src/caosdb/configuration.cpp | 1 + src/caosdb/logging.cpp | 7 +++++ src/ccaosdb.cpp | 4 +-- 11 files changed, 75 insertions(+), 20 deletions(-) diff --git a/include/caosdb/connection.h b/include/caosdb/connection.h index 22bdc6f..5d7930a 100644 --- a/include/caosdb/connection.h +++ b/include/caosdb/connection.h @@ -149,6 +149,9 @@ public: return ConnectionManager::GetInstance().mGetConnection(name); }; + /** + * Get the connection marked by the "default" key in the configuration. + */ inline static auto GetDefaultConnection() -> const std::shared_ptr<Connection> & { return ConnectionManager::GetInstance().mGetDefaultConnection(); diff --git a/include/caosdb/entity.h b/include/caosdb/entity.h index 4803ae7..e4f628e 100644 --- a/include/caosdb/entity.h +++ b/include/caosdb/entity.h @@ -111,6 +111,12 @@ private: friend class Entity; }; +/** + * Messages convey information about the state and result of transactions. + * + * A Message object can be thought of as kinf of a generalized error object in other frameworks. + * Please have a look at MessageCodes for more details. + */ class Message { public: explicit inline Message(caosdb::entity::v1alpha1::Message *wrapped) diff --git a/include/caosdb/log_level.h b/include/caosdb/log_level.h index af05d3b..c2fcb9b 100644 --- a/include/caosdb/log_level.h +++ b/include/caosdb/log_level.h @@ -19,8 +19,8 @@ * */ -#ifndef CAOSDB_LOG_LEVELS_H -#define CAOSDB_LOG_LEVELS_H +#ifndef CAOSDB_LOG_LEVEL_H +#define CAOSDB_LOG_LEVEL_H #define CAOSDB_LOG_LEVEL_OFF 1000000 #define CAOSDB_LOG_LEVEL_FATAL 700 diff --git a/include/caosdb/logging.h b/include/caosdb/logging.h index 26ec1c8..d111f78 100644 --- a/include/caosdb/logging.h +++ b/include/caosdb/logging.h @@ -43,6 +43,9 @@ typedef boost::log::sources::severity_channel_logger<int, std::string> BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(logger, boost_logger_class) +/** + * This class stores the integer log level. + */ class LevelConfiguration { public: LevelConfiguration(int level) : level(level){}; @@ -54,6 +57,11 @@ private: class SinkConfiguration; +/** + * This class stores the logging level and log sinks. + * + * Sinks are represented by SinkConfiguration objects. + */ class LoggingConfiguration : public LevelConfiguration { public: virtual ~LoggingConfiguration() = default; @@ -69,6 +77,22 @@ private: auto initialize_logging_defaults() -> int; auto initialize_logging(const LoggingConfiguration &configuration) -> void; +/** + * A logging sink is characterized by a name and destination. + * + * Typical inheriting configurations exist for console, files and syslog. + * + * When a SinkConfiguration is created from a configuration, the sink configuration must contain a + * \p destination key which matches one of the keywords for implemented sinks. At the moment of + * writing this documentation, valid destinations are: + * + * \li \p file + * \li \p console + * \li \p syslog + * + * A \p level keyword sets the logging level, if it exists at the sink or logging level of the + * configuration. + */ class SinkConfiguration : public LevelConfiguration { public: virtual ~SinkConfiguration() = default; @@ -104,6 +128,12 @@ private: const std::string destination = "Console"; }; +/** + * The file name is the destination, the directory can be set separately. + * + * If there is a `directory` key in the configuration, that will be used as a default, otherwise it + * is the current directory. + */ class FileSinkConfiguration : public SinkConfiguration { public: virtual ~FileSinkConfiguration() = default; @@ -136,27 +166,27 @@ private: }; /** - * Convenience function for the c-interface. + * Convenience function for the C interface. */ void caosdb_log_fatal(const char *channel, const char *msg); /** - * Convenience function for the c-interface. + * Convenience function for the C interface. */ void caosdb_log_error(const char *channel, const char *msg); /** - * Convenience function for the c-interface. + * Convenience function for the C interface. */ void caosdb_log_warn(const char *channel, const char *msg); /** - * Convenience function for the c-interface. + * Convenience function for the C interface. */ void caosdb_log_info(const char *channel, const char *msg); /** - * Convenience function for the c-interface. + * Convenience function for the C interface. */ void caosdb_log_debug(const char *channel, const char *msg); /** - * Convenience function for the c-interface. + * Convenience function for the C interface. */ void caosdb_log_trace(const char *channel, const char *msg); diff --git a/include/caosdb/message_code.h b/include/caosdb/message_code.h index a5b65ca..ca08edf 100644 --- a/include/caosdb/message_code.h +++ b/include/caosdb/message_code.h @@ -30,6 +30,9 @@ * In contrast to the status codes, the message codes are part of the CaosDB * API. Messages (and their codes) represent the state of the entities in a * transaction or the server. + * + * For a specification of the message codes, look at the protobuf documentation. The sources and + * documentation can be found at https://gitlab.indiscale.com/caosdb/src/caosdb-proto. */ namespace caosdb::entity { diff --git a/include/caosdb/transaction_status.h b/include/caosdb/transaction_status.h index ff5029c..32465c6 100644 --- a/include/caosdb/transaction_status.h +++ b/include/caosdb/transaction_status.h @@ -25,7 +25,11 @@ /** * TransactionStatus indicates the current status of a transaction and, when it * has already terminated, whether the transaction has been successful or not. + * + * A status code of 0 denotes a generic success state, positive values indicate errors, and negative + * values indicate other states, such as different stages of a transaction in process. */ + #include "caosdb/status_code.h" #include "caosdb/exceptions.h" #include <memory> // for shared_ptr, unique_ptr @@ -130,7 +134,7 @@ public: /** * Return a description of the erroneous state. * - * Returns an empty string if there is no description. + * No description yields an empty string. */ inline auto GetDescription() const -> const std::string & { return this->description; diff --git a/include/caosdb/utility.h b/include/caosdb/utility.h index e1e306e..fbfc5c1 100644 --- a/include/caosdb/utility.h +++ b/include/caosdb/utility.h @@ -43,8 +43,6 @@ using boost::json::value; /** * @brief Read a text file into a string and return the file's content. - * - * TODO use boost-filesystem's "load_string_file"! */ inline auto load_string_file(const path &path) -> std::string { std::string result; @@ -52,11 +50,14 @@ inline auto load_string_file(const path &path) -> std::string { return result; } -inline auto get_env_var(const char *key, const char *fall_back) -> const +/** + * @brief Return the environment variable KEY, or FALLBACK if it does not exist. + */ +inline auto get_env_var(const char *key, const char *fallback) -> const char * { const char *val = getenv(key); if (val == nullptr) { - return fall_back; + return fallback; } else { return val; } @@ -64,11 +65,11 @@ inline auto get_env_var(const char *key, const char *fall_back) -> const /** * @brief Return the value of an environment variable or - if undefined - the - * fall_back value. + * fallback value. */ -inline auto get_env_var(const std::string &key, const std::string &fall_back) +inline auto get_env_var(const std::string &key, const std::string &fallback) -> const std::string { - const char *val = get_env_var(key.c_str(), fall_back.c_str()); + const char *val = get_env_var(key.c_str(), fallback.c_str()); auto const result = std::string(val); return result; diff --git a/include/ccaosdb.h b/include/ccaosdb.h index 3d57a01..957e2fb 100644 --- a/include/ccaosdb.h +++ b/include/ccaosdb.h @@ -81,9 +81,9 @@ typedef struct { /** * Return the environment variable of the given name. * - * If the environment variable is not set, return the fall_back instead. + * If the environment variable is not set, return the fallback instead. */ -const char *caosdb_utility_get_env_var(const char *name, const char *fall_back); +const char *caosdb_utility_get_env_var(const char *name, const char *fallback); /** * Return a description of the status code. diff --git a/src/caosdb/configuration.cpp b/src/caosdb/configuration.cpp index 4a1f2a6..618c212 100644 --- a/src/caosdb/configuration.cpp +++ b/src/caosdb/configuration.cpp @@ -508,6 +508,7 @@ auto ConfigurationManager::InitializeDefaults() -> int { mLoadSingleJSONConfiguration(*configuration_file_path); } + // Logging in the configuration leads to additional content. if (this->json_configuration.is_object() && this->json_configuration.as_object().contains("logging")) { LoggingConfiguration logging_configuration = diff --git a/src/caosdb/logging.cpp b/src/caosdb/logging.cpp index 486ab84..3618826 100644 --- a/src/caosdb/logging.cpp +++ b/src/caosdb/logging.cpp @@ -59,6 +59,7 @@ auto LoggingConfiguration::GetSinks() const SinkConfiguration::SinkConfiguration(std::string name, int level) : LevelConfiguration(level), name(std::move(name)) {} + [[nodiscard]] auto SinkConfiguration::GetName() const -> const std::string & { return this->name; } @@ -77,6 +78,7 @@ auto SinkConfiguration::Configure(boost::log::settings &settings) const ConsoleSinkConfiguration::ConsoleSinkConfiguration(const std::string &name, int level) : SinkConfiguration(name, level) {} + [[nodiscard]] auto ConsoleSinkConfiguration::GetDestination() const -> const std::string & { CAOSDB_LOG_TRACE(logger_name) @@ -93,12 +95,14 @@ auto ConsoleSinkConfiguration::Configure(boost::log::settings &settings) const FileSinkConfiguration::FileSinkConfiguration(const std::string &name, int level) : SinkConfiguration(name, level) {} + [[nodiscard]] auto FileSinkConfiguration::GetDestination() const -> const std::string & { CAOSDB_LOG_TRACE(logger_name) << "Enter FileSinkConfiguration::GetDestination()"; return this->destination; } + auto FileSinkConfiguration::SetDirectory(const std::string &directory) -> void { this->directory = std::string(directory); } @@ -114,11 +118,13 @@ auto FileSinkConfiguration::Configure(boost::log::settings &settings) const SyslogSinkConfiguration::SyslogSinkConfiguration(const std::string &name, int level) : SinkConfiguration(name, level) {} + [[nodiscard]] auto SyslogSinkConfiguration::GetDestination() const -> const std::string & { return this->destination; } +// Called if no custom logging settings are specified. auto initialize_logging_defaults() -> int { // first: turn everything off boost::log::settings off_settings; @@ -148,6 +154,7 @@ auto initialize_logging_defaults() -> int { return 0; } +// Called if custom logging settings are specified. auto initialize_logging(const LoggingConfiguration &configuration) -> void { boost::log::settings new_settings; diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp index d21b3bd..4ed9188 100644 --- a/src/ccaosdb.cpp +++ b/src/ccaosdb.cpp @@ -57,8 +57,8 @@ const char *caosdb_constants_COMPATIBLE_SERVER_VERSION_PRE_RELEASE() { } const char *caosdb_utility_get_env_var(const char *name, - const char *fall_back) { - return caosdb::utility::get_env_var(name, fall_back); + const char *fallback) { + return caosdb::utility::get_env_var(name, fallback); } const char *caosdb_get_status_description(int code) { -- GitLab