--- a/src/proto2/NetworkObject.hh Tue Nov 18 22:58:50 2008 +0000
+++ b/src/proto2/NetworkObject.hh Thu Nov 20 19:25:56 2008 +0000
@@ -1,11 +1,20 @@
#ifndef NETWORK_OBJECT_HH
#define NETWORK_OBJECT_HH
+#include "NetworkSession.hh"
+#include "NetworkNode.hh"
+#include "Logger.hh"
+
#include <map>
typedef uint32_t NetworkObjectID;
typedef uint16_t NetworkMessageID;
+// forward-declare
+class NetworkObject;
+class NetworkObject_Client;
+class NetworkObject_Server;
+
class NetworkObjectController {
friend class NetworkObject;
@@ -21,13 +30,13 @@
NetworkObjectController (NetworkSession &session, NetworkChannelID channel_id);
private:
- void on_message (const NetworkPacket &pkt, NetworkNode *node);
+ void on_message (NetworkPacket &pkt, NetworkNode *node);
protected:
- virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *node) = 0;
+ virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node) = 0;
};
-class NetworkObject_ServerController : NetworkObjectController {
+class NetworkObject_ServerController : public NetworkObjectController {
friend class NetworkObject_Server;
private:
@@ -39,24 +48,25 @@
protected:
NetworkObjectID getObjectId (void);
- virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *node);
+ virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node);
};
-class NetworkObject_ClientController : NetworkObjectController {
+class NetworkObject_ClientController : public NetworkObjectController {
friend class NetworkObject_Client;
private:
NetworkNode *server;
- CL_Signal_v3<NetworkObject_Client*, NetworkMessageID, const NetworkPacket&> _sig_create;
+ CL_Signal_v3<NetworkObject_Client*, NetworkMessageID, NetworkPacket&> _sig_create;
- protected:
- virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *node);
-
public:
NetworkObject_ClientController (NetworkSession &session, NetworkChannelID channel_id, NetworkNode *server);
-
- CL_Signal_v3<NetworkObject_Client*, NetworkMessageID, const NetworkPacket&>& sig_create (void) { return _sig_create; }
+
+ protected:
+ virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node);
+
+ public:
+ CL_Signal_v3<NetworkObject_Client*, NetworkMessageID, NetworkPacket&>& sig_create (void) { return _sig_create; }
};
class NetworkObject {
@@ -65,7 +75,7 @@
private:
NetworkObjectID obj_id;
- std::map<NetworkMessageID, CL_Signal_v2<NetworkNode*, const NetworkPacket&>> _map_sig_message;
+ std::map<NetworkMessageID, CL_Signal_v2<NetworkNode*, NetworkPacket&> > _map_sig_message;
protected:
NetworkObject (NetworkObjectID obj_id, NetworkObjectController &controller);
@@ -73,9 +83,11 @@
void buildPacket (NetworkPacket &pkt, NetworkMessageID msg_id, const NetworkPacket &payload);
public:
- CL_Signal_v2<NetworkNode*, const NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; }
+ CL_Signal_v2<NetworkNode*, NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; }
};
+std::ostream& operator<< (std::ostream &s, const NetworkObject &obj);
+
class NetworkObject_Server : public NetworkObject {
friend class NetworkObject_ServerController;
@@ -83,7 +95,7 @@
NetworkObject_ServerController &controller;
public:
- NetworkObject_Server (NetworkObjectController &controller);
+ NetworkObject_Server (NetworkObject_ServerController &controller);
void send_to (NetworkNode *dst, NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true);
void send_all (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true);
@@ -101,6 +113,6 @@
public:
void send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true);
-}
+};
#endif /* NETWORK_OBJECT_HH */