summaryrefslogtreecommitdiff
path: root/src/serversocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/serversocket.cpp')
-rw-r--r--src/serversocket.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/serversocket.cpp b/src/serversocket.cpp
index 30f584d..6f7fc00 100644
--- a/src/serversocket.cpp
+++ b/src/serversocket.cpp
@@ -18,9 +18,10 @@
18#include <netdb.h> 18#include <netdb.h>
19#include <arpa/inet.h> 19#include <arpa/inet.h>
20#include <fcntl.h> 20#include <fcntl.h>
21#include "serversocket.h" 21#include "bu/serversocket.h"
22#include "exceptions.h" 22#include "bu/osx_compatibility.h"
23#include "osx_compatibility.h" 23
24namespace Bu { subExceptionDef( ServerSocketException ) }
24 25
25Bu::ServerSocket::ServerSocket( int nPort, int nPoolSize ) : 26Bu::ServerSocket::ServerSocket( int nPort, int nPoolSize ) :
26 nPort( nPort ) 27 nPort( nPort )
@@ -64,7 +65,7 @@ void Bu::ServerSocket::startServer( struct sockaddr_in &name, int nPoolSize )
64 nServer = socket( PF_INET, SOCK_STREAM, 0 ); 65 nServer = socket( PF_INET, SOCK_STREAM, 0 );
65 if( nServer < 0 ) 66 if( nServer < 0 )
66 { 67 {
67 throw Bu::SocketException("Couldn't create a listen socket."); 68 throw Bu::ServerSocketException("Couldn't create a listen socket.");
68 } 69 }
69 70
70 int opt = 1; 71 int opt = 1;
@@ -78,12 +79,12 @@ void Bu::ServerSocket::startServer( struct sockaddr_in &name, int nPoolSize )
78 79
79 if( bind( nServer, (struct sockaddr *) &name, sizeof(name) ) < 0 ) 80 if( bind( nServer, (struct sockaddr *) &name, sizeof(name) ) < 0 )
80 { 81 {
81 throw Bu::SocketException("Couldn't bind to the listen socket."); 82 throw Bu::ServerSocketException("Couldn't bind to the listen socket.");
82 } 83 }
83 84
84 if( listen( nServer, nPoolSize ) < 0 ) 85 if( listen( nServer, nPoolSize ) < 0 )
85 { 86 {
86 throw Bu::SocketException( 87 throw Bu::ServerSocketException(
87 "Couldn't begin listening to the server socket." 88 "Couldn't begin listening to the server socket."
88 ); 89 );
89 } 90 }
@@ -109,7 +110,7 @@ int Bu::ServerSocket::accept( int nTimeoutSec, int nTimeoutUSec )
109 110
110 if( TEMP_FAILURE_RETRY(select( nServer+1, &fdRead, NULL, NULL, &xT )) < 0 ) 111 if( TEMP_FAILURE_RETRY(select( nServer+1, &fdRead, NULL, NULL, &xT )) < 0 )
111 { 112 {
112 throw SocketException( 113 throw Bu::ServerSocketException(
113 "Error scanning for new connections: %s", strerror( errno ) 114 "Error scanning for new connections: %s", strerror( errno )
114 ); 115 );
115 } 116 }
@@ -134,7 +135,7 @@ int Bu::ServerSocket::accept( int nTimeoutSec, int nTimeoutUSec )
134#endif /* __CYGWIN__ */ 135#endif /* __CYGWIN__ */
135 if( nClient < 0 ) 136 if( nClient < 0 )
136 { 137 {
137 throw SocketException( 138 throw Bu::ServerSocketException(
138 "Error accepting a new connection: %s", strerror( errno ) 139 "Error accepting a new connection: %s", strerror( errno )
139 ); 140 );
140 } 141 }
@@ -150,7 +151,7 @@ int Bu::ServerSocket::accept( int nTimeoutSec, int nTimeoutUSec )
150 flags |= O_NONBLOCK; 151 flags |= O_NONBLOCK;
151 if( fcntl( nClient, F_SETFL, flags ) < 0) 152 if( fcntl( nClient, F_SETFL, flags ) < 0)
152 { 153 {
153 throw SocketException( 154 throw Bu::ServerSocketException(
154 "Error setting option on client socket: %s", 155 "Error setting option on client socket: %s",
155 strerror( errno ) 156 strerror( errno )
156 ); 157 );