mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-12 19:28:21 +00:00
Improve chat and Auth
Also change most uses of int to specified lengths.
This commit is contained in:
parent
e78dc0b874
commit
3f1b4339f5
@ -32,6 +32,8 @@ dLogger* SetupLogger();
|
|||||||
void HandlePacket(Packet* packet);
|
void HandlePacket(Packet* packet);
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
constexpr uint32_t authFramerate = mediumFramerate;
|
||||||
|
constexpr uint32_t authFrameDelta = mediumFrameDelta;
|
||||||
Diagnostics::SetProcessName("Auth");
|
Diagnostics::SetProcessName("Auth");
|
||||||
Diagnostics::SetProcessFileName(argv[0]);
|
Diagnostics::SetProcessFileName(argv[0]);
|
||||||
Diagnostics::Initialize();
|
Diagnostics::Initialize();
|
||||||
@ -67,7 +69,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
//Find out the master's IP:
|
//Find out the master's IP:
|
||||||
std::string masterIP;
|
std::string masterIP;
|
||||||
int masterPort = 1500;
|
uint32_t masterPort = 1500;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -79,8 +81,8 @@ int main(int argc, char** argv) {
|
|||||||
delete stmt;
|
delete stmt;
|
||||||
|
|
||||||
//It's safe to pass 'localhost' here, as the IP is only used as the external IP.
|
//It's safe to pass 'localhost' here, as the IP is only used as the external IP.
|
||||||
int maxClients = 50;
|
uint32_t maxClients = 50;
|
||||||
int ourPort = 1001; //LU client is hardcoded to use this for auth port, so I'm making it the default.
|
uint32_t ourPort = 1001; //LU client is hardcoded to use this for auth port, so I'm making it the default.
|
||||||
if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients"));
|
if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients"));
|
||||||
if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str());
|
if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str());
|
||||||
|
|
||||||
@ -89,16 +91,18 @@ int main(int argc, char** argv) {
|
|||||||
//Run it until server gets a kill message from Master:
|
//Run it until server gets a kill message from Master:
|
||||||
auto t = std::chrono::high_resolution_clock::now();
|
auto t = std::chrono::high_resolution_clock::now();
|
||||||
Packet* packet = nullptr;
|
Packet* packet = nullptr;
|
||||||
int framesSinceLastFlush = 0;
|
constexpr uint32_t logFlushTime = 30 * authFramerate; // 30 seconds in frames
|
||||||
int framesSinceMasterDisconnect = 0;
|
constexpr uint32_t sqlPingTime = 10 * 60 * authFramerate; // 10 minutes in frames
|
||||||
int framesSinceLastSQLPing = 0;
|
uint32_t framesSinceLastFlush = 0;
|
||||||
|
uint32_t framesSinceMasterDisconnect = 0;
|
||||||
|
uint32_t framesSinceLastSQLPing = 0;
|
||||||
|
|
||||||
while (!Game::shouldShutdown) {
|
while (!Game::shouldShutdown) {
|
||||||
//Check if we're still connected to master:
|
//Check if we're still connected to master:
|
||||||
if (!Game::server->GetIsConnectedToMaster()) {
|
if (!Game::server->GetIsConnectedToMaster()) {
|
||||||
framesSinceMasterDisconnect++;
|
framesSinceMasterDisconnect++;
|
||||||
|
|
||||||
if (framesSinceMasterDisconnect >= 30)
|
if (framesSinceMasterDisconnect >= authFramerate)
|
||||||
break; //Exit our loop, shut down.
|
break; //Exit our loop, shut down.
|
||||||
} else framesSinceMasterDisconnect = 0;
|
} else framesSinceMasterDisconnect = 0;
|
||||||
|
|
||||||
@ -114,16 +118,16 @@ int main(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Push our log every 30s:
|
//Push our log every 30s:
|
||||||
if (framesSinceLastFlush >= 900) {
|
if (framesSinceLastFlush >= logFlushTime) {
|
||||||
Game::logger->Flush();
|
Game::logger->Flush();
|
||||||
framesSinceLastFlush = 0;
|
framesSinceLastFlush = 0;
|
||||||
} else framesSinceLastFlush++;
|
} else framesSinceLastFlush++;
|
||||||
|
|
||||||
//Every 10 min we ping our sql server to keep it alive hopefully:
|
//Every 10 min we ping our sql server to keep it alive hopefully:
|
||||||
if (framesSinceLastSQLPing >= 40000) {
|
if (framesSinceLastSQLPing >= sqlPingTime) {
|
||||||
//Find out the master's IP for absolutely no reason:
|
//Find out the master's IP for absolutely no reason:
|
||||||
std::string masterIP;
|
std::string masterIP;
|
||||||
int masterPort;
|
uint32_t masterPort;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -138,7 +142,7 @@ int main(int argc, char** argv) {
|
|||||||
} else framesSinceLastSQLPing++;
|
} else framesSinceLastSQLPing++;
|
||||||
|
|
||||||
//Sleep our thread since auth can afford to.
|
//Sleep our thread since auth can afford to.
|
||||||
t += std::chrono::milliseconds(mediumFrameDelta); //Auth can run at a lower "fps"
|
t += std::chrono::milliseconds(authFrameDelta); //Auth can run at a lower "fps"
|
||||||
std::this_thread::sleep_until(t);
|
std::this_thread::sleep_until(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
#include "ChatPacketHandler.h"
|
#include "ChatPacketHandler.h"
|
||||||
|
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
|
|
||||||
|
//RakNet includes:
|
||||||
|
#include "RakNetDefines.h"
|
||||||
namespace Game {
|
namespace Game {
|
||||||
dLogger* logger = nullptr;
|
dLogger* logger = nullptr;
|
||||||
dServer* server = nullptr;
|
dServer* server = nullptr;
|
||||||
@ -28,8 +31,6 @@ namespace Game {
|
|||||||
bool shouldShutdown = false;
|
bool shouldShutdown = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//RakNet includes:
|
|
||||||
#include "RakNetDefines.h"
|
|
||||||
|
|
||||||
dLogger* SetupLogger();
|
dLogger* SetupLogger();
|
||||||
void HandlePacket(Packet* packet);
|
void HandlePacket(Packet* packet);
|
||||||
@ -37,6 +38,8 @@ void HandlePacket(Packet* packet);
|
|||||||
PlayerContainer playerContainer;
|
PlayerContainer playerContainer;
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
constexpr uint32_t chatFramerate = mediumFramerate;
|
||||||
|
constexpr uint32_t chatFrameDelta = mediumFrameDelta;
|
||||||
Diagnostics::SetProcessName("Chat");
|
Diagnostics::SetProcessName("Chat");
|
||||||
Diagnostics::SetProcessFileName(argv[0]);
|
Diagnostics::SetProcessFileName(argv[0]);
|
||||||
Diagnostics::Initialize();
|
Diagnostics::Initialize();
|
||||||
@ -65,7 +68,7 @@ int main(int argc, char** argv) {
|
|||||||
Game::assetManager = new AssetManager(clientPath);
|
Game::assetManager = new AssetManager(clientPath);
|
||||||
} catch (std::runtime_error& ex) {
|
} catch (std::runtime_error& ex) {
|
||||||
Game::logger->Log("ChatServer", "Got an error while setting up assets: %s", ex.what());
|
Game::logger->Log("ChatServer", "Got an error while setting up assets: %s", ex.what());
|
||||||
|
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,7 +90,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
//Find out the master's IP:
|
//Find out the master's IP:
|
||||||
std::string masterIP;
|
std::string masterIP;
|
||||||
int masterPort = 1000;
|
uint32_t masterPort = 1000;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -99,8 +102,8 @@ int main(int argc, char** argv) {
|
|||||||
delete stmt;
|
delete stmt;
|
||||||
|
|
||||||
//It's safe to pass 'localhost' here, as the IP is only used as the external IP.
|
//It's safe to pass 'localhost' here, as the IP is only used as the external IP.
|
||||||
int maxClients = 50;
|
uint32_t maxClients = 50;
|
||||||
int ourPort = 1501;
|
uint32_t ourPort = 1501;
|
||||||
if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients"));
|
if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients"));
|
||||||
if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str());
|
if (Game::config->GetValue("port") != "") ourPort = std::atoi(Game::config->GetValue("port").c_str());
|
||||||
|
|
||||||
@ -111,16 +114,18 @@ int main(int argc, char** argv) {
|
|||||||
//Run it until server gets a kill message from Master:
|
//Run it until server gets a kill message from Master:
|
||||||
auto t = std::chrono::high_resolution_clock::now();
|
auto t = std::chrono::high_resolution_clock::now();
|
||||||
Packet* packet = nullptr;
|
Packet* packet = nullptr;
|
||||||
int framesSinceLastFlush = 0;
|
constexpr uint32_t logFlushTime = 30 * chatFramerate; // 30 seconds in frames
|
||||||
int framesSinceMasterDisconnect = 0;
|
constexpr uint32_t sqlPingTime = 10 * 60 * chatFramerate; // 10 minutes in frames
|
||||||
int framesSinceLastSQLPing = 0;
|
uint32_t framesSinceLastFlush = 0;
|
||||||
|
uint32_t framesSinceMasterDisconnect = 0;
|
||||||
|
uint32_t framesSinceLastSQLPing = 0;
|
||||||
|
|
||||||
while (!Game::shouldShutdown) {
|
while (!Game::shouldShutdown) {
|
||||||
//Check if we're still connected to master:
|
//Check if we're still connected to master:
|
||||||
if (!Game::server->GetIsConnectedToMaster()) {
|
if (!Game::server->GetIsConnectedToMaster()) {
|
||||||
framesSinceMasterDisconnect++;
|
framesSinceMasterDisconnect++;
|
||||||
|
|
||||||
if (framesSinceMasterDisconnect >= 30)
|
if (framesSinceMasterDisconnect >= chatFramerate)
|
||||||
break; //Exit our loop, shut down.
|
break; //Exit our loop, shut down.
|
||||||
} else framesSinceMasterDisconnect = 0;
|
} else framesSinceMasterDisconnect = 0;
|
||||||
|
|
||||||
@ -136,16 +141,16 @@ int main(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Push our log every 30s:
|
//Push our log every 30s:
|
||||||
if (framesSinceLastFlush >= 900) {
|
if (framesSinceLastFlush >= logFlushTime) {
|
||||||
Game::logger->Flush();
|
Game::logger->Flush();
|
||||||
framesSinceLastFlush = 0;
|
framesSinceLastFlush = 0;
|
||||||
} else framesSinceLastFlush++;
|
} else framesSinceLastFlush++;
|
||||||
|
|
||||||
//Every 10 min we ping our sql server to keep it alive hopefully:
|
//Every 10 min we ping our sql server to keep it alive hopefully:
|
||||||
if (framesSinceLastSQLPing >= 40000) {
|
if (framesSinceLastSQLPing >= sqlPingTime) {
|
||||||
//Find out the master's IP for absolutely no reason:
|
//Find out the master's IP for absolutely no reason:
|
||||||
std::string masterIP;
|
std::string masterIP;
|
||||||
int masterPort;
|
uint32_t masterPort;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -160,7 +165,7 @@ int main(int argc, char** argv) {
|
|||||||
} else framesSinceLastSQLPing++;
|
} else framesSinceLastSQLPing++;
|
||||||
|
|
||||||
//Sleep our thread since auth can afford to.
|
//Sleep our thread since auth can afford to.
|
||||||
t += std::chrono::milliseconds(mediumFrameDelta); //Chat can run at a lower "fps"
|
t += std::chrono::milliseconds(chatFrameDelta); //Chat can run at a lower "fps"
|
||||||
std::this_thread::sleep_until(t);
|
std::this_thread::sleep_until(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ namespace Game {
|
|||||||
} //namespace Game
|
} //namespace Game
|
||||||
|
|
||||||
bool shutdownSequenceStarted = false;
|
bool shutdownSequenceStarted = false;
|
||||||
void ShutdownSequence(int signal = -1);
|
void ShutdownSequence(int32_t signal = -1);
|
||||||
int FinalizeShutdown(int signal = -1);
|
int32_t FinalizeShutdown(int32_t signal = -1);
|
||||||
dLogger* SetupLogger();
|
dLogger* SetupLogger();
|
||||||
void StartAuthServer();
|
void StartAuthServer();
|
||||||
void StartChatServer();
|
void StartChatServer();
|
||||||
@ -75,8 +75,8 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
//Triggers the shutdown sequence at application exit
|
//Triggers the shutdown sequence at application exit
|
||||||
std::atexit([]() { ShutdownSequence(); });
|
std::atexit([]() { ShutdownSequence(); });
|
||||||
signal(SIGINT, [](int signal) { ShutdownSequence(EXIT_FAILURE); });
|
signal(SIGINT, [](int32_t signal) { ShutdownSequence(EXIT_FAILURE); });
|
||||||
signal(SIGTERM, [](int signal) { ShutdownSequence(EXIT_FAILURE); });
|
signal(SIGTERM, [](int32_t signal) { ShutdownSequence(EXIT_FAILURE); });
|
||||||
|
|
||||||
//Create all the objects we need to run our service:
|
//Create all the objects we need to run our service:
|
||||||
Game::logger = SetupLogger();
|
Game::logger = SetupLogger();
|
||||||
@ -239,8 +239,8 @@ int main(int argc, char** argv) {
|
|||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int maxClients = 999;
|
uint32_t maxClients = 999;
|
||||||
int ourPort = 1000;
|
uint32_t ourPort = 1000;
|
||||||
if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients"));
|
if (Game::config->GetValue("max_clients") != "") maxClients = std::stoi(Game::config->GetValue("max_clients"));
|
||||||
if (Game::config->GetValue("port") != "") ourPort = std::stoi(Game::config->GetValue("port"));
|
if (Game::config->GetValue("port") != "") ourPort = std::stoi(Game::config->GetValue("port"));
|
||||||
|
|
||||||
@ -293,9 +293,9 @@ int main(int argc, char** argv) {
|
|||||||
constexpr uint32_t sqlPingTime = 10 * 60 * masterFramerate;
|
constexpr uint32_t sqlPingTime = 10 * 60 * masterFramerate;
|
||||||
constexpr uint32_t shutdownUniverseTime = 10 * 60 * masterFramerate;
|
constexpr uint32_t shutdownUniverseTime = 10 * 60 * masterFramerate;
|
||||||
constexpr uint32_t instanceReadyTimeout = 30 * masterFramerate;
|
constexpr uint32_t instanceReadyTimeout = 30 * masterFramerate;
|
||||||
int framesSinceLastFlush = 0;
|
uint32_t framesSinceLastFlush = 0;
|
||||||
int framesSinceLastSQLPing = 0;
|
uint32_t framesSinceLastSQLPing = 0;
|
||||||
int framesSinceKillUniverseCommand = 0;
|
uint32_t framesSinceKillUniverseCommand = 0;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
//In world we'd update our other systems here.
|
//In world we'd update our other systems here.
|
||||||
@ -319,7 +319,7 @@ int main(int argc, char** argv) {
|
|||||||
if (framesSinceLastSQLPing >= sqlPingTime) {
|
if (framesSinceLastSQLPing >= sqlPingTime) {
|
||||||
//Find out the master's IP for absolutely no reason:
|
//Find out the master's IP for absolutely no reason:
|
||||||
std::string masterIP;
|
std::string masterIP;
|
||||||
int masterPort;
|
uint32_t masterPort;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -652,7 +652,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
|
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
inStream.Read<uint32_t>(len);
|
inStream.Read<uint32_t>(len);
|
||||||
for (int i = 0; len > i; i++) {
|
for (uint32_t i = 0; len > i; i++) {
|
||||||
char character;
|
char character;
|
||||||
inStream.Read<char>(character);
|
inStream.Read<char>(character);
|
||||||
password += character;
|
password += character;
|
||||||
@ -678,7 +678,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
uint32_t len;
|
uint32_t len;
|
||||||
inStream.Read<uint32_t>(len);
|
inStream.Read<uint32_t>(len);
|
||||||
|
|
||||||
for (int i = 0; i < len; i++) {
|
for (uint32_t i = 0; i < len; i++) {
|
||||||
char character; inStream.Read<char>(character);
|
char character; inStream.Read<char>(character);
|
||||||
password += character;
|
password += character;
|
||||||
}
|
}
|
||||||
@ -726,7 +726,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
RakNet::BitStream inStream(packet->data, packet->length, false);
|
RakNet::BitStream inStream(packet->data, packet->length, false);
|
||||||
uint64_t header = inStream.Read(header);
|
uint64_t header = inStream.Read(header);
|
||||||
|
|
||||||
int zoneID;
|
int32_t zoneID;
|
||||||
inStream.Read(zoneID);
|
inStream.Read(zoneID);
|
||||||
if (shutdownSequenceStarted) {
|
if (shutdownSequenceStarted) {
|
||||||
Game::logger->Log("MasterServer", "Shutdown sequence has been started. Not prepping a new zone.");
|
Game::logger->Log("MasterServer", "Shutdown sequence has been started. Not prepping a new zone.");
|
||||||
@ -822,7 +822,7 @@ void StartAuthServer() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShutdownSequence(int signal) {
|
void ShutdownSequence(int32_t signal) {
|
||||||
if (shutdownSequenceStarted) {
|
if (shutdownSequenceStarted) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -905,7 +905,7 @@ void ShutdownSequence(int signal) {
|
|||||||
FinalizeShutdown(signal);
|
FinalizeShutdown(signal);
|
||||||
}
|
}
|
||||||
|
|
||||||
int FinalizeShutdown(int signal) {
|
int32_t FinalizeShutdown(int32_t signal) {
|
||||||
//Delete our objects here:
|
//Delete our objects here:
|
||||||
Database::Destroy("MasterServer");
|
Database::Destroy("MasterServer");
|
||||||
if (Game::config) delete Game::config;
|
if (Game::config) delete Game::config;
|
||||||
|
@ -81,7 +81,7 @@ void WorldShutdownProcess(uint32_t zoneId);
|
|||||||
void FinalizeShutdown();
|
void FinalizeShutdown();
|
||||||
void SendShutdownMessageToMaster();
|
void SendShutdownMessageToMaster();
|
||||||
|
|
||||||
dLogger* SetupLogger(int zoneID, int instanceID);
|
dLogger* SetupLogger(uint32_t zoneID, uint32_t instanceID);
|
||||||
void HandlePacketChat(Packet* packet);
|
void HandlePacketChat(Packet* packet);
|
||||||
void HandlePacket(Packet* packet);
|
void HandlePacket(Packet* packet);
|
||||||
|
|
||||||
@ -91,8 +91,8 @@ struct tempSessionInfo {
|
|||||||
};
|
};
|
||||||
|
|
||||||
std::map<std::string, tempSessionInfo> m_PendingUsers;
|
std::map<std::string, tempSessionInfo> m_PendingUsers;
|
||||||
int instanceID = 0;
|
uint32_t instanceID = 0;
|
||||||
int g_CloneID = 0;
|
uint32_t g_CloneID = 0;
|
||||||
std::string databaseChecksum = "";
|
std::string databaseChecksum = "";
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
@ -106,13 +106,13 @@ int main(int argc, char** argv) {
|
|||||||
signal(SIGINT, [](int) { WorldShutdownSequence(); });
|
signal(SIGINT, [](int) { WorldShutdownSequence(); });
|
||||||
signal(SIGTERM, [](int) { WorldShutdownSequence(); });
|
signal(SIGTERM, [](int) { WorldShutdownSequence(); });
|
||||||
|
|
||||||
int zoneID = 1000;
|
uint32_t zoneID = 1000;
|
||||||
int cloneID = 0;
|
uint32_t cloneID = 0;
|
||||||
int maxClients = 8;
|
uint32_t maxClients = 8;
|
||||||
int ourPort = 2007;
|
uint32_t ourPort = 2007;
|
||||||
|
|
||||||
//Check our arguments:
|
//Check our arguments:
|
||||||
for (int i = 0; i < argc; ++i) {
|
for (int32_t i = 0; i < argc; ++i) {
|
||||||
std::string argument(argv[i]);
|
std::string argument(argv[i]);
|
||||||
|
|
||||||
if (argument == "-zone") zoneID = atoi(argv[i + 1]);
|
if (argument == "-zone") zoneID = atoi(argv[i + 1]);
|
||||||
@ -184,7 +184,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
//Find out the master's IP:
|
//Find out the master's IP:
|
||||||
std::string masterIP = "localhost";
|
std::string masterIP = "localhost";
|
||||||
int masterPort = 1000;
|
uint32_t masterPort = 1000;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -203,7 +203,7 @@ int main(int argc, char** argv) {
|
|||||||
Game::server = new dServer(masterIP, ourPort, instanceID, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::World, Game::config, &Game::shouldShutdown, zoneID);
|
Game::server = new dServer(masterIP, ourPort, instanceID, maxClients, false, true, Game::logger, masterIP, masterPort, ServerType::World, Game::config, &Game::shouldShutdown, zoneID);
|
||||||
|
|
||||||
//Connect to the chat server:
|
//Connect to the chat server:
|
||||||
int chatPort = 1501;
|
uint32_t chatPort = 1501;
|
||||||
if (Game::config->GetValue("chat_server_port") != "") chatPort = std::atoi(Game::config->GetValue("chat_server_port").c_str());
|
if (Game::config->GetValue("chat_server_port") != "") chatPort = std::atoi(Game::config->GetValue("chat_server_port").c_str());
|
||||||
|
|
||||||
auto chatSock = SocketDescriptor(uint16_t(ourPort + 2), 0);
|
auto chatSock = SocketDescriptor(uint16_t(ourPort + 2), 0);
|
||||||
@ -219,22 +219,22 @@ int main(int argc, char** argv) {
|
|||||||
auto t = std::chrono::high_resolution_clock::now();
|
auto t = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
Packet* packet = nullptr;
|
Packet* packet = nullptr;
|
||||||
int framesSinceLastFlush = 0;
|
uint32_t framesSinceLastFlush = 0;
|
||||||
int framesSinceMasterDisconnect = 0;
|
uint32_t framesSinceMasterDisconnect = 0;
|
||||||
int framesSinceChatDisconnect = 0;
|
uint32_t framesSinceChatDisconnect = 0;
|
||||||
int framesSinceLastUsersSave = 0;
|
uint32_t framesSinceLastUsersSave = 0;
|
||||||
int framesSinceLastSQLPing = 0;
|
uint32_t framesSinceLastSQLPing = 0;
|
||||||
int framesSinceLastUser = 0;
|
uint32_t framesSinceLastUser = 0;
|
||||||
|
|
||||||
const float maxPacketProcessingTime = 1.5f; //0.015f;
|
const float maxPacketProcessingTime = 1.5f; //0.015f;
|
||||||
const int maxPacketsToProcess = 1024;
|
const uint32_t maxPacketsToProcess = 1024;
|
||||||
|
|
||||||
bool ready = false;
|
bool ready = false;
|
||||||
int framesSinceMasterStatus = 0;
|
uint32_t framesSinceMasterStatus = 0;
|
||||||
int framesSinceShutdownSequence = 0;
|
uint32_t framesSinceShutdownSequence = 0;
|
||||||
int currentFramerate = highFrameDelta;
|
uint32_t currentFramerate = highFrameDelta;
|
||||||
|
|
||||||
int ghostingStepCount = 0;
|
uint32_t ghostingStepCount = 0;
|
||||||
auto ghostingLastTime = std::chrono::high_resolution_clock::now();
|
auto ghostingLastTime = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
PerformanceManager::SelectProfile(zoneID);
|
PerformanceManager::SelectProfile(zoneID);
|
||||||
@ -263,7 +263,7 @@ int main(int argc, char** argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const int bufferSize = 1024;
|
const int32_t bufferSize = 1024;
|
||||||
MD5* md5 = new MD5();
|
MD5* md5 = new MD5();
|
||||||
|
|
||||||
char fileStreamBuffer[1024] = {};
|
char fileStreamBuffer[1024] = {};
|
||||||
@ -314,7 +314,7 @@ int main(int argc, char** argv) {
|
|||||||
if (!Game::server->GetIsConnectedToMaster()) {
|
if (!Game::server->GetIsConnectedToMaster()) {
|
||||||
framesSinceMasterDisconnect++;
|
framesSinceMasterDisconnect++;
|
||||||
|
|
||||||
int framesToWaitForMaster = ready ? 10 : 200;
|
uint32_t framesToWaitForMaster = ready ? 10 : 200;
|
||||||
if (framesSinceMasterDisconnect >= framesToWaitForMaster && !Game::shouldShutdown) {
|
if (framesSinceMasterDisconnect >= framesToWaitForMaster && !Game::shouldShutdown) {
|
||||||
Game::logger->Log("WorldServer", "Game loop running but no connection to master for %d frames, shutting down", framesToWaitForMaster);
|
Game::logger->Log("WorldServer", "Game loop running but no connection to master for %d frames, shutting down", framesToWaitForMaster);
|
||||||
Game::shouldShutdown = true;
|
Game::shouldShutdown = true;
|
||||||
@ -378,7 +378,7 @@ int main(int argc, char** argv) {
|
|||||||
UserManager::Instance()->DeletePendingRemovals();
|
UserManager::Instance()->DeletePendingRemovals();
|
||||||
|
|
||||||
auto t1 = std::chrono::high_resolution_clock::now();
|
auto t1 = std::chrono::high_resolution_clock::now();
|
||||||
for (int curPacket = 0; curPacket < maxPacketsToProcess && timeSpent < maxPacketProcessingTime; curPacket++) {
|
for (uint32_t curPacket = 0; curPacket < maxPacketsToProcess && timeSpent < maxPacketProcessingTime; curPacket++) {
|
||||||
packet = Game::server->Receive();
|
packet = Game::server->Receive();
|
||||||
if (packet) {
|
if (packet) {
|
||||||
auto t1 = std::chrono::high_resolution_clock::now();
|
auto t1 = std::chrono::high_resolution_clock::now();
|
||||||
@ -433,7 +433,7 @@ int main(int argc, char** argv) {
|
|||||||
if (framesSinceLastSQLPing >= 40000) {
|
if (framesSinceLastSQLPing >= 40000) {
|
||||||
//Find out the master's IP for absolutely no reason:
|
//Find out the master's IP for absolutely no reason:
|
||||||
std::string masterIP;
|
std::string masterIP;
|
||||||
int masterPort;
|
uint32_t masterPort;
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT ip, port FROM servers WHERE name='master';");
|
||||||
auto res = stmt->executeQuery();
|
auto res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
@ -482,7 +482,7 @@ int main(int argc, char** argv) {
|
|||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
dLogger* SetupLogger(int zoneID, int instanceID) {
|
dLogger* SetupLogger(uint32_t zoneID, uint32_t instanceID) {
|
||||||
std::string logPath = (BinaryPathFinder::GetBinaryDir() / ("logs/WorldServer_" + std::to_string(zoneID) + "_" + std::to_string(instanceID) + "_" + std::to_string(time(nullptr)) + ".log")).string();
|
std::string logPath = (BinaryPathFinder::GetBinaryDir() / ("logs/WorldServer_" + std::to_string(zoneID) + "_" + std::to_string(instanceID) + "_" + std::to_string(time(nullptr)) + ".log")).string();
|
||||||
bool logToConsole = false;
|
bool logToConsole = false;
|
||||||
bool logDebugStatements = false;
|
bool logDebugStatements = false;
|
||||||
@ -524,7 +524,7 @@ void HandlePacketChat(Packet* packet) {
|
|||||||
|
|
||||||
//Write our stream outwards:
|
//Write our stream outwards:
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
for (int i = 0; i < inStream.GetNumberOfBytesUsed(); i++) {
|
for (BitSize_t i = 0; i < inStream.GetNumberOfBytesUsed(); i++) {
|
||||||
bitStream.Write(packet->data[i + 16]); //16 bytes == header + playerID to skip
|
bitStream.Write(packet->data[i + 16]); //16 bytes == header + playerID to skip
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -543,7 +543,7 @@ void HandlePacketChat(Packet* packet) {
|
|||||||
|
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
inStream.Read<uint32_t>(len);
|
inStream.Read<uint32_t>(len);
|
||||||
for (int i = 0; len > i; i++) {
|
for (uint32_t i = 0; len > i; i++) {
|
||||||
char character;
|
char character;
|
||||||
inStream.Read<char>(character);
|
inStream.Read<char>(character);
|
||||||
title += character;
|
title += character;
|
||||||
@ -551,7 +551,7 @@ void HandlePacketChat(Packet* packet) {
|
|||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
inStream.Read<uint32_t>(len);
|
inStream.Read<uint32_t>(len);
|
||||||
for (int i = 0; len > i; i++) {
|
for (uint32_t i = 0; len > i; i++) {
|
||||||
char character;
|
char character;
|
||||||
inStream.Read<char>(character);
|
inStream.Read<char>(character);
|
||||||
msg += character;
|
msg += character;
|
||||||
@ -804,7 +804,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
uint32_t len;
|
uint32_t len;
|
||||||
inStream.Read(len);
|
inStream.Read(len);
|
||||||
|
|
||||||
for (int i = 0; i < len; i++) {
|
for (uint32_t i = 0; i < len; i++) {
|
||||||
char character; inStream.Read<char>(character);
|
char character; inStream.Read<char>(character);
|
||||||
username += character;
|
username += character;
|
||||||
}
|
}
|
||||||
@ -1027,7 +1027,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
//Check for BBB models:
|
//Check for BBB models:
|
||||||
auto stmt = Database::CreatePreppedStmt("SELECT ugc_id FROM properties_contents WHERE lot=14 AND property_id=?");
|
auto stmt = Database::CreatePreppedStmt("SELECT ugc_id FROM properties_contents WHERE lot=14 AND property_id=?");
|
||||||
|
|
||||||
int templateId = result.getIntField(0);
|
int32_t templateId = result.getIntField(0);
|
||||||
|
|
||||||
result.finalize();
|
result.finalize();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user