src/proto2/NetworkSession.cc
branchno-netsession
changeset 37 ed2957490bbf
parent 36 785d220fc6b7
child 39 cfb8b6e2a35f
--- a/src/proto2/NetworkSession.cc	Thu Nov 20 19:25:56 2008 +0000
+++ b/src/proto2/NetworkSession.cc	Thu Nov 20 20:27:12 2008 +0000
@@ -1,7 +1,9 @@
 
 #include "NetworkSession.hh"
 
-NetworkSession::NetworkSession (NetworkSessionMagic magic) :
+#include <cassert>
+
+NetworkSession::NetworkSession (uint64_t magic) :
     magic(magic), tcp_srv(NULL), udp_srv(NULL), udp_client(NULL) {
    
     // nothing
@@ -15,15 +17,15 @@
     udp_srv = new NetworkUDP(addr);
     
     // connect signals
-    slots.connect(tcp->sig_client(), this, &NetworkSession::on_tcp_client);
+    slots.connect(tcp_srv->sig_client(), this, &NetworkSession::on_tcp_client);
 }
         
-NetworkNode *NetworkSession::build_node (NetworkTCPTransport *tcp_client, NetworkUDP *udp, const NetworkAddress &addr, , enum NetworkNodeType type) {
+NetworkNode *NetworkSession::build_node (NetworkTCPTransport *tcp, NetworkUDP *udp, const NetworkAddress &addr, enum NetworkNodeType type) {
     // XXX: unused
     (void) type;
 
     // create node
-    return new NetworkNode(*this, tcp_client, addr);
+    return new NetworkNode(*this, tcp, udp, addr);
 }
 
 NetworkNode* NetworkSession::connect (const NetworkAddress &addr) {
@@ -39,9 +41,9 @@
 
     // add to nodes
     nodes[addr] = client_node;
-
-    // bind signals
-    slots.connect(tcp_client->sig_disconnect(), this, &NetworkSession::on_disconnect, client_node);
+    
+    // return the "server" node
+    return client_node;
 }
         
 void NetworkSession::on_tcp_client (NetworkTCPTransport *tcp_client) {
@@ -49,13 +51,13 @@
     NetworkAddress addr = tcp_client->getRemoteAddress();
 
     // build client
-    NetworkNode *client_node = build_node(tcp_client, udp_server, addr, NETWORK_NODE_SERVER_CLIENT);
+    NetworkNode *client_node = build_node(tcp_client, udp_srv, addr, NETWORK_NODE_SERVER_CLIENT);
 
     // add to nodes
     nodes[addr] = client_node;
 
     // fire signals
-    _sig_node_connected(node);
+    _sig_node_connected(client_node);
 }
         
 void NetworkSession::handle_disconnect (NetworkNode *node) {
@@ -64,7 +66,7 @@
 }
         
 void NetworkSession::send_all (NetworkChannelID channel_id, const NetworkPacket &pkt, bool reliable) {
-    send_all_except(NULL, reliable);
+    send_all_except(channel_id, pkt, NULL, reliable);
 }
         
 void NetworkSession::send_all_except (NetworkChannelID channel_id, const NetworkPacket &pkt, const NetworkNode *node, bool reliable) {