src/proto2/NetworkNode.hh
author terom
Thu, 20 Nov 2008 20:27:12 +0000
branchno-netsession
changeset 37 ed2957490bbf
parent 36 785d220fc6b7
permissions -rw-r--r--
compile step complete
#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 */