if (! file.fail()) {
                std::string cookie;
                file >> cookie;
                size_t n = cookie.find('\n');
                if (n != std::string::npos) cookie.erase(n);
                if (cookie.size() > EI_MAX_COOKIE_SIZE)
                    throw err_bad_argument("Cookie size too long", cookie.size());
                return atom(cookie);
            }
        }
        return atom();
    }

} // namespace

atom        basic_otp_node_local::s_default_cookie = get_default_cookie();
std::string basic_otp_node_local::s_localhost      = boost::asio::ip::host_name();

basic_otp_node_local::basic_otp_node_local(
    const std::string& a_nodename, const std::string& a_cookie)
    throw (std::runtime_error, err_bad_argument)
{
    set_nodename(a_nodename, a_cookie);
}

void basic_otp_node_local::set_nodename(
    const std::string& a_nodename, const std::string& a_cookie)
    throw (std::runtime_error, err_bad_argument)
{
    if (m_cookie.size() > EI_MAX_COOKIE_SIZE)
        throw err_bad_argument("Cookie size too long", m_cookie.size());
                << ".erlang.cookie";
            std::ifstream file(s.str().c_str());
            if (! file.fail()) {
                std::string cookie;
                file >> cookie;
                size_t n = cookie.find('\n');
                if (n != std::string::npos) cookie.erase(n);
                return cookie;
            }
        }
        return "no_cookie";
    }

} // namespace

std::string basic_otp_node_local::s_default_cookie = get_default_cookie();
std::string basic_otp_node_local::s_localhost      = boost::asio::ip::host_name();

basic_otp_node_local::basic_otp_node_local(
    const std::string& a_nodename, const std::string& a_cookie)
    throw (std::runtime_error, err_bad_argument)
{
    set_nodename(a_nodename, a_cookie);
}

void basic_otp_node_local::set_nodename(
    const std::string& a_nodename, const std::string& a_cookie)
    throw (std::runtime_error, err_bad_argument)
{
    m_cookie = a_cookie.empty() ? s_default_cookie : a_cookie;