src/NetworkNode.hh
author terom
Wed, 03 Dec 2008 19:16:32 +0000
changeset 185 25becd2cb026
permissions -rw-r--r--
that's not a prototype anymore... at least it shouldn't be
#ifndef NETWORK_NODE_HH
#define NETWORK_NODE_HH

// forward-declare
class NetworkNode;

enum NetworkNodeType {
    NETWORK_NODE_SERVER_CLIENT,
    NETWORK_NODE_CLIENT_SERVER
};

#include "NetworkTCP.hh"
#include "NetworkUDP.hh"
#include "NetworkSession.hh"

class NetworkNode {
    private:
        NetworkSession &session;
        NetworkTCPTransport *tcp;
        NetworkUDP *udp;
        const NetworkAddress address;

        CL_SlotContainer slots;
    
    public:
        NetworkNode (NetworkSession &session, NetworkTCPTransport *tcp, NetworkUDP *udp, const NetworkAddress &address);
        
    private:
        NetworkNode (const NetworkNode &copy);
        ~NetworkNode (void);
        NetworkNode& operator= (const NetworkNode &copy);
        
        void on_disconnect (void);
         
        CL_Signal_v0 _sig_disconnected;

    public:
        void send (NetworkChannelID channel_id, const NetworkPacket &pkt, bool reliable = true);

        const NetworkAddress& getRemoteAddress (void);
        
        CL_Signal_v0& sig_disconnected (void) { return _sig_disconnected; }
};

#endif /* NETWORK_NODE_HH */