From f52413a0f821f4bec3e1903ba1629023e3231a09 Mon Sep 17 00:00:00 2001 From: JAJames Date: Sat, 25 Jun 2016 20:29:34 -0400 Subject: [PATCH] Removed Jupiter::IRC::Client::Config --- Jupiter/IRC_Client.cpp | 134 +++++++++++++++++++++++++++++++---------- Jupiter/IRC_Client.h | 53 +++++++++++----- Release/Jupiter.lib | Bin 316452 -> 318142 bytes 3 files changed, 140 insertions(+), 47 deletions(-) diff --git a/Jupiter/IRC_Client.cpp b/Jupiter/IRC_Client.cpp index e03d423..5b08819 100644 --- a/Jupiter/IRC_Client.cpp +++ b/Jupiter/IRC_Client.cpp @@ -40,9 +40,6 @@ using namespace Jupiter::literals; -Jupiter::INIFile _Config; -Jupiter::INIFile *Jupiter::IRC::Client::Config = &_Config; - template class JUPITER_API Jupiter::Reference_String; template class JUPITER_API Jupiter::String_Strict; template class JUPITER_API Jupiter::CString_Type; @@ -59,7 +56,9 @@ struct JUPITER_API Jupiter::IRC::Client::Data Jupiter::StringS saslAccount; Jupiter::StringS saslPass; int connectionStatus; - Jupiter::StringS configSectionName; + Jupiter::StringS primary_section_name; + const Jupiter::INIFile::Section *primary_section; + const Jupiter::INIFile::Section *secondary_section; Jupiter::CStringS logFileName; Jupiter::StringS last_line; unsigned short serverPort; @@ -133,15 +132,16 @@ struct Jupiter::IRC::Client::Channel::Data bool isAddingNames; }; -Jupiter::IRC::Client::Client(const Jupiter::ReadableString &configSection) +Jupiter::IRC::Client::Client(const Jupiter::INIFile::Section *in_primary_section, const Jupiter::INIFile::Section *in_secondary_section) { Jupiter::IRC::Client::data_ = new Jupiter::IRC::Client::Data(this); - if (Jupiter::IRC::Client::Config == nullptr) - { - Jupiter::IRC::Client::Config = new INIFile(); - Jupiter::IRC::Client::Config->readFile(CONFIG_INI); - } - Jupiter::IRC::Client::data_->configSectionName = configSection; + + Jupiter::IRC::Client::data_->primary_section = in_primary_section; + Jupiter::IRC::Client::data_->secondary_section = in_secondary_section; + + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + Jupiter::IRC::Client::data_->primary_section_name = Jupiter::IRC::Client::data_->primary_section->getName(); + Jupiter::IRC::Client::data_->serverHostname = Jupiter::IRC::Client::readConfigValue("Hostname"_jrs, "irc.cncirc.net"_jrs); Jupiter::IRC::Client::data_->logFileName = Jupiter::IRC::Client::readConfigValue("LogFile"_jrs); @@ -302,7 +302,35 @@ void Jupiter::IRC::Client::OnMode(const Jupiter::ReadableString &, const Jupiter const Jupiter::ReadableString &Jupiter::IRC::Client::getConfigSection() const { - return Jupiter::IRC::Client::data_->configSectionName; + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + return Jupiter::IRC::Client::data_->primary_section_name; + + return Jupiter::ReferenceString::empty; +} + +const Jupiter::INIFile::Section *Jupiter::IRC::Client::getPrimaryConfigSection() const +{ + return Jupiter::IRC::Client::data_->primary_section; +} + +const Jupiter::INIFile::Section *Jupiter::IRC::Client::getSecondaryConfigSection() const +{ + return Jupiter::IRC::Client::data_->primary_section; +} + +void Jupiter::IRC::Client::setPrimaryConfigSection(const Jupiter::INIFile::Section *in_primary_section) +{ + Jupiter::IRC::Client::data_->primary_section = in_primary_section; + + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + Jupiter::IRC::Client::data_->primary_section_name = Jupiter::IRC::Client::data_->primary_section->getName(); + else + Jupiter::IRC::Client::data_->primary_section_name.erase(); +} + +void Jupiter::IRC::Client::setSecondaryConfigSection(const Jupiter::INIFile::Section *in_secondary_section) +{ + Jupiter::IRC::Client::data_->secondary_section = in_secondary_section; } const Jupiter::ReadableString &Jupiter::IRC::Client::getLogFile() const @@ -1387,42 +1415,82 @@ int Jupiter::IRC::Client::think() const Jupiter::ReadableString &Jupiter::IRC::Client::readConfigValue(const Jupiter::ReadableString &key, const Jupiter::ReadableString &defaultValue) const { - const Jupiter::ReadableString &val = Jupiter::IRC::Client::Config->get(Jupiter::IRC::Client::data_->configSectionName, key); - if (val.isNotEmpty()) - return val; - return Jupiter::IRC::Client::Config->get("Default"_jrs, key, defaultValue); + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + { + const Jupiter::ReadableString &val = Jupiter::IRC::Client::data_->primary_section->get(key); + + if (val.isNotEmpty()) + return val; + } + + if (Jupiter::IRC::Client::data_->secondary_section != nullptr) + return Jupiter::IRC::Client::data_->secondary_section->get(key, defaultValue); + + return defaultValue; } bool Jupiter::IRC::Client::readConfigBool(const Jupiter::ReadableString &key, bool defaultValue) const { - const Jupiter::ReadableString &val = Jupiter::IRC::Client::Config->get(Jupiter::IRC::Client::data_->configSectionName, key); - if (val.isNotEmpty()) - return val.asBool(); - return Jupiter::IRC::Client::Config->getBool("Default"_jrs, key, defaultValue); + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + { + const Jupiter::ReadableString &val = Jupiter::IRC::Client::data_->primary_section->get(key); + + if (val.isNotEmpty()) + return val.asBool(); + } + + if (Jupiter::IRC::Client::data_->secondary_section != nullptr) + return Jupiter::IRC::Client::data_->secondary_section->getBool(key, defaultValue); + + return defaultValue; } int Jupiter::IRC::Client::readConfigInt(const Jupiter::ReadableString &key, int defaultValue) const { - const Jupiter::ReadableString &val = Jupiter::IRC::Client::Config->get(Jupiter::IRC::Client::data_->configSectionName, key); - if (val.isNotEmpty()) - return val.asInt(); - return Jupiter::IRC::Client::Config->getInt("Default"_jrs, key, defaultValue); + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + { + const Jupiter::ReadableString &val = Jupiter::IRC::Client::data_->primary_section->get(key); + + if (val.isNotEmpty()) + return val.asInt(); + } + + if (Jupiter::IRC::Client::data_->secondary_section != nullptr) + return Jupiter::IRC::Client::data_->secondary_section->getInt(key, defaultValue); + + return defaultValue; } long Jupiter::IRC::Client::readConfigLong(const Jupiter::ReadableString &key, long defaultValue) const { - const Jupiter::ReadableString &val = Jupiter::IRC::Client::Config->get(Jupiter::IRC::Client::data_->configSectionName, key); - if (val.isNotEmpty()) - return val.asInt(); - return Jupiter::IRC::Client::Config->getInt("Default"_jrs, key, defaultValue); + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + { + const Jupiter::ReadableString &val = Jupiter::IRC::Client::data_->primary_section->get(key); + + if (val.isNotEmpty()) + return val.asInt(); + } + + if (Jupiter::IRC::Client::data_->secondary_section != nullptr) + return Jupiter::IRC::Client::data_->secondary_section->getLong(key, defaultValue); + + return defaultValue; } double Jupiter::IRC::Client::readConfigDouble(const Jupiter::ReadableString &key, double defaultValue) const { - const Jupiter::ReadableString &val = Jupiter::IRC::Client::Config->get(Jupiter::IRC::Client::data_->configSectionName, key); - if (val.isNotEmpty()) - return val.asDouble(); - return Jupiter::IRC::Client::Config->getDouble("Default"_jrs, key, defaultValue); + if (Jupiter::IRC::Client::data_->primary_section != nullptr) + { + const Jupiter::ReadableString &val = Jupiter::IRC::Client::data_->primary_section->get(key); + + if (val.isNotEmpty()) + return val.asDouble(); + } + + if (Jupiter::IRC::Client::data_->secondary_section != nullptr) + return Jupiter::IRC::Client::data_->secondary_section->getDouble(key, defaultValue); + + return defaultValue; } void Jupiter::IRC::Client::writeToLogs(const Jupiter::ReadableString &message) @@ -1519,7 +1587,7 @@ bool Jupiter::IRC::Client::Data::startCAP() Jupiter::IRC::Client::Data::connectionStatus = 2; return Jupiter::IRC::Client::Data::sock->send("CAP LS" ENDL, 8) > 0; } -//Jupiter::ReferenceString & + bool Jupiter::IRC::Client::Data::registerClient() { bool r = true; diff --git a/Jupiter/IRC_Client.h b/Jupiter/IRC_Client.h index a6fe123..1f5fa7d 100644 --- a/Jupiter/IRC_Client.h +++ b/Jupiter/IRC_Client.h @@ -1,5 +1,5 @@ /** - * Copyright (C) 2013-2015 Jessica James. + * Copyright (C) 2013-2016 Jessica James. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -30,21 +30,17 @@ #include "Thinker.h" #include "IRC.h" #include "Reference_String.h" - -#define CONFIG_INI "Config.ini" /** Default location of the Config file. */ +#include "INIFile.h" namespace Jupiter { - - class INIFile; /** Forward declaration for Jupiter::INIFile. See Jupiter::INIFile in INIFile.h. */ - namespace IRC { /** * @brief Provides connectivity to IRC servers. */ - class JUPITER_API Client : public Thinker + class JUPITER_API Client : public Jupiter::Thinker { protected: @@ -198,8 +194,6 @@ namespace Jupiter */ virtual void OnMode(const Jupiter::ReadableString &chan, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &modeString); public: - - static INIFile *Config; /** IRC client config file. This is automatically instantiated upon library initialization. */ class Channel; /** @@ -474,12 +468,42 @@ namespace Jupiter }; // Jupiter::IRC::Client::Channel class /** - * @brief Returns the config section this refers to. + * @brief Returns the name of the primary config section this client reads from. * - * @return String containing a config section. + * @return String containing a config section's name. */ const Jupiter::ReadableString &getConfigSection() const; + /** + * @brief Fetches the primary config section + * + * @return The primary config section if it exists, nullptr otherwise. + */ + const Jupiter::INIFile::Section *getPrimaryConfigSection() const; + + /** + * @brief Fetches the primary config section + * + * @return The primary config section if it exists, nullptr otherwise. + */ + const Jupiter::INIFile::Section *getSecondaryConfigSection() const; + + /** + * @brief Sets the primary config section + * Note: This is useful when the higher config file is reloaded + * + * @param in_primary_section Primary config section to begin using + */ + virtual void setPrimaryConfigSection(const Jupiter::INIFile::Section *in_primary_section); + + /** + * @brief Sets the secondary config section + * Note: This is useful when the higher config file is reloaded + * + * @param in_secondary_section Secondary config section to begin using + */ + virtual void setSecondaryConfigSection(const Jupiter::INIFile::Section *in_secondary_section); + /** * @brief Returns the name of the file this logs to. * @@ -855,14 +879,15 @@ namespace Jupiter * * @return 0 if the client should still exist, error code otherwise. */ - virtual int think(); + virtual int think() override; /** * @brief Constructor for a client. * - * @param configSection String containing the config section for the client to read from, before defaulting to "Default". + * @param in_primary_section INIFile section to search first for a configuration option + * @param in_secondary_section INIFile section to search second for a configuration, before using a pre-defined default value */ - Client(const Jupiter::ReadableString &configSection); + Client(const Jupiter::INIFile::Section *in_primary_section, const Jupiter::INIFile::Section *in_secondary_section); /** * @brief Destructor for a client. diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 92ea547ceaa704443f3f3d11338d4c144202288e..c6114f2b774f0117f88b380b8ee70a19583f45c0 100644 GIT binary patch delta 41674 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%0D2EnvL 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

0m)szo9EZWxPhi!r&3Gdkk58Z;uTvLMMz5)C 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 TFRTAdRen@CZlp7PuEPEgvlzu* delta 40674 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 M`wjJ)D=PH=0Y|+y)&Kwi