mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-31 01:15:48 -04:00
109 lines
3.5 KiB
C++
Executable File
109 lines
3.5 KiB
C++
Executable File
// TaskConnection.cpp
|
|
// copyright 2000 Verant Interactive
|
|
// Author: Justin Randall
|
|
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
#include "FirstCentralServer.h"
|
|
#include "ConfigCentralServer.h"
|
|
#include "serverNetworkMessages/TaskConnectionIdMessage.h"
|
|
#include "serverNetworkMessages/TaskSpawnProcess.h"
|
|
#include "serverNetworkMessages/TaskUtilization.h"
|
|
#include "sharedMessageDispatch/Transceiver.h"
|
|
#include "sharedNetwork/NetworkSetupData.h"
|
|
#include "sharedNetwork/Service.h"
|
|
#include "TaskConnection.h"
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
TaskConnection::TaskConnection(const std::string & a, const unsigned short p) :
|
|
ServerConnection(a, p, NetworkSetupData()),
|
|
callback(new MessageDispatch::Callback),
|
|
m_connected(false)
|
|
{
|
|
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
TaskConnection::TaskConnection(UdpConnectionMT * u, TcpClient * t) :
|
|
ServerConnection(u, t),
|
|
callback(new MessageDispatch::Callback),
|
|
m_connected(false)
|
|
{
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
TaskConnection::~TaskConnection()
|
|
{
|
|
delete callback;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
void TaskConnection::onConnectionClosed()
|
|
{
|
|
m_connected = false;
|
|
|
|
static MessageConnectionCallback m("TaskConnectionClosed");
|
|
emitMessage(m);
|
|
CentralServer::getInstance().setTaskManager(0);
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
void TaskConnection::onConnectionOpened()
|
|
{
|
|
m_connected = true;
|
|
|
|
static MessageConnectionCallback m("TaskConnectionOpened");
|
|
emitMessage(m);
|
|
std::string cmdLine = CentralServer::getInstance().getCommandLine();
|
|
// fix up path
|
|
size_t last = 0;
|
|
while(cmdLine.find_first_of("\\", last + 1) < cmdLine.size())
|
|
last = cmdLine.find_first_of("\\", last + 1);
|
|
cmdLine = cmdLine.substr(last);
|
|
TaskConnectionIdMessage id(TaskConnectionIdMessage::Central, cmdLine, ConfigCentralServer::getClusterName());
|
|
send(id, true);
|
|
CentralServer::getInstance().setTaskManager(this);
|
|
|
|
// start launching processes
|
|
CentralServer::getInstance().launchStartingProcesses();
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
void TaskConnection::onReceive(const Archive::ByteStream & message)
|
|
{
|
|
Archive::ReadIterator r(message);
|
|
GameNetworkMessage m(r);
|
|
if(m.isType("TaskUtilization"))
|
|
{
|
|
// generate utilization messages for the task manager
|
|
TaskUtilization sysCpu(TaskUtilization::SYSTEM_CPU, 0.5f); //lint !e641 Converting enum to int (it's ok, this is for a network message)
|
|
TaskUtilization sysMem(TaskUtilization::SYSTEM_MEMORY, 0.5f); //lint !e641 Converting enum to int (it's ok, this is for a network message)
|
|
TaskUtilization sysNet(TaskUtilization::SYSTEM_NETWORK_IO, 50000.0f); //lint !e641 Converting enum to int (it's ok, this is for a network message)
|
|
TaskUtilization procCpu(TaskUtilization::PROCESS_CPU, 0.5f); //lint !e641 Converting enum to int (it's ok, this is for a network message)
|
|
TaskUtilization procMem(TaskUtilization::PROCESS_MEMORY, 0.5f); //lint !e641 Converting enum to int (it's ok, this is for a network message)
|
|
TaskUtilization procNet(TaskUtilization::PROCESS_NETWORK_IO, 50000.0f); //lint !e641 Converting enum to int (it's ok, this is for a network message)
|
|
|
|
send(sysCpu, true);
|
|
send(sysMem, true);
|
|
send(sysNet, true);
|
|
send(procCpu, true);
|
|
send(procMem, true);
|
|
send(procNet, true);
|
|
}
|
|
else
|
|
{
|
|
emitMessage(m);
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
|