#include "toml.hpp"		// 最初の方に置かないとコンパイルエラー起こす
#include "udpl_dll_imp.h"
#include "config_config.h"

extern std::tstring strDllPath;	// dll のパス

// ****************************************************************************************************
// 設定ファイルを読む
// ****************************************************************************************************
bool UdplManagerImp::readConfig(std::vector<std::string> &list)
{
	char confname[MAX_PATH] = { '\0' };		// config ファイルのファイル名

	tchar2char(confname, strDllPath.c_str(), sizeof(confname));
	strcat_s(confname, sizeof(confname), UDPL_CONFIG_FILE);

	try {
		auto conf = toml::parse(confname);
		auto targets = toml::find(conf, TARGET_TABLE);
		auto target_list = toml::find<std::vector<std::string>>(targets, IPV6_KEY);
		list = target_list;
	}
	catch (std::runtime_error e) {
		// ファイルが見つからないエラー
		return false;
	}
	catch (toml::syntax_error e) {
		// parse 失敗エラー
		MessageBoxA(NULL, e.what(), "toml error", MB_OK);
		return false;
	}
	catch (toml::type_error e) {
		// なんのエラー?
		return false;
	}
	catch (...) {
		// find, get エラー
		return false;
	}

	return true;
}