Commit fe8db74d authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Improve settings parsing and add defaults

parent 33b0830f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ class ipc_listener {
    };

public:
    ipc_listener(const char* socket_file, callback_t callback) 
    ipc_listener(const std::string& socket_file, callback_t callback) 
        : m_acceptor(m_ios, ba::local::stream_protocol::endpoint(socket_file)),
          m_socket(m_ios),
          m_callback(callback) {
+30 −5
Original line number Diff line number Diff line
@@ -67,30 +67,55 @@ public:
    }

    template <typename... Args>
    void info(const char* fmt, const Args&... args) {
    inline void info(const char* fmt, const Args&... args) {
        m_internal_logger->info(fmt, args...);
    }

    template <typename... Args>
    void debug(const char* fmt, const Args&... args) {
    inline void debug(const char* fmt, const Args&... args) {
        m_internal_logger->debug(fmt, args...);
    }

    template <typename... Args>
    void warn(const char* fmt, const Args&... args) {
    inline void warn(const char* fmt, const Args&... args) {
        m_internal_logger->warn(fmt, args...);
    }

    template <typename... Args>
    void error(const char* fmt, const Args&... args) {
    inline void error(const char* fmt, const Args&... args) {
        m_internal_logger->error(fmt, args...);
    }

    template <typename... Args>
    void critical(const char* fmt, const Args&... args) {
    inline void critical(const char* fmt, const Args&... args) {
        m_internal_logger->critical(fmt, args...);
    }

    template <typename T>
    inline void info(const T& msg) {
        m_internal_logger->info(msg);
    }

    template <typename T>
    inline void debug(const T& msg) {
        m_internal_logger->debug(msg);
    }

    template <typename T>
    inline void warn(const T& msg) {
        m_internal_logger->warn(msg);
    }

    template <typename T>
    inline void error(const T& msg) {
        m_internal_logger->error(msg);
    }

    template <typename T>
    inline void critical(const T& msg) {
        m_internal_logger->critical(msg);
    }

private:
    std::shared_ptr<spdlog::logger> m_internal_logger;
    std::string                     m_type;
+6 −13
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ namespace bpo = boost::program_options;

int main(int argc, char* argv[]){
    
    bool run_in_foreground = true;
    bool run_in_foreground = !defaults::daemonize;

    // declare a group of options that will be allowed only on the command line
    bpo::options_description generic("Allowed options");
@@ -56,18 +56,11 @@ int main(int argc, char* argv[]){

    settings.load("norns.json");

//    if (vm.count("f")) {
//        std::cout << "Compression level was set to " << vm["foreground"].as<bool>() << ".\n";
        std::cout << "Compression level was set to " << run_in_foreground << ".\n";
//    } else {
//        std::cout << "Compression level was not set.\n";
//    }
    settings.m_daemonize = !run_in_foreground;

    exit(0);
    urd daemon;
    daemon.set_configuration(settings);
    daemon.run();



    ::unlink(urd::SOCKET_FILE);

    urd().run();
    exit(EXIT_SUCCESS);
}
+24 −1
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
#include <boost/property_tree/json_parser.hpp>
#include "settings.hpp"

namespace bpt = boost::property_tree;

static uint64_t parse_size(const std::string& str);

void config_settings::load(const std::string& filename) {
@@ -35,6 +37,28 @@ void config_settings::load(const std::string& filename) {

    bpt::read_json(filename, pt);

    m_progname = defaults::progname;

    m_running_dir = pt.get<std::string>("settings.running_dir", "");

    if(m_running_dir == ""){
        m_running_dir = defaults::running_dir;
    }

    m_ipc_sockfile = defaults::ipc_sockfile;
    
    m_daemon_pidfile = pt.get<std::string>("settings.pidfile", "");

    if(m_daemon_pidfile == ""){
        m_daemon_pidfile = defaults::daemon_pidfile;
    }

    m_workers_in_pool = pt.get<int32_t>("settings.workers", 0);

    if(m_workers_in_pool == 0){
        m_workers_in_pool = defaults::workers_in_pool;
    }

    m_storage_path = pt.get<std::string>("settings.storage.path", "");

    if(m_storage_path == "") {
@@ -157,5 +181,4 @@ uint64_t parse_size(const std::string& str){
    double value = std::stod(number_str);

    return std::round(value*factor);

}
+15 −5
Original line number Diff line number Diff line
@@ -25,12 +25,17 @@
#ifndef __SETTINGS_HPP__
#define __SETTINGS_HPP__

#include <thread>
#include <list>
#include <boost/foreach.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>

namespace bpt = boost::property_tree;
namespace defaults {
    static constexpr const char* progname = "urd";
    static const bool            daemonize = true;
    static constexpr const char* running_dir = "/tmp";
    static constexpr const char* ipc_sockfile = "/tmp/urd.socket";  
    static constexpr const char* daemon_pidfile = "/tmp/urd.pid";
    static const uint32_t workers_in_pool = std::thread::hardware_concurrency();
} // namespace defaults

struct config_settings {

@@ -48,10 +53,15 @@ struct config_settings {

    void load(const std::string& filename);

    std::string        m_progname;
    bool               m_daemonize;
    std::string        m_running_dir;
    std::string        m_ipc_sockfile;
    std::string        m_daemon_pidfile;
    uint32_t           m_workers_in_pool;
    std::string        m_storage_path;     /* path to internal storage */
    uint64_t           m_storage_capacity; /* internal storage's max capacity */
    std::list<backend> m_backends;         /* list of backend descriptions */
};


#endif /* __SETTINGS_HPP__ */
Loading