00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_SERVER_HPP
00026 #define SFML_SERVER_HPP
00027
00029
00031 #include <SFML/Network/Selector.hpp>
00032 #include <SFML/System/Thread.hpp>
00033 #include <list>
00034 #include <limits>
00035
00036 class sfIPAddress;
00037 class sfPacket;
00038
00039
00044 class sfServer : private sfThread
00045 {
00046 public :
00047
00052 virtual ~sfServer();
00053
00061 void Start(unsigned int Port, std::size_t MaxClients = std::numeric_limits<std::size_t>::max());
00062
00067 void Stop();
00068
00076 void SendTo(sfSocketTCP Client, sfPacket& Packet);
00077
00086 void SendToAll(sfPacket& Packet, sfSocketTCP* Exclude = NULL);
00087
00094 void Disconnect(sfSocketTCP Client);
00095
00096 private :
00097
00102 virtual void Run();
00103
00111 virtual void OnClientConnected(const sfIPAddress& Client, sfSocketTCP Socket);
00112
00120 virtual void OnPacketReceived(sfSocketTCP Socket, sfPacket& Packet);
00121
00128 virtual void OnClientDisconnected(sfSocketTCP Socket);
00129
00131
00133 sfSelectorTCP mySelector;
00134 std::list<sfSocketTCP> myClients;
00135 unsigned short myPort;
00136 std::size_t myMaxClients;
00137 bool myIsRunning;
00138 };
00139
00140
00141 #endif // SFML_SERVER_HPP