From: myun2 Date: Mon, 9 Jul 2012 00:38:13 +0000 (+0900) Subject: unix/socket_impl.hpp: 大体直して、みた、ような…? X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d9c3d4967356273d47de5f27612c882c95e809af;p=roast%2Froast.git unix/socket_impl.hpp: 大体直して、みた、ような…? --- diff --git a/roast/include/roast/unix/socket_impl.hpp b/roast/include/roast/unix/socket_impl.hpp index 77827ef3..adea1288 100644 --- a/roast/include/roast/unix/socket_impl.hpp +++ b/roast/include/roast/unix/socket_impl.hpp @@ -8,16 +8,16 @@ #include "roast/io/socket/socket_base.hpp" #include // sprintf #include -#include -#include -#include -#pragma comment(lib, "ws2_32.lib") -#include "roast/windows/socket_startup.hpp" +#include +#include +#include +#include +#include namespace roast { - namespace windows + namespace unix { //////////////////////////////////////////////////////////////////////////////// @@ -25,7 +25,7 @@ namespace roast { public: // Types: - typedef ::SOCKET handler_type, sock_type, socket_type; + typedef int handler_type, sock_type, socket_type; struct open_params_type { int af; @@ -70,7 +70,7 @@ namespace roast private: // Private Methods - static ::std::string get_last_error_msg() + /*static ::std::string get_last_error_msg() { char *msg_buf; ::FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, @@ -81,14 +81,14 @@ namespace roast ::LocalFree(msg_buf); } return msg; - } + }*/ static void nozero_assert(int code, const char* msg){ if ( code != 0 ) - throw socket_exception(::std::string(msg) + ' ' + get_last_error_msg(), code); + throw socket_exception(::std::string(msg) /*+ ' ' + get_last_error_msg()*/, code); } static void lasterr_assert(const char* msg){ - nozero_assert(::WSAGetLastError(), msg); + nozero_assert(errno, msg); } // Private Classes @@ -110,7 +110,7 @@ namespace roast nozero_assert( ::getaddrinfo(host, port_str, &hints, &data), - "roast::windows::socket::addr() ::getaddrinfo() function was error."); + "roast::unix::socket::addr() ::getaddrinfo() function was error."); } virtual ~addr(){ @@ -131,7 +131,7 @@ namespace roast // Implement Methods static handler_type create(const open_params_type& params){ sock_type sock = ::socket(params.af, params.type, params.protocol); - lasterr_assert("roast::windows::socket::create() ::socket() function was error."); + lasterr_assert("roast::unix::socket::create() ::socket() function was error."); return sock; } @@ -150,27 +150,27 @@ namespace roast { nozero_assert( ::closesocket(handler), - "roast::windows::socket::close() ::closesocket() function was error."); + "roast::unix::socket::close() ::closesocket() function was error."); } void shutdown(handler_type handler, int how=3) { nozero_assert( ::shutdown(handler, how), - "roast::windows::socket::close() ::closesocket() function was error."); + "roast::unix::socket::close() ::closesocket() function was error."); } void listen(handler_type handler, int max_queueing=SOMAXCONN) { nozero_assert( ::listen(handler, max_queueing), - "roast::windows::socket::listen() ::listen() function was error."); + "roast::unix::socket::listen() ::listen() function was error."); } handler_type accept(handler_type handler, ::sockaddr* addr_out=NULL, int* len_out=NULL) { - ::SOCKET accepted_socket = ::accept(handler, addr_out, len_out); - nozero_assert(::WSAGetLastError(), "roast::socket::accept() ::accept() function was error."); + handler_type accepted_socket = ::accept(handler, addr_out, len_out); + nozero_assert(errno, "roast::socket::accept() ::accept() function was error."); return accepted_socket; } @@ -183,13 +183,13 @@ namespace roast static int read(handler_type handler, void* buf, size_t size, int flag) { int ret = ::recv(handler, (char*)buf, size, flag); - lasterr_assert("roast::windows::socket::read() ::recv() function was error."); + lasterr_assert("roast::unix::socket::read() ::recv() function was error."); return ret; } static int write(handler_type handler, const void* buf, size_t size, int flag) { int ret = ::send(handler, (const char*)buf, size, flag); - lasterr_assert("roast::windows::socket::write() ::send() function was error."); + lasterr_assert("roast::unix::socket::write() ::send() function was error."); return ret; } @@ -222,10 +222,10 @@ namespace roast m_sock = ::socket(af, type, protocol); - nozero_assert(::WSAGetLastError(), "roast::socket::socket() ::socket() function was error."); + nozero_assert(errno, "roast::socket::socket() ::socket() function was error."); if ( m_sock == INVALID_SOCKET ) - throw socket_exception(::WSAGetLastError(), "roast::socket::socket() m_sock is INVALID_SOCKET."); + throw socket_exception(errno, "roast::socket::socket() m_sock is INVALID_SOCKET."); } @@ -237,7 +237,7 @@ namespace roast //close(); if ( m_sock != INVALID_SOCKET && m_opened ) - throw socket_exception(::WSAGetLastError(), "roast::socket::connect() Socket was already opened."); + throw socket_exception(errno, "roast::socket::connect() Socket was already opened."); ::addrinfo hints; ::memset(&hints, 0, sizeof(hints)); @@ -272,7 +272,7 @@ namespace roast void bind(int port, const char* host="0.0.0.0") { if ( m_sock != INVALID_SOCKET && m_opened ) - throw socket_exception(::WSAGetLastError(), "roast::socket::bind() Socket was already binded."); + throw socket_exception(errno, "roast::socket::bind() Socket was already binded."); ::addrinfo hints; ::memset(&hints, 0, sizeof(hints));