00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef INCLUDE_RSRC_NET_SERVER
00013 #define INCLUDE_RSRC_NET_SERVER
00014
00015 #include "../Surcouche/SurcoucheReseau.h"
00016 #include "../Surcouche/SurcoucheMultitache.h"
00017 #include "../Surcouche/SurcoucheTemp.h"
00018 #include "../Tools/Tools.h"
00019 #include "../Error/Error.h"
00020 #include "NetConnect.h"
00021 #include <vector>
00022
00023 #define NET_LIMIT 100
00024 #define NET_GARBAGE 100
00025 #define NET_WAIT_FULL 10
00026
00027
00028
00029
00030 class NetServer
00031 {
00032 private :
00033 NetConnect *conInfo;
00034 THREAD threadClients;
00035 THREAD threadGarbage;
00036 std::vector<NetConnect *> clients;
00037 ROUTINE routineClient;
00038 unsigned int limit;
00039 SSL_CTX *sslCTX;
00040 string keyFile;
00041 string certifFile;
00042 unsigned int crypt;
00043
00044 public :
00045
00046
00047
00048
00049 NetServer(const char *pKeyFile = NULL, const char *pCertifFile = NULL);
00050
00051
00052
00053 ~NetServer();
00054
00055
00056
00057
00058
00059
00060
00061 void Start(unsigned int iPort, ROUTINE pRoutine, unsigned int iLimit = NET_LIMIT);
00062
00063
00064
00065
00066 void Stop();
00067
00068
00069
00070
00071
00072
00073 inline NetConnect *GetClient(unsigned int iId)
00074 {
00075 for(unsigned int i = 0; i < clients.size(); i++)
00076 if(clients[i]->GetId() == iId)
00077 return clients[i];
00078
00079 return NULL;
00080 };
00081
00082
00083
00084
00085
00086
00087 inline NetConnect *GetClientNo(unsigned int iNo)
00088 {
00089 if(iNo < clients.size())
00090 return clients[iNo];
00091
00092 return NULL;
00093 };
00094
00095
00096
00097
00098
00099 void KillClient(unsigned int iId);
00100
00101
00102
00103
00104
00105 void KillClientNo(unsigned int iNo);
00106
00107
00108
00109
00110
00111 inline unsigned int GetNbClient()
00112 {
00113 return clients.size();
00114 };
00115
00116
00117
00118
00119
00120 inline unsigned int GetLimit()
00121 {
00122 return limit;
00123 };
00124
00125
00126
00127
00128
00129 void WaitClient();
00130
00131
00132
00133
00134
00135 void GarbageClient();
00136 };
00137
00138
00139 #endif
00140