src/proto2/NetworkServer.hh
author terom
Mon, 10 Nov 2008 18:21:23 +0000
branchno-netsession
changeset 32 2ff929186c90
parent 24 b81cb670e6b2
child 36 785d220fc6b7
permissions -rw-r--r--
write some mode code...
#ifndef NETWORKSERVER_HH
#define NETWORKSERVER_HH

#include "Network.hh"
#include "GameState.hh"
#include "NetworkTCP.hh"
#include "NetworkUDP.hh"

#include <list>
#include <map>
#include <ClanLib/core.h>

// forward-declare
class NetworkServerPlayer;

class NetworkServer : public NetworkCore {
    friend class NetworkServerPlayer;

    private:
        NetworkTCPServer tcp_server;
        NetworkUDP udp;

        uint16_t pid_pool;
        
        std::map<NetworkAddress, NetworkServerPlayer*> players;

    public:
        NetworkServer (GameState &state, const NetworkAddress &listen_addr);

    private:
        void on_client (NetworkTCPTransport *client);
        void on_packet_udp (const NetworkPacket &pkt, const NetworkAddress &src);
};

class NetworkServerPlayer : public RemotePlayer {
    private:
        NetworkServer &server;
        NetworkTCPTransport *tcp;

        CL_SlotContainer slots;

        uint16_t pid;
        
    public:
        NetworkServerPlayer (NetworkServer &server, NetworkTCPTransport *tcp, uint16_t pid);

    private:
        void on_disconnected (void);
        void on_packet_tcp (const NetworkPacket &pkt);

        void on_move (const NetworkPacket &pkt);

        void send_position_update (void);
};

#endif