mirror of
https://github.com/glest/glest-source.git
synced 2025-08-13 03:44:00 +02:00
Fixed the god-awful indentation
This commit is contained in:
@@ -13,8 +13,8 @@
|
||||
#define _SHARED_PLATFORMCOMMON_IRCTHREAD_H_
|
||||
|
||||
#ifdef WIN32
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
#include "base_thread.h"
|
||||
@@ -30,116 +30,154 @@ typedef struct irc_session_s irc_session_t;
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace Shared { namespace PlatformCommon {
|
||||
namespace Shared {
|
||||
namespace PlatformCommon {
|
||||
|
||||
// =====================================================
|
||||
// class IRCThreadThread
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class IRCThreadThread
|
||||
// =====================================================
|
||||
|
||||
enum IRCEventType {
|
||||
IRC_evt_chatText = 0,
|
||||
IRC_evt_exitThread = 1
|
||||
};
|
||||
enum IRCEventType {
|
||||
IRC_evt_chatText = 0,
|
||||
IRC_evt_exitThread = 1
|
||||
};
|
||||
|
||||
void normalizeNick(char *nick);
|
||||
void normalizeNick(char *nick);
|
||||
|
||||
class IRCCallbackInterface {
|
||||
public:
|
||||
virtual void IRC_CallbackEvent(IRCEventType evt, const char* origin, const char **params, unsigned int count) = 0;
|
||||
class IRCCallbackInterface {
|
||||
public:
|
||||
virtual void IRC_CallbackEvent(IRCEventType evt, const char* origin, const char **params, unsigned int count) = 0;
|
||||
|
||||
virtual ~IRCCallbackInterface() {}
|
||||
};
|
||||
virtual ~IRCCallbackInterface() {
|
||||
}
|
||||
};
|
||||
|
||||
class IRCThread : public BaseThread
|
||||
{
|
||||
public:
|
||||
static bool debugEnabled;
|
||||
protected:
|
||||
static const char *globalCacheContainerName;
|
||||
class IRCThread : public BaseThread {
|
||||
public:
|
||||
static bool debugEnabled;
|
||||
protected:
|
||||
static const char *globalCacheContainerName;
|
||||
|
||||
std::vector<string> argv;
|
||||
std::vector<string> argv;
|
||||
|
||||
Mutex mutexIRCSession;
|
||||
irc_session_t *ircSession;
|
||||
Mutex mutexIRCSession;
|
||||
irc_session_t *ircSession;
|
||||
|
||||
string execute_cmd_onconnect;
|
||||
//string password;
|
||||
string username;
|
||||
string channel;
|
||||
string nick;
|
||||
string execute_cmd_onconnect;
|
||||
//string password;
|
||||
string username;
|
||||
string channel;
|
||||
string nick;
|
||||
|
||||
string playerName;
|
||||
string glestVersionString;
|
||||
string playerName;
|
||||
string glestVersionString;
|
||||
|
||||
bool hasJoinedChannel;
|
||||
bool hasJoinedChannel;
|
||||
|
||||
Mutex mutexEventDataDone;
|
||||
bool eventDataDone;
|
||||
Mutex mutexEventDataDone;
|
||||
bool eventDataDone;
|
||||
|
||||
Mutex mutexNickList;
|
||||
time_t lastNickListUpdate;
|
||||
std::vector<string> eventData;
|
||||
Mutex mutexNickList;
|
||||
time_t lastNickListUpdate;
|
||||
std::vector<string> eventData;
|
||||
|
||||
Mutex mutexIRCCB;
|
||||
IRCCallbackInterface *callbackObj;
|
||||
Mutex mutexIRCCB;
|
||||
IRCCallbackInterface *callbackObj;
|
||||
|
||||
bool wantToLeaveChannel;
|
||||
bool wantToLeaveChannel;
|
||||
|
||||
int irc_run_session(irc_session_t * session);
|
||||
int irc_run_session(irc_session_t * session);
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
IRCThread(const std::vector<string> &argv,IRCCallbackInterface *callbackObj);
|
||||
virtual ~IRCThread();
|
||||
virtual void execute();
|
||||
virtual void signalQuit();
|
||||
virtual bool shutdownAndWait();
|
||||
IRCThread(const std::vector<string> &argv, IRCCallbackInterface *callbackObj);
|
||||
virtual ~IRCThread();
|
||||
virtual void execute();
|
||||
virtual void signalQuit();
|
||||
virtual bool shutdownAndWait();
|
||||
|
||||
static void setGlobalCacheContainerName(const char *name) { globalCacheContainerName = name; }
|
||||
static void setGlobalCacheContainerName(const char *name) {
|
||||
globalCacheContainerName = name;
|
||||
}
|
||||
|
||||
void setPlayerName(string value) { playerName = value; }
|
||||
void setGlestVersionString(string value) { glestVersionString = value; }
|
||||
string getPlayerName() const { return playerName; }
|
||||
void setPlayerName(string value) {
|
||||
playerName = value;
|
||||
}
|
||||
void setGlestVersionString(string value) {
|
||||
glestVersionString = value;
|
||||
}
|
||||
string getPlayerName() const {
|
||||
return playerName;
|
||||
}
|
||||
|
||||
bool getWantToLeaveChannel() const { return wantToLeaveChannel; }
|
||||
bool getWantToLeaveChannel() const {
|
||||
return wantToLeaveChannel;
|
||||
}
|
||||
|
||||
void SendIRCCmdMessage(string target, string msg);
|
||||
std::vector<string> getNickList();
|
||||
bool isConnected(bool mutexLockRequired=true);
|
||||
void SendIRCCmdMessage(string target, string msg);
|
||||
std::vector<string> getNickList();
|
||||
bool isConnected(bool mutexLockRequired = true);
|
||||
|
||||
std::vector<string> GetIRCConnectedNickList(string target, bool waitForCompletion);
|
||||
std::vector<string> GetIRCConnectedNickList(string target, bool waitForCompletion);
|
||||
|
||||
bool getEventDataDone();
|
||||
void setEventDataDone(bool value);
|
||||
bool getEventDataDone();
|
||||
void setEventDataDone(bool value);
|
||||
|
||||
bool getHasJoinedChannel() const { return hasJoinedChannel; }
|
||||
void setHasJoinedChannel(bool value) { hasJoinedChannel=value; }
|
||||
bool getHasJoinedChannel() const {
|
||||
return hasJoinedChannel;
|
||||
}
|
||||
void setHasJoinedChannel(bool value) {
|
||||
hasJoinedChannel = value;
|
||||
}
|
||||
|
||||
time_t getLastNickListUpdate() const { return lastNickListUpdate; }
|
||||
void setLastNickListUpdate(time_t value) { lastNickListUpdate = value;}
|
||||
time_t getLastNickListUpdate() const {
|
||||
return lastNickListUpdate;
|
||||
}
|
||||
void setLastNickListUpdate(time_t value) {
|
||||
lastNickListUpdate = value;
|
||||
}
|
||||
|
||||
string getChannel() const { return channel;}
|
||||
string getNick() const { return nick;}
|
||||
string getChannel() const {
|
||||
return channel;
|
||||
}
|
||||
string getNick() const {
|
||||
return nick;
|
||||
}
|
||||
|
||||
string getExecute_cmd_onconnect() const { return execute_cmd_onconnect; }
|
||||
void setExecute_cmd_onconnect(string value) { execute_cmd_onconnect = value; }
|
||||
string getExecute_cmd_onconnect() const {
|
||||
return execute_cmd_onconnect;
|
||||
}
|
||||
void setExecute_cmd_onconnect(string value) {
|
||||
execute_cmd_onconnect = value;
|
||||
}
|
||||
|
||||
std::vector<string> getArgs() const { return argv;}
|
||||
std::vector<string> getArgs() const {
|
||||
return argv;
|
||||
}
|
||||
|
||||
Mutex * getMutexNickList() { return &mutexNickList; }
|
||||
std::vector<string> & getCachedNickList() { return eventData; }
|
||||
void setCachedNickList(std::vector<string> &list) { eventData = list; }
|
||||
Mutex * getMutexNickList() {
|
||||
return &mutexNickList;
|
||||
}
|
||||
std::vector<string> & getCachedNickList() {
|
||||
return eventData;
|
||||
}
|
||||
void setCachedNickList(std::vector<string> &list) {
|
||||
eventData = list;
|
||||
}
|
||||
|
||||
Mutex * getMutexIRCCB() { return &mutexIRCCB; }
|
||||
IRCCallbackInterface * getCallbackObj(bool lockObj=true);
|
||||
void setCallbackObj(IRCCallbackInterface *cb);
|
||||
Mutex * getMutexIRCCB() {
|
||||
return &mutexIRCCB;
|
||||
}
|
||||
IRCCallbackInterface * getCallbackObj(bool lockObj = true);
|
||||
void setCallbackObj(IRCCallbackInterface *cb);
|
||||
|
||||
void joinChannel();
|
||||
void leaveChannel();
|
||||
void connectToHost();
|
||||
void disconnect();
|
||||
};
|
||||
void joinChannel();
|
||||
void leaveChannel();
|
||||
void connectToHost();
|
||||
void disconnect();
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
}
|
||||
}//end namespace
|
||||
|
||||
#endif
|
||||
|
@@ -20,143 +20,147 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace Shared { namespace PlatformCommon {
|
||||
namespace Shared {
|
||||
namespace PlatformCommon {
|
||||
|
||||
// =====================================================
|
||||
// class FTPClientThread
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class FTPClientThread
|
||||
// =====================================================
|
||||
|
||||
enum FTP_Client_ResultType {
|
||||
ftp_crt_SUCCESS = 0,
|
||||
ftp_crt_PARTIALFAIL = 1,
|
||||
ftp_crt_FAIL = 2,
|
||||
ftp_crt_ABORTED = 3,
|
||||
ftp_crt_HOST_NOT_ACCEPTING = 4
|
||||
};
|
||||
enum FTP_Client_ResultType {
|
||||
ftp_crt_SUCCESS = 0,
|
||||
ftp_crt_PARTIALFAIL = 1,
|
||||
ftp_crt_FAIL = 2,
|
||||
ftp_crt_ABORTED = 3,
|
||||
ftp_crt_HOST_NOT_ACCEPTING = 4
|
||||
};
|
||||
|
||||
enum FTP_Client_CallbackType {
|
||||
ftp_cct_Map = 0,
|
||||
ftp_cct_Tileset = 1,
|
||||
ftp_cct_Techtree = 2,
|
||||
ftp_cct_Scenario = 3,
|
||||
ftp_cct_File = 4,
|
||||
ftp_cct_TempFile = 5,
|
||||
ftp_cct_DownloadProgress = 6,
|
||||
ftp_cct_ExtractProgress = 7
|
||||
};
|
||||
enum FTP_Client_CallbackType {
|
||||
ftp_cct_Map = 0,
|
||||
ftp_cct_Tileset = 1,
|
||||
ftp_cct_Techtree = 2,
|
||||
ftp_cct_Scenario = 3,
|
||||
ftp_cct_File = 4,
|
||||
ftp_cct_TempFile = 5,
|
||||
ftp_cct_DownloadProgress = 6,
|
||||
ftp_cct_ExtractProgress = 7
|
||||
};
|
||||
|
||||
class FTPClientCallbackInterface {
|
||||
public:
|
||||
virtual ~FTPClientCallbackInterface() {}
|
||||
struct FtpProgressStats {
|
||||
double download_total;
|
||||
double download_now;
|
||||
double upload_total;
|
||||
double upload_now;
|
||||
string currentFilename;
|
||||
FTP_Client_CallbackType downloadType;
|
||||
};
|
||||
class FTPClientCallbackInterface {
|
||||
public:
|
||||
virtual ~FTPClientCallbackInterface() {
|
||||
}
|
||||
struct FtpProgressStats {
|
||||
double download_total;
|
||||
double download_now;
|
||||
double upload_total;
|
||||
double upload_now;
|
||||
string currentFilename;
|
||||
FTP_Client_CallbackType downloadType;
|
||||
};
|
||||
|
||||
virtual void FTPClient_CallbackEvent(string itemName,
|
||||
FTP_Client_CallbackType type,
|
||||
pair<FTP_Client_ResultType,string> result,
|
||||
void *userdata) = 0;
|
||||
};
|
||||
virtual void FTPClient_CallbackEvent(string itemName,
|
||||
FTP_Client_CallbackType type,
|
||||
pair<FTP_Client_ResultType, string> result,
|
||||
void *userdata) = 0;
|
||||
};
|
||||
|
||||
class FTPClientThread : public BaseThread, public ShellCommandOutputCallbackInterface
|
||||
{
|
||||
protected:
|
||||
int portNumber;
|
||||
string serverUrl;
|
||||
FTPClientCallbackInterface *pCBObject;
|
||||
std::pair<string,string> mapsPath;
|
||||
std::pair<string,string> tilesetsPath;
|
||||
std::pair<string,string> techtreesPath;
|
||||
std::pair<string,string> scenariosPath;
|
||||
string tempFilesPath;
|
||||
class FTPClientThread : public BaseThread, public ShellCommandOutputCallbackInterface {
|
||||
protected:
|
||||
int portNumber;
|
||||
string serverUrl;
|
||||
FTPClientCallbackInterface *pCBObject;
|
||||
std::pair<string, string> mapsPath;
|
||||
std::pair<string, string> tilesetsPath;
|
||||
std::pair<string, string> techtreesPath;
|
||||
std::pair<string, string> scenariosPath;
|
||||
string tempFilesPath;
|
||||
|
||||
Mutex mutexMapFileList;
|
||||
vector<pair<string,string> > mapFileList;
|
||||
Mutex mutexMapFileList;
|
||||
vector<pair<string, string> > mapFileList;
|
||||
|
||||
Mutex mutexTilesetList;
|
||||
vector<pair<string,string> > tilesetList;
|
||||
Mutex mutexTilesetList;
|
||||
vector<pair<string, string> > tilesetList;
|
||||
|
||||
Mutex mutexTechtreeList;
|
||||
vector<pair<string,string> > techtreeList;
|
||||
Mutex mutexTechtreeList;
|
||||
vector<pair<string, string> > techtreeList;
|
||||
|
||||
Mutex mutexScenarioList;
|
||||
vector<pair<string,string> > scenarioList;
|
||||
Mutex mutexScenarioList;
|
||||
vector<pair<string, string> > scenarioList;
|
||||
|
||||
Mutex mutexFileList;
|
||||
vector<pair<string,string> > fileList;
|
||||
Mutex mutexFileList;
|
||||
vector<pair<string, string> > fileList;
|
||||
|
||||
Mutex mutexTempFileList;
|
||||
vector<pair<string,string> > tempFileList;
|
||||
Mutex mutexTempFileList;
|
||||
vector<pair<string, string> > tempFileList;
|
||||
|
||||
void getMapFromServer(pair<string,string> mapFilename);
|
||||
pair<FTP_Client_ResultType,string> getMapFromServer(pair<string,string> mapFileName, string ftpUser, string ftpUserPassword);
|
||||
void getMapFromServer(pair<string, string> mapFilename);
|
||||
pair<FTP_Client_ResultType, string> getMapFromServer(pair<string, string> mapFileName, string ftpUser, string ftpUserPassword);
|
||||
|
||||
void getTilesetFromServer(pair<string,string> tileSetName);
|
||||
pair<FTP_Client_ResultType,string> getTilesetFromServer(pair<string,string> tileSetName, string tileSetNameSubfolder, string ftpUser, string ftpUserPassword, bool findArchive);
|
||||
void getTilesetFromServer(pair<string, string> tileSetName);
|
||||
pair<FTP_Client_ResultType, string> getTilesetFromServer(pair<string, string> tileSetName, string tileSetNameSubfolder, string ftpUser, string ftpUserPassword, bool findArchive);
|
||||
|
||||
void getTechtreeFromServer(pair<string,string> techtreeName);
|
||||
pair<FTP_Client_ResultType,string> getTechtreeFromServer(pair<string,string> techtreeName, string ftpUser, string ftpUserPassword);
|
||||
void getTechtreeFromServer(pair<string, string> techtreeName);
|
||||
pair<FTP_Client_ResultType, string> getTechtreeFromServer(pair<string, string> techtreeName, string ftpUser, string ftpUserPassword);
|
||||
|
||||
void getScenarioFromServer(pair<string,string> fileName);
|
||||
pair<FTP_Client_ResultType,string> getScenarioInternalFromServer(pair<string,string> fileName);
|
||||
void getScenarioFromServer(pair<string, string> fileName);
|
||||
pair<FTP_Client_ResultType, string> getScenarioInternalFromServer(pair<string, string> fileName);
|
||||
|
||||
void getFileFromServer(pair<string,string> fileName);
|
||||
pair<FTP_Client_ResultType,string> getFileInternalFromServer(pair<string,string> fileName);
|
||||
void getFileFromServer(pair<string, string> fileName);
|
||||
pair<FTP_Client_ResultType, string> getFileInternalFromServer(pair<string, string> fileName);
|
||||
|
||||
void getTempFileFromServer(pair<string,string> fileName);
|
||||
pair<FTP_Client_ResultType,string> getTempFileInternalFromServer(pair<string,string> fileName);
|
||||
void getTempFileFromServer(pair<string, string> fileName);
|
||||
pair<FTP_Client_ResultType, string> getTempFileInternalFromServer(pair<string, string> fileName);
|
||||
|
||||
Mutex mutexProgressMutex;
|
||||
Mutex mutexProgressMutex;
|
||||
|
||||
string fileArchiveExtension;
|
||||
string fileArchiveExtractCommand;
|
||||
string fileArchiveExtractCommandParameters;
|
||||
int fileArchiveExtractCommandSuccessResult;
|
||||
string fileArchiveExtension;
|
||||
string fileArchiveExtractCommand;
|
||||
string fileArchiveExtractCommandParameters;
|
||||
int fileArchiveExtractCommandSuccessResult;
|
||||
|
||||
pair<FTP_Client_ResultType,string> getFileFromServer(FTP_Client_CallbackType downloadType,
|
||||
pair<string,string> fileNameTitle,
|
||||
string remotePath, string destFileSaveAs, string ftpUser,
|
||||
string ftpUserPassword, vector <string> *wantDirListOnly=NULL);
|
||||
pair<FTP_Client_ResultType, string> getFileFromServer(FTP_Client_CallbackType downloadType,
|
||||
pair<string, string> fileNameTitle,
|
||||
string remotePath, string destFileSaveAs, string ftpUser,
|
||||
string ftpUserPassword, vector <string> *wantDirListOnly = NULL);
|
||||
|
||||
string shellCommandCallbackUserData;
|
||||
virtual void * getShellCommandOutput_UserData(string cmd);
|
||||
virtual void ShellCommandOutput_CallbackEvent(string cmd,char *output,void *userdata);
|
||||
string shellCommandCallbackUserData;
|
||||
virtual void * getShellCommandOutput_UserData(string cmd);
|
||||
virtual void ShellCommandOutput_CallbackEvent(string cmd, char *output, void *userdata);
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
FTPClientThread(int portNumber,string serverUrl,
|
||||
std::pair<string,string> mapsPath,
|
||||
std::pair<string,string> tilesetsPath,
|
||||
std::pair<string,string> techtreesPath,
|
||||
std::pair<string,string> scenariosPath,
|
||||
FTPClientCallbackInterface *pCBObject,
|
||||
string fileArchiveExtension,
|
||||
string fileArchiveExtractCommand,
|
||||
string fileArchiveExtractCommandParameters,
|
||||
int fileArchiveExtractCommandSuccessResult,
|
||||
string tempFilesPath);
|
||||
virtual void execute();
|
||||
virtual void signalQuit();
|
||||
virtual bool shutdownAndWait();
|
||||
FTPClientThread(int portNumber, string serverUrl,
|
||||
std::pair<string, string> mapsPath,
|
||||
std::pair<string, string> tilesetsPath,
|
||||
std::pair<string, string> techtreesPath,
|
||||
std::pair<string, string> scenariosPath,
|
||||
FTPClientCallbackInterface *pCBObject,
|
||||
string fileArchiveExtension,
|
||||
string fileArchiveExtractCommand,
|
||||
string fileArchiveExtractCommandParameters,
|
||||
int fileArchiveExtractCommandSuccessResult,
|
||||
string tempFilesPath);
|
||||
virtual void execute();
|
||||
virtual void signalQuit();
|
||||
virtual bool shutdownAndWait();
|
||||
|
||||
void addMapToRequests(string mapFilename,string URL="");
|
||||
void addTilesetToRequests(string tileSetName,string URL="");
|
||||
void addTechtreeToRequests(string techtreeName,string URL="");
|
||||
void addScenarioToRequests(string fileName,string URL="");
|
||||
void addFileToRequests(string fileName,string URL="");
|
||||
void addTempFileToRequests(string fileName,string URL="");
|
||||
void addMapToRequests(string mapFilename, string URL = "");
|
||||
void addTilesetToRequests(string tileSetName, string URL = "");
|
||||
void addTechtreeToRequests(string techtreeName, string URL = "");
|
||||
void addScenarioToRequests(string fileName, string URL = "");
|
||||
void addFileToRequests(string fileName, string URL = "");
|
||||
void addTempFileToRequests(string fileName, string URL = "");
|
||||
|
||||
FTPClientCallbackInterface * getCallBackObject();
|
||||
void setCallBackObject(FTPClientCallbackInterface *value);
|
||||
FTPClientCallbackInterface * getCallBackObject();
|
||||
void setCallBackObject(FTPClientCallbackInterface *value);
|
||||
|
||||
Mutex * getProgressMutex() { return &mutexProgressMutex; }
|
||||
};
|
||||
Mutex * getProgressMutex() {
|
||||
return &mutexProgressMutex;
|
||||
}
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
}
|
||||
}//end namespace
|
||||
|
||||
#endif
|
||||
|
@@ -13,8 +13,8 @@
|
||||
#define _SHARED_PLATFORMCOMMON_MINIFTPSERVERTHREAD_H_
|
||||
|
||||
#ifdef WIN32
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
#include "base_thread.h"
|
||||
@@ -27,47 +27,50 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace Shared { namespace PlatformCommon {
|
||||
namespace Shared {
|
||||
namespace PlatformCommon {
|
||||
|
||||
// =====================================================
|
||||
// class FTPServerThread
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class FTPServerThread
|
||||
// =====================================================
|
||||
|
||||
class FTPServerThread : public BaseThread
|
||||
{
|
||||
protected:
|
||||
std::pair<string,string> mapsPath;
|
||||
std::pair<string,string> tilesetsPath;
|
||||
std::pair<string,string> techtreesPath;
|
||||
string tempFilesPath;
|
||||
class FTPServerThread : public BaseThread {
|
||||
protected:
|
||||
std::pair<string, string> mapsPath;
|
||||
std::pair<string, string> tilesetsPath;
|
||||
std::pair<string, string> techtreesPath;
|
||||
string tempFilesPath;
|
||||
|
||||
int portNumber;
|
||||
int maxPlayers;
|
||||
static FTPClientValidationInterface *ftpValidationIntf;
|
||||
int portNumber;
|
||||
int maxPlayers;
|
||||
static FTPClientValidationInterface *ftpValidationIntf;
|
||||
|
||||
bool internetEnabled;
|
||||
bool allowInternetTilesetFileTransfers;
|
||||
bool allowInternetTechtreeFileTransfers;
|
||||
bool internetEnabled;
|
||||
bool allowInternetTilesetFileTransfers;
|
||||
bool allowInternetTechtreeFileTransfers;
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
FTPServerThread(std::pair<string,string> mapsPath,
|
||||
std::pair<string,string> tilesetsPath, std::pair<string,string> techtreesPath,
|
||||
bool internetEnabledFlag,
|
||||
bool allowInternetTilesetFileTransfers, bool allowInternetTechtreeFileTransfers,
|
||||
int portNumber,int maxPlayers, FTPClientValidationInterface *ftpValidationIntf,
|
||||
string tempFilesPath);
|
||||
~FTPServerThread();
|
||||
virtual void execute();
|
||||
virtual void signalQuit();
|
||||
virtual bool shutdownAndWait();
|
||||
FTPServerThread(std::pair<string, string> mapsPath,
|
||||
std::pair<string, string> tilesetsPath, std::pair<string, string> techtreesPath,
|
||||
bool internetEnabledFlag,
|
||||
bool allowInternetTilesetFileTransfers, bool allowInternetTechtreeFileTransfers,
|
||||
int portNumber, int maxPlayers, FTPClientValidationInterface *ftpValidationIntf,
|
||||
string tempFilesPath);
|
||||
~FTPServerThread();
|
||||
virtual void execute();
|
||||
virtual void signalQuit();
|
||||
virtual bool shutdownAndWait();
|
||||
|
||||
void setInternetEnabled(bool value, bool forceChange=false);
|
||||
static void addClientToServerIPAddress(uint32 clientIp,uint32 ServerIp);
|
||||
static FTPClientValidationInterface * getFtpValidationIntf() { return ftpValidationIntf; }
|
||||
void setInternetEnabled(bool value, bool forceChange = false);
|
||||
static void addClientToServerIPAddress(uint32 clientIp, uint32 ServerIp);
|
||||
static FTPClientValidationInterface * getFtpValidationIntf() {
|
||||
return ftpValidationIntf;
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
}
|
||||
}//end namespace
|
||||
|
||||
#endif
|
||||
|
@@ -13,28 +13,28 @@
|
||||
#define _SHARED_PLATFORM_SOCKET_H_
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef __MINGW32__
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
typedef SOCKET PLATFORM_SOCKET;
|
||||
#if defined(_WIN64)
|
||||
#define PLATFORM_SOCKET_FORMAT_TYPE MG_I64U_SPECIFIER
|
||||
#else
|
||||
#define PLATFORM_SOCKET_FORMAT_TYPE "%d"
|
||||
#endif
|
||||
#ifdef __MINGW32__
|
||||
#include <winsock2.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <winsock2.h>
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
typedef int PLATFORM_SOCKET;
|
||||
#define PLATFORM_SOCKET_FORMAT_TYPE "%d"
|
||||
typedef SOCKET PLATFORM_SOCKET;
|
||||
#if defined(_WIN64)
|
||||
#define PLATFORM_SOCKET_FORMAT_TYPE MG_I64U_SPECIFIER
|
||||
#else
|
||||
#define PLATFORM_SOCKET_FORMAT_TYPE "%d"
|
||||
#endif
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
|
||||
typedef int PLATFORM_SOCKET;
|
||||
#define PLATFORM_SOCKET_FORMAT_TYPE "%d"
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
@@ -53,312 +53,345 @@ using std::string;
|
||||
|
||||
using namespace Shared::PlatformCommon;
|
||||
|
||||
namespace Shared { namespace Platform {
|
||||
namespace Shared {
|
||||
namespace Platform {
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#define PLATFORM_SOCKET_TRY_AGAIN WSAEWOULDBLOCK
|
||||
#define PLATFORM_SOCKET_INPROGRESS WSAEINPROGRESS
|
||||
#define PLATFORM_SOCKET_INTERRUPTED WSAEWOULDBLOCK
|
||||
#define PLATFORM_SOCKET_TRY_AGAIN WSAEWOULDBLOCK
|
||||
#define PLATFORM_SOCKET_INPROGRESS WSAEINPROGRESS
|
||||
#define PLATFORM_SOCKET_INTERRUPTED WSAEWOULDBLOCK
|
||||
|
||||
#else
|
||||
|
||||
#define PLATFORM_SOCKET_TRY_AGAIN EAGAIN
|
||||
#define PLATFORM_SOCKET_INPROGRESS EINPROGRESS
|
||||
#define PLATFORM_SOCKET_INTERRUPTED EINTR
|
||||
#define PLATFORM_SOCKET_TRY_AGAIN EAGAIN
|
||||
#define PLATFORM_SOCKET_INPROGRESS EINPROGRESS
|
||||
#define PLATFORM_SOCKET_INTERRUPTED EINTR
|
||||
|
||||
#endif
|
||||
|
||||
// The callback Interface used by the UPNP discovery process
|
||||
class FTPClientValidationInterface {
|
||||
public:
|
||||
virtual int isValidClientType(uint32 clientIp) = 0;
|
||||
virtual int isClientAllowedToGetFile(uint32 clientIp, const char *username, const char *filename) = 0;
|
||||
// The callback Interface used by the UPNP discovery process
|
||||
class FTPClientValidationInterface {
|
||||
public:
|
||||
virtual int isValidClientType(uint32 clientIp) = 0;
|
||||
virtual int isClientAllowedToGetFile(uint32 clientIp, const char *username, const char *filename) = 0;
|
||||
|
||||
virtual ~FTPClientValidationInterface() {}
|
||||
};
|
||||
virtual ~FTPClientValidationInterface() {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// The callback Interface used by the UPNP discovery process
|
||||
class UPNPInitInterface {
|
||||
public:
|
||||
virtual void UPNPInitStatus(bool result) = 0;
|
||||
// The callback Interface used by the UPNP discovery process
|
||||
class UPNPInitInterface {
|
||||
public:
|
||||
virtual void UPNPInitStatus(bool result) = 0;
|
||||
|
||||
virtual ~UPNPInitInterface() {}
|
||||
};
|
||||
virtual ~UPNPInitInterface() {
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// This interface describes the methods a callback object must implement
|
||||
// when signaled with detected servers
|
||||
//
|
||||
class DiscoveredServersInterface {
|
||||
public:
|
||||
virtual void DiscoveredServers(std::vector<string> serverList) = 0;
|
||||
virtual ~DiscoveredServersInterface() {}
|
||||
};
|
||||
//
|
||||
// This interface describes the methods a callback object must implement
|
||||
// when signaled with detected servers
|
||||
//
|
||||
class DiscoveredServersInterface {
|
||||
public:
|
||||
virtual void DiscoveredServers(std::vector<string> serverList) = 0;
|
||||
virtual ~DiscoveredServersInterface() {
|
||||
}
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class IP
|
||||
// =====================================================
|
||||
class Ip {
|
||||
private:
|
||||
unsigned char bytes[4];
|
||||
// =====================================================
|
||||
// class IP
|
||||
// =====================================================
|
||||
class Ip {
|
||||
private:
|
||||
unsigned char bytes[4];
|
||||
|
||||
public:
|
||||
Ip();
|
||||
Ip(unsigned char byte0, unsigned char byte1, unsigned char byte2, unsigned char byte3);
|
||||
Ip(const string& ipString);
|
||||
static void Inet_NtoA(uint32 addr, char * ipbuf);
|
||||
public:
|
||||
Ip();
|
||||
Ip(unsigned char byte0, unsigned char byte1, unsigned char byte2, unsigned char byte3);
|
||||
Ip(const string& ipString);
|
||||
static void Inet_NtoA(uint32 addr, char * ipbuf);
|
||||
|
||||
unsigned char getByte(int byteIndex) {return bytes[byteIndex];}
|
||||
string getString() const;
|
||||
};
|
||||
unsigned char getByte(int byteIndex) {
|
||||
return bytes[byteIndex];
|
||||
}
|
||||
string getString() const;
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class Socket
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class Socket
|
||||
// =====================================================
|
||||
|
||||
#ifdef WIN32
|
||||
class SocketManager{
|
||||
public:
|
||||
SocketManager();
|
||||
~SocketManager();
|
||||
};
|
||||
class SocketManager {
|
||||
public:
|
||||
SocketManager();
|
||||
~SocketManager();
|
||||
};
|
||||
#endif
|
||||
|
||||
class Socket {
|
||||
class Socket {
|
||||
|
||||
protected:
|
||||
//#ifdef WIN32
|
||||
//static SocketManager wsaManager;
|
||||
//#endif
|
||||
PLATFORM_SOCKET sock;
|
||||
time_t lastDebugEvent;
|
||||
static int broadcast_portno;
|
||||
std::string ipAddress;
|
||||
std::string connectedIpAddress;
|
||||
protected:
|
||||
//#ifdef WIN32
|
||||
//static SocketManager wsaManager;
|
||||
//#endif
|
||||
PLATFORM_SOCKET sock;
|
||||
time_t lastDebugEvent;
|
||||
static int broadcast_portno;
|
||||
std::string ipAddress;
|
||||
std::string connectedIpAddress;
|
||||
|
||||
//SimpleTaskThread *pingThread;
|
||||
std::map<string,double> pingCache;
|
||||
time_t lastThreadedPing;
|
||||
//Mutex pingThreadAccessor;
|
||||
//SimpleTaskThread *pingThread;
|
||||
std::map<string, double> pingCache;
|
||||
time_t lastThreadedPing;
|
||||
//Mutex pingThreadAccessor;
|
||||
|
||||
Mutex *dataSynchAccessorRead;
|
||||
Mutex *dataSynchAccessorWrite;
|
||||
Mutex *dataSynchAccessorRead;
|
||||
Mutex *dataSynchAccessorWrite;
|
||||
|
||||
Mutex *inSocketDestructorSynchAccessor;
|
||||
bool inSocketDestructor;
|
||||
Mutex *inSocketDestructorSynchAccessor;
|
||||
bool inSocketDestructor;
|
||||
|
||||
bool isSocketBlocking;
|
||||
time_t lastSocketError;
|
||||
bool isSocketBlocking;
|
||||
time_t lastSocketError;
|
||||
|
||||
static string host_name;
|
||||
static std::vector<string> intfTypes;
|
||||
static string host_name;
|
||||
static std::vector<string> intfTypes;
|
||||
|
||||
public:
|
||||
Socket(PLATFORM_SOCKET sock);
|
||||
Socket();
|
||||
virtual ~Socket();
|
||||
public:
|
||||
Socket(PLATFORM_SOCKET sock);
|
||||
Socket();
|
||||
virtual ~Socket();
|
||||
|
||||
static int getLastSocketError();
|
||||
static const char * getLastSocketErrorText(int *errNumber=NULL);
|
||||
static string getLastSocketErrorFormattedText(int *errNumber=NULL);
|
||||
static int getLastSocketError();
|
||||
static const char * getLastSocketErrorText(int *errNumber = NULL);
|
||||
static string getLastSocketErrorFormattedText(int *errNumber = NULL);
|
||||
|
||||
static void setIntfTypes(std::vector<string> intfTypes) { Socket::intfTypes = intfTypes; }
|
||||
static bool disableNagle;
|
||||
static int DEFAULT_SOCKET_SENDBUF_SIZE;
|
||||
static int DEFAULT_SOCKET_RECVBUF_SIZE;
|
||||
static void setIntfTypes(std::vector<string> intfTypes) {
|
||||
Socket::intfTypes = intfTypes;
|
||||
}
|
||||
static bool disableNagle;
|
||||
static int DEFAULT_SOCKET_SENDBUF_SIZE;
|
||||
static int DEFAULT_SOCKET_RECVBUF_SIZE;
|
||||
|
||||
static int getBroadCastPort() { return broadcast_portno; }
|
||||
static void setBroadCastPort(int value) { broadcast_portno = value; }
|
||||
static std::vector<std::string> getLocalIPAddressList();
|
||||
static int getBroadCastPort() {
|
||||
return broadcast_portno;
|
||||
}
|
||||
static void setBroadCastPort(int value) {
|
||||
broadcast_portno = value;
|
||||
}
|
||||
static std::vector<std::string> getLocalIPAddressList();
|
||||
|
||||
// Int lookup is socket fd while bool result is whether or not that socket was signalled for reading
|
||||
static bool hasDataToRead(std::map<PLATFORM_SOCKET,bool> &socketTriggeredList);
|
||||
static bool hasDataToRead(PLATFORM_SOCKET socket);
|
||||
bool hasDataToRead();
|
||||
// Int lookup is socket fd while bool result is whether or not that socket was signalled for reading
|
||||
static bool hasDataToRead(std::map<PLATFORM_SOCKET, bool> &socketTriggeredList);
|
||||
static bool hasDataToRead(PLATFORM_SOCKET socket);
|
||||
bool hasDataToRead();
|
||||
|
||||
static bool hasDataToReadWithWait(PLATFORM_SOCKET socket,int waitMicroseconds);
|
||||
bool hasDataToReadWithWait(int waitMicroseconds);
|
||||
static bool hasDataToReadWithWait(PLATFORM_SOCKET socket, int waitMicroseconds);
|
||||
bool hasDataToReadWithWait(int waitMicroseconds);
|
||||
|
||||
virtual void disconnectSocket();
|
||||
virtual void disconnectSocket();
|
||||
|
||||
PLATFORM_SOCKET getSocketId() const { return sock; }
|
||||
PLATFORM_SOCKET getSocketId() const {
|
||||
return sock;
|
||||
}
|
||||
|
||||
int getDataToRead(bool wantImmediateReply=false);
|
||||
int send(const void *data, int dataSize);
|
||||
int receive(void *data, int dataSize, bool tryReceiveUntilDataSizeMet);
|
||||
int peek(void *data, int dataSize, bool mustGetData=true,int *pLastSocketError=NULL);
|
||||
int getDataToRead(bool wantImmediateReply = false);
|
||||
int send(const void *data, int dataSize);
|
||||
int receive(void *data, int dataSize, bool tryReceiveUntilDataSizeMet);
|
||||
int peek(void *data, int dataSize, bool mustGetData = true, int *pLastSocketError = NULL);
|
||||
|
||||
void setBlock(bool block);
|
||||
static void setBlock(bool block, PLATFORM_SOCKET socket);
|
||||
bool getBlock();
|
||||
void setBlock(bool block);
|
||||
static void setBlock(bool block, PLATFORM_SOCKET socket);
|
||||
bool getBlock();
|
||||
|
||||
bool isReadable(bool lockMutex=false);
|
||||
bool isWritable(struct timeval *timeVal=NULL,bool lockMutex=false);
|
||||
bool isConnected();
|
||||
bool isReadable(bool lockMutex = false);
|
||||
bool isWritable(struct timeval *timeVal = NULL, bool lockMutex = false);
|
||||
bool isConnected();
|
||||
|
||||
static string getHostName();
|
||||
static string getIp();
|
||||
bool isSocketValid() const;
|
||||
static bool isSocketValid(const PLATFORM_SOCKET *validateSocket);
|
||||
static string getHostName();
|
||||
static string getIp();
|
||||
bool isSocketValid() const;
|
||||
static bool isSocketValid(const PLATFORM_SOCKET *validateSocket);
|
||||
|
||||
static double getAveragePingMS(std::string host, int pingCount=5);
|
||||
float getThreadedPingMS(std::string host);
|
||||
static double getAveragePingMS(std::string host, int pingCount = 5);
|
||||
float getThreadedPingMS(std::string host);
|
||||
|
||||
virtual std::string getIpAddress();
|
||||
virtual void setIpAddress(std::string value) { ipAddress = value; }
|
||||
virtual std::string getIpAddress();
|
||||
virtual void setIpAddress(std::string value) {
|
||||
ipAddress = value;
|
||||
}
|
||||
|
||||
uint32 getConnectedIPAddress(string IP="");
|
||||
uint32 getConnectedIPAddress(string IP = "");
|
||||
|
||||
protected:
|
||||
static void throwException(string str);
|
||||
static void getLocalIPAddressListForPlatform(std::vector<std::string> &ipList);
|
||||
};
|
||||
protected:
|
||||
static void throwException(string str);
|
||||
static void getLocalIPAddressListForPlatform(std::vector<std::string> &ipList);
|
||||
};
|
||||
|
||||
class SafeSocketBlockToggleWrapper {
|
||||
protected:
|
||||
Socket *socket;
|
||||
bool originallyBlocked;
|
||||
bool newBlocked;
|
||||
public:
|
||||
SafeSocketBlockToggleWrapper(Socket *socket, bool toggle);
|
||||
~SafeSocketBlockToggleWrapper();
|
||||
void Restore();
|
||||
};
|
||||
class SafeSocketBlockToggleWrapper {
|
||||
protected:
|
||||
Socket *socket;
|
||||
bool originallyBlocked;
|
||||
bool newBlocked;
|
||||
public:
|
||||
SafeSocketBlockToggleWrapper(Socket *socket, bool toggle);
|
||||
~SafeSocketBlockToggleWrapper();
|
||||
void Restore();
|
||||
};
|
||||
|
||||
class BroadCastClientSocketThread : public BaseThread
|
||||
{
|
||||
private:
|
||||
DiscoveredServersInterface *discoveredServersCB;
|
||||
class BroadCastClientSocketThread : public BaseThread {
|
||||
private:
|
||||
DiscoveredServersInterface *discoveredServersCB;
|
||||
|
||||
public:
|
||||
BroadCastClientSocketThread(DiscoveredServersInterface *cb);
|
||||
virtual void execute();
|
||||
};
|
||||
public:
|
||||
BroadCastClientSocketThread(DiscoveredServersInterface *cb);
|
||||
virtual void execute();
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class ClientSocket
|
||||
// =====================================================
|
||||
class ClientSocket: public Socket {
|
||||
public:
|
||||
ClientSocket();
|
||||
virtual ~ClientSocket();
|
||||
// =====================================================
|
||||
// class ClientSocket
|
||||
// =====================================================
|
||||
class ClientSocket : public Socket {
|
||||
public:
|
||||
ClientSocket();
|
||||
virtual ~ClientSocket();
|
||||
|
||||
void connect(const Ip &ip, int port);
|
||||
static void discoverServers(DiscoveredServersInterface *cb);
|
||||
void connect(const Ip &ip, int port);
|
||||
static void discoverServers(DiscoveredServersInterface *cb);
|
||||
|
||||
static void stopBroadCastClientThread();
|
||||
static void stopBroadCastClientThread();
|
||||
|
||||
protected:
|
||||
protected:
|
||||
|
||||
static BroadCastClientSocketThread *broadCastClientThread;
|
||||
static void startBroadCastClientThread(DiscoveredServersInterface *cb);
|
||||
};
|
||||
static BroadCastClientSocketThread *broadCastClientThread;
|
||||
static void startBroadCastClientThread(DiscoveredServersInterface *cb);
|
||||
};
|
||||
|
||||
class BroadCastSocketThread : public BaseThread
|
||||
{
|
||||
private:
|
||||
Mutex *mutexPauseBroadcast;
|
||||
bool pauseBroadcast;
|
||||
int boundPort;
|
||||
class BroadCastSocketThread : public BaseThread {
|
||||
private:
|
||||
Mutex *mutexPauseBroadcast;
|
||||
bool pauseBroadcast;
|
||||
int boundPort;
|
||||
|
||||
public:
|
||||
BroadCastSocketThread(int boundPort);
|
||||
virtual ~BroadCastSocketThread();
|
||||
virtual void execute();
|
||||
virtual bool canShutdown(bool deleteSelfIfShutdownDelayed=false);
|
||||
public:
|
||||
BroadCastSocketThread(int boundPort);
|
||||
virtual ~BroadCastSocketThread();
|
||||
virtual void execute();
|
||||
virtual bool canShutdown(bool deleteSelfIfShutdownDelayed = false);
|
||||
|
||||
bool getPauseBroadcast();
|
||||
void setPauseBroadcast(bool value);
|
||||
};
|
||||
bool getPauseBroadcast();
|
||||
void setPauseBroadcast(bool value);
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class ServerSocket
|
||||
// =====================================================
|
||||
class ServerSocket: public Socket, public UPNPInitInterface {
|
||||
protected:
|
||||
// =====================================================
|
||||
// class ServerSocket
|
||||
// =====================================================
|
||||
class ServerSocket : public Socket, public UPNPInitInterface {
|
||||
protected:
|
||||
|
||||
bool portBound;
|
||||
int boundPort;
|
||||
string bindSpecificAddress;
|
||||
bool portBound;
|
||||
int boundPort;
|
||||
string bindSpecificAddress;
|
||||
|
||||
static int externalPort;
|
||||
static int ftpServerPort;
|
||||
static int externalPort;
|
||||
static int ftpServerPort;
|
||||
|
||||
static int maxPlayerCount;
|
||||
static int maxPlayerCount;
|
||||
|
||||
virtual void UPNPInitStatus(bool result);
|
||||
BroadCastSocketThread *broadCastThread;
|
||||
void startBroadCastThread();
|
||||
void resumeBroadcast();
|
||||
bool isBroadCastThreadRunning();
|
||||
vector<string> blockIPList;
|
||||
virtual void UPNPInitStatus(bool result);
|
||||
BroadCastSocketThread *broadCastThread;
|
||||
void startBroadCastThread();
|
||||
void resumeBroadcast();
|
||||
bool isBroadCastThreadRunning();
|
||||
vector<string> blockIPList;
|
||||
|
||||
bool basicMode;
|
||||
bool basicMode;
|
||||
|
||||
public:
|
||||
ServerSocket(bool basicMode = false);
|
||||
virtual ~ServerSocket();
|
||||
void bind(int port);
|
||||
void listen(int connectionQueueSize= SOMAXCONN);
|
||||
Socket *accept(bool errorOnFail=true);
|
||||
void stopBroadCastThread();
|
||||
void pauseBroadcast();
|
||||
public:
|
||||
ServerSocket(bool basicMode = false);
|
||||
virtual ~ServerSocket();
|
||||
void bind(int port);
|
||||
void listen(int connectionQueueSize = SOMAXCONN);
|
||||
Socket *accept(bool errorOnFail = true);
|
||||
void stopBroadCastThread();
|
||||
void pauseBroadcast();
|
||||
|
||||
|
||||
void addIPAddressToBlockedList(string value);
|
||||
bool isIPAddressBlocked(string value) const;
|
||||
void removeBlockedIPAddress(string value);
|
||||
void clearBlockedIPAddress();
|
||||
bool hasBlockedIPAddresses() const;
|
||||
void addIPAddressToBlockedList(string value);
|
||||
bool isIPAddressBlocked(string value) const;
|
||||
void removeBlockedIPAddress(string value);
|
||||
void clearBlockedIPAddress();
|
||||
bool hasBlockedIPAddresses() const;
|
||||
|
||||
void setBindPort(int port) { boundPort = port; }
|
||||
int getBindPort() const { return boundPort; }
|
||||
bool isPortBound() const { return portBound; }
|
||||
void setBindPort(int port) {
|
||||
boundPort = port;
|
||||
}
|
||||
int getBindPort() const {
|
||||
return boundPort;
|
||||
}
|
||||
bool isPortBound() const {
|
||||
return portBound;
|
||||
}
|
||||
|
||||
void setBindSpecificAddress(string value) { bindSpecificAddress = value;}
|
||||
void setBindSpecificAddress(string value) {
|
||||
bindSpecificAddress = value;
|
||||
}
|
||||
|
||||
static void setExternalPort(int port) { externalPort = port; }
|
||||
static int getExternalPort() { return externalPort; }
|
||||
static void setExternalPort(int port) {
|
||||
externalPort = port;
|
||||
}
|
||||
static int getExternalPort() {
|
||||
return externalPort;
|
||||
}
|
||||
|
||||
static void setFTPServerPort(int port) { ftpServerPort = port; }
|
||||
static int getFTPServerPort() { return ftpServerPort; }
|
||||
static void setFTPServerPort(int port) {
|
||||
ftpServerPort = port;
|
||||
}
|
||||
static int getFTPServerPort() {
|
||||
return ftpServerPort;
|
||||
}
|
||||
|
||||
virtual void disconnectSocket();
|
||||
virtual void disconnectSocket();
|
||||
|
||||
void NETdiscoverUPnPDevices();
|
||||
void NETdiscoverUPnPDevices();
|
||||
|
||||
static void setMaxPlayerCount(int value) { maxPlayerCount=value; }
|
||||
static void setMaxPlayerCount(int value) {
|
||||
maxPlayerCount = value;
|
||||
}
|
||||
|
||||
static Mutex mutexUpnpdiscoverThread;
|
||||
static SDL_Thread *upnpdiscoverThread;
|
||||
static bool cancelUpnpdiscoverThread;
|
||||
};
|
||||
static Mutex mutexUpnpdiscoverThread;
|
||||
static SDL_Thread *upnpdiscoverThread;
|
||||
static bool cancelUpnpdiscoverThread;
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class UPNP_Tools
|
||||
// =====================================================
|
||||
class UPNP_Tools {
|
||||
// =====================================================
|
||||
// class UPNP_Tools
|
||||
// =====================================================
|
||||
class UPNP_Tools {
|
||||
|
||||
public:
|
||||
public:
|
||||
|
||||
static bool isUPNP;
|
||||
static bool enabledUPNP;
|
||||
static Mutex mutexUPNP;
|
||||
static bool isUPNP;
|
||||
static bool enabledUPNP;
|
||||
static Mutex mutexUPNP;
|
||||
|
||||
static int upnp_init(void *param);
|
||||
static int upnp_init(void *param);
|
||||
|
||||
static bool upnp_add_redirect(int ports[2],bool mutexLock=true);
|
||||
static void upnp_rem_redirect(int ext_port);
|
||||
static bool upnp_add_redirect(int ports[2], bool mutexLock = true);
|
||||
static void upnp_rem_redirect(int ext_port);
|
||||
|
||||
static void NETaddRedirects(std::vector<int> UPNPPortForwardList, bool mutexLock=true);
|
||||
static void NETremRedirects(int ext_port);
|
||||
static void NETaddRedirects(std::vector<int> UPNPPortForwardList, bool mutexLock = true);
|
||||
static void NETremRedirects(int ext_port);
|
||||
|
||||
static void AddUPNPPortForward(int internalPort, int externalPort);
|
||||
static void RemoveUPNPPortForward(int internalPort, int externalPort);
|
||||
};
|
||||
static void AddUPNPPortForward(int internalPort, int externalPort);
|
||||
static void RemoveUPNPPortForward(int internalPort, int externalPort);
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
}
|
||||
}//end namespace
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user