src/proto2/NetworkObject.hh
branchno-netsession
changeset 36 785d220fc6b7
parent 34 1ea6554d703e
child 37 ed2957490bbf
--- 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 */