OSDN Git Service

windows/socket_impl2.hpp
authorMyun2 <myun2@nwhite.info>
Sat, 19 May 2012 08:10:22 +0000 (17:10 +0900)
committerMyun2 <myun2@nwhite.info>
Sat, 19 May 2012 08:10:22 +0000 (17:10 +0900)
roast/include/roast/windows/socket_impl2.hpp

index fdcd65d..46756cb 100644 (file)
@@ -2,8 +2,8 @@
 
 /*
 */
-#ifndef __SFJP_ROAST__windows__net__socket_windows_impl_HPP__
-#define __SFJP_ROAST__windows__net__socket_windows_impl_HPP__
+#ifndef __SFJP_ROAST__windows__net__socket_impl_HPP__
+#define __SFJP_ROAST__windows__net__socket_impl_HPP__
 
 #include <string>
 #include <ws2tcpip.h>
@@ -44,14 +44,13 @@ namespace roast
                                return msg;
                        }
                        
-                       void lasterr_assert(const char* msg){
-                               if ( ::WSAGetLastError() != 0 )
-                                       throw socket_exception(code, ::std::string(msg) + ' ' + get_last_error_msg());
-                       }
                        void nozero_assert(int code, const char* msg){
                                if ( code != 0 )
                                        throw socket_exception(code, ::std::string(msg) + ' ' + get_last_error_msg());
                        }
+                       void lasterr_assert(const char* msg){
+                               nozero_assert(::WSAGetLastError(), msg);
+                       }
                        
                public:
                        socket_impl(){}
@@ -61,7 +60,7 @@ namespace roast
                        //      Implement Methods
                        handler_type create(const open_params_type& params){
                                sock_type sock = ::socket(af, type, protocol);
-                               lasterr_assert();
+                               lasterr_assert("roast::windows::socket::create() ::socket() function was error.");
                                return sock;
                        }
                        handler_type open(const open_params_type& params){
@@ -88,9 +87,9 @@ namespace roast
                                        "roast::windows::socket::listen() ::listen() function was error.");
                        }
                        
-                       handler_type accept(::sockaddr* addr_out=NULL, int* len_out=NULL)
+                       handler_type accept(handler_type handler, ::sockaddr* addr_out=NULL, int* len_out=NULL)
                        {
-                               ::SOCKET accepted_socket = ::accept(m_sock, addr_out, len_out);
+                               ::SOCKET accepted_socket = ::accept(handler, addr_out, len_out);
                                nozero_assert(::WSAGetLastError(), "roast::socket::accept() ::accept() function was error.");
                                return accepted_socket;
                        }
@@ -102,19 +101,19 @@ namespace roast
                        int write(handler_type handler, const void* buf, size_t size, int flag)
                        {
                                int ret = ::send(handler, (const char*)buf, size, flag);
-                               lasterr_assert();
+                               lasterr_assert("roast::windows::socket::write() ::send() function was error.");
                                return ret;
                        }
                        int read(handler_type handler, void* buf, size_t size, int flag)
                        {
                                int ret = ::recv(handler, (char*)buf, size, flag);
-                               lasterr_assert();
+                               lasterr_assert("roast::windows::socket::read() ::recv() function was error.");
                                return ret;
                        }
                };
                
-               const socket_impl:::handler_type socket_impl::invalid_handle = INVALID_SOCKET;
-               
+               const socket_impl::handler_type socket_impl::invalid_handle = INVALID_SOCKET;
+
                ////////////////////////////////////////////////////////////////////////////////
                
                class socket : public socket_base
@@ -226,4 +225,4 @@ namespace roast
        }
 }
 
-#endif//__SFJP_ROAST__windows__net__socket_windows_impl_HPP__
+#endif//__SFJP_ROAST__windows__net__socket_impl_HPP__