--- 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 */