add NetworkChannelPacket class, and modify NetworkTarget::send/send_raw signature. Add hard-coded DEBUG_ENABLED define
authorTero Marttila <terom@fixme.fi>
Mon, 26 Jan 2009 23:26:44 +0200
changeset 432 82b0f4e55a13
parent 431 c6d7272a164b
child 433 4ee797e09383
add NetworkChannelPacket class, and modify NetworkTarget::send/send_raw signature. Add hard-coded DEBUG_ENABLED define
src/Config.hh
src/Network/Channel.cc
src/Network/Channel.hh
src/Network/Client.cc
src/Network/Message.cc
src/Network/Message.hh
src/Network/Server.cc
src/Network/Target.cc
src/Network/Target.hh
src/config.h.in
--- a/src/Config.hh	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Config.hh	Mon Jan 26 23:26:44 2009 +0200
@@ -56,7 +56,7 @@
 const TimeMS ENGINE_TIMEOUT_MS = 10;
 
 /** Default log output level */
-const LogLevel DEFAULT_LOG_LEVEL = DEBUG;
+const LogLevel DEFAULT_LOG_LEVEL = DEBUG_ENABLED ? DEBUG : INFO;
 
 // @}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Network/Channel.cc	Mon Jan 26 23:26:44 2009 +0200
@@ -0,0 +1,8 @@
+
+#include "Channel.hh"
+
+NetworkChannelPacket::NetworkChannelPacket (NetworkChannelID channel_id) {
+    // write out the channel_id
+    write_uint16(channel_id);
+}
+
--- a/src/Network/Channel.hh	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Channel.hh	Mon Jan 26 23:26:44 2009 +0200
@@ -1,6 +1,7 @@
 #ifndef NETWORK_CHANNEL_HH
 #define NETWORK_CHANNEL_HH
 
+#include "Packet.hh"
 #include "../Types.hh"
 
 /**
@@ -11,5 +12,17 @@
  */
 typedef uint16_t NetworkChannelID;
 
+/**
+ * NetworkPackets that are sent over a NetworkChannel with the proper headers
+ *
+ * XXX: use of NetworkPacket is bad
+ */
+class NetworkChannelPacket : public NetworkPacket {
+    public:
+        /**
+         * Initialize the packet by writing out the appropriate NetworkSession headers
+         */
+        NetworkChannelPacket (NetworkChannelID channel_id);
+};
 
 #endif /* NETWORK_CHANNEL_HH */
--- a/src/Network/Client.cc	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Client.cc	Mon Jan 26 23:26:44 2009 +0200
@@ -348,7 +348,7 @@
     msg.write_uint32(dt);
     
     // send to server
-    client.server.send_raw(msg);
+    client.server.send(msg);
     
     // do not handle locally
 }
--- a/src/Network/Message.cc	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Message.cc	Mon Jan 26 23:26:44 2009 +0200
@@ -1,10 +1,9 @@
 
 #include "Message.hh"
 
-NetworkMessage::NetworkMessage (NetworkObject &obj, NetworkMessageID msg_id) {
-    // write the netsession channel ID header
-    obj.controller.session.write_packet_header(*this, obj.controller.channel_id);
-
+NetworkMessage::NetworkMessage (NetworkObject &obj, NetworkMessageID msg_id) :
+    NetworkChannelPacket(obj.controller.channel_id)
+{
     // write the NetworkObject header
     write_uint32(obj.obj_id);
     write_uint16(msg_id);
--- a/src/Network/Message.hh	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Message.hh	Mon Jan 26 23:26:44 2009 +0200
@@ -7,13 +7,13 @@
  * NetworkPacket for use with NetworkObjects
  */
 
-#include "Packet.hh"
+#include "Channel.hh"
 #include "Object.hh"
 
 /**
  * NetworkMessages are NetworkPackets that are related to some specfic NetworkObject and its NetworkObjectController.
  */
-class NetworkMessage : public NetworkPacket {
+class NetworkMessage : public NetworkChannelPacket {
     public:
         /**
          * Create a message of the given type to be sent on the given object
--- a/src/Network/Server.cc	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Server.cc	Mon Jan 26 23:26:44 2009 +0200
@@ -101,7 +101,7 @@
     // the initial NETMSG_PLAYER_HELLO
     NetworkMessage hello_msg(*this, NETMSG_SERVER_HELLO);
     hello_msg.write_vector(getPosition());
-    node.send_raw(hello_msg);
+    node.send(hello_msg);
 
     // sync other players
     for (std::list<NetworkServerPlayer*>::iterator it = server.players.begin(); it != server.players.end(); it++) {
@@ -115,7 +115,7 @@
         player_msg.write_vector(player->getPosition());
         
         // send message to client
-        node.send_raw(player_msg);
+        node.send(player_msg);
 
         // XXX: send rope info...
     }
@@ -133,7 +133,7 @@
     // broadcast NETMSG_PLAYER_JOIN to all clients except current
     NetworkMessage join_msg(*this, NETMSG_PLAYER_JOIN);
     join_msg.write_vector(getPosition());
-    server.netsession.all_nodes_except(node).send_raw(join_msg);
+    server.netsession.all_nodes_except(node).send(join_msg);
 
     Engine::log(INFO, "net.server") << "Player joined: " << this << " from " << node.getRemoteAddress();
 }
@@ -148,7 +148,7 @@
     msg.write_float32(radius);
     
     // broadcast packet
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 
     // and carry out the actual dig on the server as well
     Player::handleDig(position, radius);
@@ -173,7 +173,7 @@
     msg.write_uint8(weaponIndex);
     
     // XXX: only tell the client itself?
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
     
     // pass through
     Player::handleChangeWeapon(weaponIndex);
@@ -190,7 +190,7 @@
         msg.write_vector(rope.getVelocity());
         msg.write_float32(rope.getLength());
         
-        server.netsession.all_nodes().send_raw(msg);
+        server.netsession.all_nodes().send(msg);
        
         } break;
 
@@ -207,14 +207,14 @@
         msg.write_float32(rope.getLength());
         controller.write_object(msg, player);    // may be NULL
         
-        server.netsession.all_nodes().send_raw(msg);
+        server.netsession.all_nodes().send(msg);
 
         } break;
     
     case ROPE_FOLDED: {
         NetworkMessage msg(*this, NETMSG_PLAYER_ROPE_RELEASED);
 
-        server.netsession.all_nodes().send_raw(msg);
+        server.netsession.all_nodes().send(msg);
 
         } break;
     }
@@ -227,7 +227,7 @@
     msg.write_float32(length);
         
     // send packet
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 }
 
 void NetworkServerPlayer::spawn (Vector position) {
@@ -239,7 +239,7 @@
     Engine::log(DEBUG, "server_player.spawn") << this << ": position=" << position;
     
     // send packet
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
     
     // super
     Player::spawn(position);
@@ -251,7 +251,7 @@
     Engine::log(DEBUG, "server_player.die") << this;
     
     // send packet
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 
     // super
     Player::die(start_timer);
@@ -266,7 +266,7 @@
     server.handle_disconnect(this);
     
     // tell other clients
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 
     // XXX: free
 //    delete this;
@@ -306,7 +306,7 @@
 
 //    Engine::log(INFO, "server_player.send_position_update") << "obj=" << obj << " -> " << position << "+" << velocity << " [" << flags << "]";
 
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 }
 
 /* 
@@ -325,7 +325,7 @@
     msg.write_uint8(weapon->getID());
     
     // send to given target
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 }
 
 void NetworkServerProjectile::onDestroy (Vector position, bool removeGround) {
@@ -338,7 +338,7 @@
     msg.write_uint8(removeGround ? NETWORK_PROJECTILE_REMOVE_GROUND : 0);
     
     // broadcast packet
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 
     // XXX: leak obj, not yet implemented:  obj.destory();
     
@@ -359,7 +359,7 @@
     controller.write_object(msg, player);
 
     // send packet
-    server.netsession.all_nodes().send_raw(msg);
+    server.netsession.all_nodes().send(msg);
 
     // super
     Projectile::onHitPlayer(player_ptr);
--- a/src/Network/Target.cc	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Target.cc	Mon Jan 26 23:26:44 2009 +0200
@@ -4,21 +4,12 @@
 #include <cassert>
 
 void NetworkTarget::send_raw (const NetworkPacketBuffer &pkt, bool reliable) {
-    // currently this is the same as send_pkt
+    // just send
     send_pkt(pkt, reliable);
 }
 
-void NetworkTarget::send (NetworkChannelID channel_id, const NetworkPacketBuffer &pkt, bool reliable) {
-    assert(channel_id > 0);
-    
-    // add our header
-    NetworkPacket pkt2;
-    
-    // XXX: not using NetworkSession::write_packet_header
-    pkt2.write_uint16(channel_id);
-    pkt2.write_packet(pkt);
-    
-    // send
-    send_pkt(pkt2, reliable);
+void NetworkTarget::send (const NetworkChannelPacket &pkt, bool reliable) {
+    // just send
+    send_pkt(pkt, reliable);
 }
 
--- a/src/Network/Target.hh	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/Network/Target.hh	Mon Jan 26 23:26:44 2009 +0200
@@ -25,7 +25,7 @@
 
     public:        
         /**
-         * Send a raw packet prepared using write_packet_header. This does not need to copy the packet data around.
+         * Send a raw packet prepared using NetworkSession::write_packet_header. This does not need to copy the packet data around.
          *
          * XXX: this interface needs fixing to be less procedural
          *
@@ -37,16 +37,12 @@
         void send_raw (const NetworkPacketBuffer &pkt, bool reliable = true);
 
         /**
-         * Send the given packet on the given channel to this destination.
+         * Send the given packet to this destination.
          *
-         * Note that this constructs a new *NetworkPacket* containing our header and the given packet, so there
-         * given packet must be small enough to fit.
-         *
-         * @param channel_id the NetworkChannelID to use
-         * @param pkt the NetworkPacket to send on the given channel
+         * @param pkt the NetworkChannelPacket to send
          * @param reliable Whether to use TCP or UDP
          */
-        void send (NetworkChannelID channel_id, const NetworkPacketBuffer &pkt, bool reliable = true);
+        void send (const NetworkChannelPacket &pkt, bool reliable = true);
 };
 
 #endif /* NETWORK_TARGET_HH */
--- a/src/config.h.in	Mon Jan 26 23:03:47 2009 +0200
+++ b/src/config.h.in	Mon Jan 26 23:26:44 2009 +0200
@@ -14,6 +14,13 @@
 extern const char *PROJECT_VERSION, *PROJECT_BUILD_TIMESTAMP;
 
 /**
+ * Debug options
+ *
+ *  * Default log level is DEBUG instead of INFO
+ */
+#define DEBUG_ENABLED false
+
+/**
  * Provide possibility to compile without graphics code.
  *
  * Defined as a boolean value (so use #if GRAPHICS_ENABLED / if (GRAPHICS_ENABLED) )