Files
EHS/src/io/socket/ehc/NetSys.cpp

106 lines
1.7 KiB
C++

#include "ehs/io/socket/ehc/NetSys.h"
#include "ehs/io/socket/EHC.h"
#include "ehs/io/socket/ehc/NetEnd.h"
#include "ehs/io/socket/ehc/NetOp.h"
#include "ehs/io/socket/ehc/NetChannel.h"
namespace ehs
{
NetSys::~NetSys()
{
for (UInt_64 i = 0; i < ops.Size(); ++i)
delete ops[i];
ops.Clear();
}
NetSys::NetSys()
: id(0)
{
}
NetSys::NetSys(Str_8 name)
: id(name.Hash_64()), name((Str_8&&)name)
{
}
NetSys::NetSys(NetSys&& sys) noexcept
: id(sys.id), name((Str_8&&)sys.name), ops((Array<NetOp*>&&)sys.ops)
{
sys.id = 0;
}
NetSys::NetSys(const NetSys& sys)
: id(sys.id), name(sys.name)
{
}
NetSys& NetSys::operator=(NetSys&& sys) noexcept
{
if (this == &sys)
return *this;
id = sys.id;
name = (Str_8&&)sys.name;
ops = (Array<NetOp*>&&)sys.ops;
sys.id = 0;
return *this;
}
NetSys& NetSys::operator=(const NetSys& sys)
{
if (this == &sys)
return *this;
id = sys.id;
name = sys.name;
ops = Array<NetOp*>();
return *this;
}
UInt_64 NetSys::GetId() const
{
return id;
}
Str_8 NetSys::GetName() const
{
return name;
}
bool NetSys::HasOperation(const UInt_64 id) const
{
for (UInt_64 i = 0; i < ops.Size(); ++i)
if (ops[i]->GetId() == id)
return true;
return false;
}
bool NetSys::AddOperation(NetOp* op)
{
if (HasOperation(op->GetId()))
return false;
ops.Push(op);
return true;
}
void NetSys::Execute(NetChannel *channel, NetEnd *endpoint, const UInt_64 hashId, Serializer<UInt_64> &payload)
{
for (UInt_64 i = 0; i < ops.Size(); ++i)
{
if (ops[i]->GetId() == hashId)
{
ops[i]->Execute(channel, endpoint, this, payload);
return;
}
}
EHS_LOG_INT(LogType::INFO, 0, "System not found.");
}
}