--- 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);
}