70 }; |
72 }; |
71 |
73 |
72 class NetworkObject { |
74 class NetworkObject { |
73 friend class NetworkObjectController; |
75 friend class NetworkObjectController; |
74 |
76 |
75 private: |
77 protected: |
76 NetworkObjectID obj_id; |
78 NetworkObjectID obj_id; |
77 |
79 |
78 std::map<NetworkMessageID, CL_Signal_v2<NetworkNode*, NetworkPacket&> > _map_sig_message; |
80 protected: |
|
81 NetworkObject (NetworkObjectController &controller, NetworkObjectID obj_id); |
79 |
82 |
80 protected: |
83 virtual void handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt) = 0; |
81 NetworkObject (NetworkObjectID obj_id, NetworkObjectController &controller); |
|
82 |
84 |
83 void buildPacket (NetworkPacket &pkt, NetworkMessageID msg_id, const NetworkPacket &payload); |
85 void buildPacket (NetworkPacket &pkt, NetworkMessageID msg_id, const NetworkPacket &payload); |
84 |
|
85 public: |
|
86 CL_Signal_v2<NetworkNode*, NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; } |
|
87 }; |
86 }; |
88 |
87 |
89 std::ostream& operator<< (std::ostream &s, const NetworkObject &obj); |
88 std::ostream& operator<< (std::ostream &s, const NetworkObject &obj); |
90 |
89 |
91 class NetworkObject_Server : public NetworkObject { |
90 class NetworkObject_Server : public NetworkObject { |
92 friend class NetworkObject_ServerController; |
91 friend class NetworkObject_ServerController; |
93 |
92 |
94 private: |
93 private: |
95 NetworkObject_ServerController &controller; |
94 NetworkObject_ServerController &controller; |
96 |
95 |
|
96 std::map<NetworkMessageID, CL_Signal_v2<NetworkNode*, NetworkPacket&> > _map_sig_message; |
|
97 |
97 public: |
98 public: |
98 NetworkObject_Server (NetworkObject_ServerController &controller); |
99 NetworkObject_Server (NetworkObject_ServerController &controller); |
|
100 |
|
101 protected: |
|
102 virtual void handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt); |
99 |
103 |
|
104 public: |
100 void send_to (NetworkNode *dst, NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true); |
105 void send_to (NetworkNode *dst, NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true); |
101 void send_all (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true); |
106 void send_all (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true); |
102 void send_all_except (NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *black_sheep, bool reliable = true); |
107 void send_all_except (NetworkMessageID msg_id, const NetworkPacket &pkt, NetworkNode *black_sheep, bool reliable = true); |
|
108 |
|
109 CL_Signal_v2<NetworkNode*, NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; } |
103 }; |
110 }; |
104 |
111 |
105 class NetworkObject_Client : public NetworkObject { |
112 class NetworkObject_Client : public NetworkObject { |
106 friend class NetworkObject_ClientController; |
113 friend class NetworkObject_ClientController; |
107 |
114 |
108 private: |
115 private: |
109 NetworkObject_ClientController &controller; |
116 NetworkObject_ClientController &controller; |
110 |
117 |
|
118 std::map<NetworkMessageID, CL_Signal_v1<NetworkPacket&> > _map_sig_message; |
|
119 |
111 protected: |
120 protected: |
112 NetworkObject_Client (NetworkObject_ClientController &controller, NetworkNode *server, NetworkObjectID id); |
121 NetworkObject_Client (NetworkObject_ClientController &controller, NetworkObjectID id); |
|
122 |
|
123 virtual void handle_packet (NetworkNode *node, NetworkMessageID msg_id, NetworkPacket &pkt); |
113 |
124 |
114 public: |
125 public: |
115 void send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true); |
126 void send (NetworkMessageID msg_id, const NetworkPacket &pkt, bool reliable = true); |
|
127 |
|
128 CL_Signal_v1<NetworkPacket&>& sig_message (NetworkMessageID msg_id) { return _map_sig_message[msg_id]; } |
116 }; |
129 }; |
117 |
130 |
118 #endif /* NETWORK_OBJECT_HH */ |
131 #endif /* NETWORK_OBJECT_HH */ |