src/Network/TCP.cc
changeset 378 5589abf5e61b
parent 263 8c999cf4c182
child 380 d193dd1d8a7e
--- a/src/Network/TCP.cc	Mon Dec 15 16:41:00 2008 +0000
+++ b/src/Network/TCP.cc	Mon Dec 15 23:56:42 2008 +0000
@@ -5,15 +5,18 @@
 /*
  * NetworkTCPTransport
  */
-NetworkTCPTransport::NetworkTCPTransport (NetworkSocket socket) :
+NetworkTCPTransport::NetworkTCPTransport (NetworkSocket *socket) :
     socket(socket), in(socket, NETWORK_TCP_INITIAL_IN_BUF), out(socket, NETWORK_TCP_INITIAL_OUT_BUF) {
     
     // connect signals
-    slots.connect(socket.sig_read_triggered(), this, &NetworkTCPTransport::on_read);
-    slots.connect(socket.sig_write_triggered(), this, &NetworkTCPTransport::on_write);
-    slots.connect(socket.sig_disconnected(), this, &NetworkTCPTransport::on_disconnected);
+    slots.connect(socket->sig_read(), this, &NetworkTCPTransport::on_read);
+    slots.connect(socket->sig_write(), this, &NetworkTCPTransport::on_write);
 }
-
+        
+NetworkTCPTransport::~NetworkTCPTransport (void) {
+    // release socket
+    delete socket;
+}
 
 void NetworkTCPTransport::on_read (void) {
     uint32_t length;
@@ -56,11 +59,6 @@
         _sig_disconnect();
     }
 }
-
-void NetworkTCPTransport::on_disconnected (void) {
-    // pass right through
-    _sig_disconnect();
-}
         
 void NetworkTCPTransport::write_packet (const NetworkPacketBuffer &packet) {
     uint32_t prefix = packet.get_data_size();
@@ -82,17 +80,17 @@
     }
 }
 
+/*
+ * NetworkTCPServer
+ */
 NetworkTCPServer::NetworkTCPServer (const NetworkAddress &listen_addr) :
-    socket(CL_Socket::tcp, CL_Socket::ipv4) {
-    
-    // wow... I didn't know ClanLib was *this* crap
-    socket.proto = CL_Socket::tcp;
+    socket(AF_UNSPEC, SOCK_STREAM) {
     
     // bind
     socket.bind(listen_addr);
 
     // assign slots
-    slots.connect(socket.sig_read_triggered(), this, &NetworkTCPServer::on_accept);
+    slots.connect(socket.sig_read(), this, &NetworkTCPServer::on_accept);
 
     // listen
     socket.listen(NETWORK_LISTEN_BACKLOG);
@@ -104,7 +102,7 @@
 
 void NetworkTCPServer::on_accept (void) {
     // accept a new socket
-    NetworkSocket client_sock = socket.accept();
+    NetworkSocket *client_sock = socket.accept(NULL);
 
     // create a new NetworkTCPTransport
     NetworkTCPTransport *client = buildTransport(client_sock);
@@ -113,19 +111,19 @@
     _sig_client(client);
 }
         
-NetworkTCPTransport* NetworkTCPServer::buildTransport (CL_Socket &socket) {
+NetworkTCPTransport* NetworkTCPServer::buildTransport (NetworkSocket *socket) {
     return new NetworkTCPTransport(socket);
 }
         
+/*
+ * NetworkTCPClient
+ */
 NetworkTCPClient::NetworkTCPClient (const NetworkAddress &connect_addr) :
-    NetworkTCPTransport(NetworkSocket(CL_Socket::tcp, CL_Socket::ipv4)) {
+    NetworkTCPTransport(new NetworkSocket(AF_UNSPEC, SOCK_STREAM)) {
     
-    // wow... I didn't know ClanLib was *this* crap
-    socket.proto = CL_Socket::tcp;
-
     // connect
-    socket.connect(connect_addr);
+    socket->connect(connect_addr);
     
     // use nonblocking sockets
-    socket.set_nonblocking(true);
+    socket->set_nonblocking(true);
 }