src/proto2/NetworkObject.hh
branchno-netsession
changeset 37 ed2957490bbf
parent 36 785d220fc6b7
child 38 4189b8bf3a5b
--- a/src/proto2/NetworkObject.hh	Thu Nov 20 19:25:56 2008 +0000
+++ b/src/proto2/NetworkObject.hh	Thu Nov 20 20:27:12 2008 +0000
@@ -17,6 +17,8 @@
 
 class NetworkObjectController {
     friend class NetworkObject;
+    friend class NetworkObject_Server;
+    friend class NetworkObject_Client;
 
     private:
         NetworkSession &session;
@@ -46,7 +48,7 @@
         NetworkObject_ServerController (NetworkSession &session, NetworkChannelID channel_id);
 
     protected:
-        NetworkObjectID getObjectId (void);
+        NetworkObjectID getObjectID (void);
 
         virtual void handle_create (NetworkObjectID obj_id, NetworkMessageID msg_id, NetworkPacket &pkt, NetworkNode *node);
 };
@@ -72,18 +74,15 @@
 class NetworkObject {
     friend class NetworkObjectController;
 
-    private:
+    protected:
         NetworkObjectID obj_id;
 
-        std::map<NetworkMessageID, CL_Signal_v2<NetworkNode*, NetworkPacket&> > _map_sig_message;
+    protected:
+        NetworkObject (NetworkObjectController &controller, NetworkObjectID obj_id);
         
-    protected:
-        NetworkObject (NetworkObjectID obj_id, NetworkObjectController &controller);
+        virtual void handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt) = 0;
 
         void buildPacket (NetworkPacket &pkt, NetworkMessageID msg_id, const NetworkPacket &payload);
-
-    public:
-        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);
@@ -94,12 +93,20 @@
     private:
         NetworkObject_ServerController &controller;
 
+        std::map<NetworkMessageID, CL_Signal_v2<NetworkNode*, NetworkPacket&> > _map_sig_message;
+
     public:
         NetworkObject_Server (NetworkObject_ServerController &controller);
+    
+    protected:
+        virtual void handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt);
 
+    public:
         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);
         void send_all_except (NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *black_sheep, bool reliable = true);
+    
+        CL_Signal_v2<NetworkNode*, NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; }
 };
 
 class NetworkObject_Client : public NetworkObject {
@@ -108,11 +115,17 @@
     private:
         NetworkObject_ClientController &controller;
 
+        std::map<NetworkMessageID, CL_Signal_v1<NetworkPacket&> > _map_sig_message;
+
     protected:
-        NetworkObject_Client (NetworkObject_ClientController &controller, NetworkNode *server, NetworkObjectID id);
+        NetworkObject_Client (NetworkObject_ClientController &controller, NetworkObjectID id);
+        
+        virtual void handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt);
 
     public:
         void send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true);
+        
+        CL_Signal_v1<NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; }
 };
 
 #endif /* NETWORK_OBJECT_HH */