terom@89: #ifndef NETWORK_NODE_HH terom@89: #define NETWORK_NODE_HH terom@89: terom@89: // forward-declare terom@89: class NetworkNode; terom@89: terom@89: enum NetworkNodeType { terom@89: NETWORK_NODE_SERVER_CLIENT, terom@89: NETWORK_NODE_CLIENT_SERVER terom@89: }; terom@89: terom@89: #include "NetworkTCP.hh" terom@89: #include "NetworkUDP.hh" terom@89: #include "NetworkSession.hh" terom@89: terom@89: class NetworkNode { terom@89: private: terom@89: NetworkSession &session; terom@89: NetworkTCPTransport *tcp; terom@89: NetworkUDP *udp; terom@89: const NetworkAddress address; terom@89: terom@89: CL_SlotContainer slots; terom@89: terom@89: public: terom@89: NetworkNode (NetworkSession &session, NetworkTCPTransport *tcp, NetworkUDP *udp, const NetworkAddress &address); terom@89: terom@89: private: terom@89: NetworkNode (const NetworkNode ©); terom@89: ~NetworkNode (void); terom@89: NetworkNode& operator= (const NetworkNode ©); terom@89: terom@89: void on_disconnect (void); terom@89: terom@89: CL_Signal_v0 _sig_disconnected; terom@89: terom@89: public: terom@89: void send (NetworkChannelID channel_id, const NetworkPacket &pkt, bool reliable = true); terom@89: terom@89: const NetworkAddress& getRemoteAddress (void); terom@89: terom@89: CL_Signal_v0& sig_disconnected (void) { return _sig_disconnected; } terom@89: }; terom@89: terom@89: #endif /* NETWORK_NODE_HH */