mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
Added check on repeated commands on scheduler
This commit is contained in:
parent
cbb8920de7
commit
1d5f24dc1a
@ -59,7 +59,7 @@ export function GET(callback: CallableFunction, uri: string, options?: { time?:
|
||||
const result = JSON.parse(xmlHttp.responseText);
|
||||
lastUpdateTimes[uri] = callback(result);
|
||||
|
||||
if (result.frameRate && result.load)
|
||||
if (result.frameRate !== undefined && result.load !== undefined)
|
||||
getServerStatusPanel().update(result.frameRate, result.load);
|
||||
}
|
||||
} else if (xmlHttp.status == 401) {
|
||||
|
||||
@ -506,7 +506,7 @@ function Olympus.generateGroundUnitsTable(units)
|
||||
["y"] = spawnLocation.z + value.dy,
|
||||
["heading"] = 0,
|
||||
["skill"] = "High",
|
||||
["name"] = "GroundUnit-" .. Olympus.unitCounter .. "-" .. #unitTable + 1
|
||||
["name"] = "Olympus-" .. Olympus.unitCounter .. "-" .. #unitTable + 1
|
||||
}
|
||||
end
|
||||
else
|
||||
@ -517,7 +517,7 @@ function Olympus.generateGroundUnitsTable(units)
|
||||
["y"] = spawnLocation.z,
|
||||
["heading"] = 0,
|
||||
["skill"] = "High",
|
||||
["name"] = "GroundUnit-" .. Olympus.unitCounter .. "-" .. #unitTable + 1
|
||||
["name"] = "Olympus-" .. Olympus.unitCounter .. "-" .. #unitTable + 1
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@ -95,7 +95,7 @@ class Command
|
||||
{
|
||||
public:
|
||||
unsigned int getPriority() { return priority; }
|
||||
virtual string getString(lua_State* L) = 0;
|
||||
virtual string getString() = 0;
|
||||
virtual unsigned int getLoad() = 0;
|
||||
|
||||
protected:
|
||||
@ -118,7 +118,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::HIGH;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 2; }
|
||||
|
||||
private:
|
||||
@ -142,7 +142,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::LOW;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 2; }
|
||||
|
||||
private:
|
||||
@ -162,7 +162,7 @@ public:
|
||||
{
|
||||
priority = immediate? CommandPriority::IMMEDIATE: CommandPriority::LOW;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return immediate? 1: 30; }
|
||||
|
||||
private:
|
||||
@ -184,7 +184,7 @@ public:
|
||||
{
|
||||
priority = immediate ? CommandPriority::IMMEDIATE : CommandPriority::LOW;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return immediate ? 1 : 30; }
|
||||
|
||||
private:
|
||||
@ -208,7 +208,7 @@ public:
|
||||
{
|
||||
priority = immediate ? CommandPriority::IMMEDIATE : CommandPriority::LOW;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return immediate ? 1 : 30; }
|
||||
|
||||
private:
|
||||
@ -235,7 +235,7 @@ public:
|
||||
{
|
||||
priority = immediate ? CommandPriority::IMMEDIATE : CommandPriority::LOW;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return immediate ? 1 : 30; }
|
||||
|
||||
private:
|
||||
@ -257,7 +257,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::LOW;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 30; }
|
||||
|
||||
private:
|
||||
@ -277,7 +277,7 @@ public:
|
||||
priority = CommandPriority::HIGH;
|
||||
immediate = immediate;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return immediate? 1: 5; }
|
||||
|
||||
private:
|
||||
@ -296,7 +296,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::MEDIUM;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 1; }
|
||||
|
||||
private:
|
||||
@ -313,7 +313,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::HIGH;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 1; }
|
||||
|
||||
private:
|
||||
@ -330,7 +330,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::HIGH;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 1; }
|
||||
|
||||
private:
|
||||
@ -361,7 +361,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::HIGH;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 1; }
|
||||
|
||||
private:
|
||||
@ -382,7 +382,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::HIGH;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 1; }
|
||||
|
||||
private:
|
||||
@ -400,7 +400,7 @@ public:
|
||||
{
|
||||
priority = CommandPriority::MEDIUM;
|
||||
};
|
||||
virtual string getString(lua_State* L);
|
||||
virtual string getString();
|
||||
virtual unsigned int getLoad() { return 4; }
|
||||
|
||||
private:
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
extern UnitsManager* unitsManager;
|
||||
|
||||
/* Move command */
|
||||
string Move::getString(lua_State* L)
|
||||
string Move::getString()
|
||||
{
|
||||
|
||||
std::ostringstream commandSS;
|
||||
@ -26,7 +26,7 @@ string Move::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Smoke command */
|
||||
string Smoke::getString(lua_State* L)
|
||||
string Smoke::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -38,7 +38,7 @@ string Smoke::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Spawn ground units command */
|
||||
string SpawnGroundUnits::getString(lua_State* L)
|
||||
string SpawnGroundUnits::getString()
|
||||
{
|
||||
if (unitTypes.size() != locations.size()) return "";
|
||||
|
||||
@ -62,7 +62,7 @@ string SpawnGroundUnits::getString(lua_State* L)
|
||||
|
||||
|
||||
/* Spawn ground units command */
|
||||
string SpawnNavyUnits::getString(lua_State* L)
|
||||
string SpawnNavyUnits::getString()
|
||||
{
|
||||
if (unitTypes.size() != locations.size()) return "";
|
||||
|
||||
@ -85,7 +85,7 @@ string SpawnNavyUnits::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Spawn aircrafts command */
|
||||
string SpawnAircrafts::getString(lua_State* L)
|
||||
string SpawnAircrafts::getString()
|
||||
{
|
||||
if (unitTypes.size() != locations.size() || unitTypes.size() != loadouts.size()) return "";
|
||||
|
||||
@ -112,7 +112,7 @@ string SpawnAircrafts::getString(lua_State* L)
|
||||
|
||||
|
||||
/* Spawn helicopters command */
|
||||
string SpawnHelicopters::getString(lua_State* L)
|
||||
string SpawnHelicopters::getString()
|
||||
{
|
||||
if (unitTypes.size() != locations.size() || unitTypes.size() != loadouts.size()) return "";
|
||||
|
||||
@ -139,7 +139,7 @@ string SpawnHelicopters::getString(lua_State* L)
|
||||
|
||||
|
||||
/* Clone unit command */
|
||||
string Clone::getString(lua_State* L)
|
||||
string Clone::getString()
|
||||
{
|
||||
Unit* unit = unitsManager->getUnit(ID);
|
||||
if (unit != nullptr)
|
||||
@ -160,7 +160,7 @@ string Clone::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Delete unit command */
|
||||
string Delete::getString(lua_State* L)
|
||||
string Delete::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -171,7 +171,7 @@ string Delete::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Set task command */
|
||||
string SetTask::getString(lua_State* L)
|
||||
string SetTask::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -183,7 +183,7 @@ string SetTask::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Reset task command */
|
||||
string ResetTask::getString(lua_State* L)
|
||||
string ResetTask::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -194,7 +194,7 @@ string ResetTask::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Set command command */
|
||||
string SetCommand::getString(lua_State* L)
|
||||
string SetCommand::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -206,7 +206,7 @@ string SetCommand::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Set option command */
|
||||
string SetOption::getString(lua_State* L)
|
||||
string SetOption::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -226,7 +226,7 @@ string SetOption::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Set onOff command */
|
||||
string SetOnOff::getString(lua_State* L)
|
||||
string SetOnOff::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
@ -239,7 +239,7 @@ string SetOnOff::getString(lua_State* L)
|
||||
}
|
||||
|
||||
/* Explosion command */
|
||||
string Explosion::getString(lua_State* L)
|
||||
string Explosion::getString()
|
||||
{
|
||||
std::ostringstream commandSS;
|
||||
commandSS.precision(10);
|
||||
|
||||
@ -70,19 +70,18 @@ extern "C" DllExport int coreFrame(lua_State* L)
|
||||
frameCounter++;
|
||||
|
||||
const std::chrono::duration<double> executionDuration = std::chrono::system_clock::now() - lastExecution;
|
||||
if (executionDuration.count() > EXECUTION_TIME_INTERVAL) {
|
||||
if (scheduler != nullptr) {
|
||||
scheduler->execute(L);
|
||||
|
||||
if (executionDuration.count() > 0) {
|
||||
scheduler->setFrameRate(frameCounter / executionDuration.count());
|
||||
frameCounter = 0;
|
||||
}
|
||||
|
||||
lastExecution = std::chrono::system_clock::now();
|
||||
if (executionDuration.count() > FRAMERATE_TIME_INTERVAL) {
|
||||
if (executionDuration.count() > 0) {
|
||||
scheduler->setFrameRate(frameCounter / executionDuration.count());
|
||||
frameCounter = 0;
|
||||
}
|
||||
|
||||
lastExecution = std::chrono::system_clock::now();
|
||||
}
|
||||
|
||||
if (scheduler != nullptr)
|
||||
scheduler->execute(L);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
@ -18,9 +18,13 @@ Scheduler::~Scheduler()
|
||||
|
||||
}
|
||||
|
||||
void Scheduler::appendCommand(Command* command)
|
||||
void Scheduler::appendCommand(Command* newCommand)
|
||||
{
|
||||
commands.push_back(command);
|
||||
for (auto command : commands) {
|
||||
if (command->getString().compare(newCommand->getString()) == 0 && command->getPriority() == newCommand->getPriority())
|
||||
return;
|
||||
}
|
||||
commands.push_back(newCommand);
|
||||
}
|
||||
|
||||
int Scheduler::getLoad()
|
||||
@ -47,13 +51,14 @@ void Scheduler::execute(lua_State* L)
|
||||
{
|
||||
if (command->getPriority() == priority)
|
||||
{
|
||||
string commandString = "Olympus.protectedCall(" + command->getString(L) + ")";
|
||||
string commandString = "Olympus.protectedCall(" + command->getString() + ")";
|
||||
if (dostring_in(L, "server", (commandString)))
|
||||
log("Error executing command " + commandString);
|
||||
else
|
||||
log("Command '" + commandString + "' executed correctly, current load " + to_string(getLoad()));
|
||||
load = command->getLoad();
|
||||
commands.remove(command);
|
||||
delete command;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,8 +37,6 @@ void Logger::Close()
|
||||
void Logger::toJSON(json::value& json, unsigned long long time)
|
||||
{
|
||||
lock_guard<mutex> guard(mutexLock);
|
||||
json[L"requestTime"] = time;
|
||||
|
||||
/* Loop on the logs in reverse since we are usually only interested in the very last added logs */
|
||||
auto itr = m_logs.end();
|
||||
while (itr != m_logs.begin())
|
||||
|
||||
@ -10,4 +10,4 @@
|
||||
#define BULLSEYE_URI "bullseyes"
|
||||
#define MISSION_URI "mission"
|
||||
|
||||
#define EXECUTION_TIME_INTERVAL 0.05
|
||||
#define FRAMERATE_TIME_INTERVAL 0.05
|
||||
Loading…
x
Reference in New Issue
Block a user