コード例 #1
0
ファイル: ConfigBase.cpp プロジェクト: colding/lorica
bool
Lorica::Config::init_endpoints(bool do_extern)
{
        std::string eps_str = do_extern ? 
		this->get_value("External_Address") : 
		this->get_value("Internal_Address");
        size_t pos = 0;
        size_t tpos = 0;

        if (eps_str.empty() || !eps_str.length()) {
                if (do_extern) {
                        char host_name[HOST_NAME_MAX] = { '\0' };
                        ACE_OS::hostname(host_name, sizeof(host_name));

                        eps_str = (const char*)host_name;
                        eps_str += ":"LORICA_DEFAULT_OUTSIDE_FACING_PORT_STR;
                        ACE_DEBUG((LM_WARNING, 
				   ACE_TEXT("%N:%l - DEPRECATED: Using default endpoint value (%s) for outside facing endpoint\n"),
				   eps_str.c_str()));
                } else {
                        eps_str = "localhost:"LORICA_DEFAULT_INSIDE_FACING_PORT_STR;
                        ACE_DEBUG((LM_WARNING,
				   ACE_TEXT("%N:%l - DEPRECATED: Using default endpoint value (%s) for inside facing endpoint\n"),
				   eps_str.c_str()));
                }
        }

        for (; tpos != std::string::npos; pos = tpos + 1) {
                tpos = eps_str.find(' ', pos);
                std::string ep_str = (tpos == std::string::npos) ? eps_str.substr(pos) : eps_str.substr(pos, tpos-pos);
                if (ep_str.empty())
                        break;

		ACE_DEBUG((LM_DEBUG, 
			   ACE_TEXT("%N:%l - %C Endpoint String - %C\n"),
			   (do_extern ? "External" : "Internal"),
			   ep_str.c_str()));

                Endpoint ep;
                ep.external_ = do_extern;
                if (ep.parse_string(ep_str, do_extern))
                        endpoints_.push_back(ep);
                else
                        return false;
        }

        return true;
}