add NetworkChannelPacket class, and modify NetworkTarget::send/send_raw signature. Add hard-coded DEBUG_ENABLED define
--- 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) )