src/Network/Session.cc
changeset 431 c6d7272a164b
parent 381 9b35bc329d23
--- a/src/Network/Session.cc	Mon Jan 26 19:52:52 2009 +0200
+++ b/src/Network/Session.cc	Mon Jan 26 23:03:47 2009 +0200
@@ -47,7 +47,8 @@
     NetworkNode *client_node = build_node(tcp_client, udp_client, remote_address, NETWORK_NODE_CLIENT_SERVER);
 
     // add to nodes
-    nodes[remote_address] = client_node;
+    node_map[remote_address] = client_node;
+    node_list.push_back(client_node);
 
     // connect signals
     slots.connect(udp_client->sig_packet(), this, &NetworkSession::on_udp_packet);
@@ -58,7 +59,8 @@
                 
 void NetworkSession::handle_disconnect (NetworkNode *node) {
     // remove from nodes
-    nodes.erase(node->getRemoteAddress());
+    node_map.erase(node->getRemoteAddress());
+    node_list.remove(node);
 }
         
 void NetworkSession::handle_message (NetworkPacketInput &pkt, NetworkNode *node) {
@@ -77,14 +79,15 @@
     NetworkNode *client_node = build_node(tcp_client, udp_srv, addr, NETWORK_NODE_SERVER_CLIENT);
 
     // add to nodes
-    nodes[addr] = client_node;
+    node_map[addr] = client_node;
+    node_list.push_back(client_node);
     
     // fire signals
     _sig_node_connected(client_node);
 }
         
 void NetworkSession::on_udp_packet (NetworkPacketInput &pkt, const NetworkAddress &addr) {
-    NetworkNode *node = nodes[addr];
+    NetworkNode *node = node_map[addr];
     
     // drop from unknown sources
     if (!node) {
@@ -95,16 +98,8 @@
     // handle
     handle_message(pkt, node);
 }
-       
-void NetworkSession::send_all (NetworkChannelID channel_id, const NetworkPacketBuffer &pkt, bool reliable) {
-    send_all_except(channel_id, pkt, NULL, reliable);
+
+void NetworkSession::write_packet_header (NetworkPacketOutput &pkt, NetworkChannelID channel_id) {
+    pkt.write_uint16(channel_id);
 }
-        
-void NetworkSession::send_all_except (NetworkChannelID channel_id, const NetworkPacketBuffer &pkt, const NetworkNode *node, bool reliable) {
-    for (std::map<NetworkAddress, NetworkNode*>::iterator it = nodes.begin(); it != nodes.end(); it++) {
-        if (it->second == node)
-            continue;
 
-        it->second->send(channel_id, pkt, reliable);
-    }
-}