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