ConfigParser.hpp 1.1 KB
#ifndef __CONFIG_PARSER_H__
#define __CONFIG_PARSER_H__

#include <fstream>
#include "./Message/CatalogParser.h"
#include "sip_header.h"
#include "./Utils/logger.hpp"


class ConfigParser
{
public:
    static ConfigParser* getInstance(){
		static ConfigParser* singleton = nullptr;
		if (singleton == nullptr){
			singleton = new ConfigParser();
		}
		return singleton;
	}

public:
    ConfigParser(/* args */);
    ~ConfigParser();

    bool init();

    ServerInfo getServerCfg();

private:
    ServerInfo mInfo;

};

ConfigParser::ConfigParser(/* args */)
{
}

ConfigParser::~ConfigParser()
{
}

bool ConfigParser::init() {
    std::ifstream cfgFile("./sip_server_cfg.xml");
    if(cfgFile.is_open()) {
        string strConfig;
        string str;
        while(cfgFile >> str)
        {
            strConfig += str;
        }
        CCatalogParser catPaser;
        mInfo = catPaser.DecodeServerConfig(strConfig.c_str());
    } else {
        LOG_ERROR("read config file failed!");
        return false;
    }
    cfgFile.close();

    return true;
}

ServerInfo ConfigParser::getServerCfg() {
    return mInfo;
}

#endif