src/proto2/NetworkServer.hh
branchno-netsession
changeset 32 2ff929186c90
parent 24 b81cb670e6b2
child 36 785d220fc6b7
equal deleted inserted replaced
31:d0d7489d4e8b 32:2ff929186c90
     1 #ifndef NETWORKSERVER_HH
     1 #ifndef NETWORKSERVER_HH
     2 #define NETWORKSERVER_HH
     2 #define NETWORKSERVER_HH
     3 
     3 
     4 #include "Network.hh"
     4 #include "Network.hh"
     5 #include "GameState.hh"
     5 #include "GameState.hh"
       
     6 #include "NetworkTCP.hh"
       
     7 #include "NetworkUDP.hh"
     6 
     8 
     7 #include <list>
     9 #include <list>
     8 #include <map>
    10 #include <map>
     9 #include <ClanLib/core.h>
    11 #include <ClanLib/core.h>
    10 
    12 
    13 
    15 
    14 class NetworkServer : public NetworkCore {
    16 class NetworkServer : public NetworkCore {
    15     friend class NetworkServerPlayer;
    17     friend class NetworkServerPlayer;
    16 
    18 
    17     private:
    19     private:
       
    20         NetworkTCPServer tcp_server;
       
    21         NetworkUDP udp;
       
    22 
    18         uint16_t pid_pool;
    23         uint16_t pid_pool;
    19     
    24         
    20     public:
    25         std::map<NetworkAddress, NetworkServerPlayer*> players;
    21         std::map<CL_NetComputer, NetworkServerPlayer*> players;
       
    22 
    26 
    23     public:
    27     public:
    24         NetworkServer (GameState &state, const std::string &listen_port);
    28         NetworkServer (GameState &state, const NetworkAddress &listen_addr);
    25 
    29 
    26     private:
    30     private:
    27         void on_connect (CL_NetComputer &computer);
    31         void on_client (NetworkTCPTransport *client);
    28         void on_disconnect (CL_NetComputer &computer);
    32         void on_packet_udp (const NetworkPacket &pkt, const NetworkAddress &src);
    29 
       
    30     
       
    31 };
    33 };
    32 
    34 
    33 class NetworkServerPlayer : public RemotePlayer {
    35 class NetworkServerPlayer : public RemotePlayer {
    34     private:
    36     private:
    35         NetworkServer &server;
    37         NetworkServer &server;
    36         CL_NetComputer &computer;
    38         NetworkTCPTransport *tcp;
    37         CL_NetObject_Server obj;
       
    38 
    39 
    39         CL_SlotContainer slots;
    40         CL_SlotContainer slots;
    40 
    41 
    41         uint16_t pid;
    42         uint16_t pid;
    42         
    43         
    43     public:
    44     public:
    44         NetworkServerPlayer (NetworkServer &server, CL_NetComputer &computer, uint16_t pid);
    45         NetworkServerPlayer (NetworkServer &server, NetworkTCPTransport *tcp, uint16_t pid);
    45 
       
    46         void disconnected (void);
       
    47 
    46 
    48     private:
    47     private:
    49         void on_move (CL_NetComputer &from, CL_NetPacket &pkt);
    48         void on_disconnected (void);
       
    49         void on_packet_tcp (const NetworkPacket &pkt);
       
    50 
       
    51         void on_move (const NetworkPacket &pkt);
    50 
    52 
    51         void send_position_update (void);
    53         void send_position_update (void);
    52 };
    54 };
    53 
    55 
    54 #endif
    56 #endif