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...
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
     1
#ifndef NETWORKSERVER_HH
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
     2
#define NETWORKSERVER_HH
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
     3
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
     4
#include "Network.hh"
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
     5
#include "GameState.hh"
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
     6
#include "NetworkTCP.hh"
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
     7
#include "NetworkUDP.hh"
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
     8
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
     9
#include <list>
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
    10
#include <map>
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
    11
#include <ClanLib/core.h>
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    12
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
    13
// forward-declare
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    14
class NetworkServerPlayer;
6
faa4e777cc6e fiddle with cmake, fix some compile errors
terom
parents: 5
diff changeset
    15
21
32c6cc55256a change proto2 network code to use CL_NetSession
terom
parents: 14
diff changeset
    16
class NetworkServer : public NetworkCore {
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    17
    friend class NetworkServerPlayer;
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    18
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    19
    private:
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    20
        NetworkTCPServer tcp_server;
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    21
        NetworkUDP udp;
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    22
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    23
        uint16_t pid_pool;
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    24
        
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    25
        std::map<NetworkAddress, NetworkServerPlayer*> players;
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    26
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    27
    public:
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    28
        NetworkServer (GameState &state, const NetworkAddress &listen_addr);
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    29
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    30
    private:
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    31
        void on_client (NetworkTCPTransport *client);
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    32
        void on_packet_udp (const NetworkPacket &pkt, const NetworkAddress &src);
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    33
};
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    34
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    35
class NetworkServerPlayer : public RemotePlayer {
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    36
    private:
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    37
        NetworkServer &server;
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    38
        NetworkTCPTransport *tcp;
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    39
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    40
        CL_SlotContainer slots;
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    41
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    42
        uint16_t pid;
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    43
        
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    44
    public:
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    45
        NetworkServerPlayer (NetworkServer &server, NetworkTCPTransport *tcp, uint16_t pid);
22
b70d30e1b0fe all the network code is now there, although it doesn't quite work
terom
parents: 21
diff changeset
    46
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    47
    private:
32
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    48
        void on_disconnected (void);
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    49
        void on_packet_tcp (const NetworkPacket &pkt);
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    50
2ff929186c90 write some mode code...
terom
parents: 24
diff changeset
    51
        void on_move (const NetworkPacket &pkt);
24
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    52
b81cb670e6b2 the great :retab
terom
parents: 23
diff changeset
    53
        void send_position_update (void);
5
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    54
};
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    55
617813994ab1 move proto/p2 -> src/proto2
terom
parents:
diff changeset
    56
#endif