Fixed the god-awful indentation

This commit is contained in:
mathusummut
2018-05-06 00:01:36 +02:00
parent 643e3820f5
commit 35b7b1f1a6
459 changed files with 204893 additions and 217545 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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