SQCSimulator2023/SQCSim-srv/connection.cpp
2023-09-24 11:07:03 -04:00

57 lines
1.2 KiB
C++

#include "connection.h"
Connection::Connection(in_addr addr,
std::string name,
UINT64 id,
UINT64 self_id,
UINT64 team_id):
m_addr(addr),
m_id(id),
m_sid(self_id),
m_tid(team_id),
m_name(name) {
}
Connection::~Connection() {
}
in_addr Connection::GetAddr() const { return m_addr; }
UINT64 Connection::GetHash(bool self) const { return self? m_sid: m_id; }
UINT64 Connection::GetTeamHash() const { return m_tid; }
std::string Connection::GetName() const { return m_name; }
void Connection::AddInput(Input in) {
m_input_manifest.insert({in.timestamp, in});
}
Output* Connection::getOutput(Timestamp time) {
auto out = m_output_manifest.find(time);
if (out != m_output_manifest.end())
return &out->second;
return nullptr;
}
Sync Connection::getSync(Timestamp time) {
Sync sync;
auto out = m_output_manifest.find(time);
if (out != m_output_manifest.end()) {
sync.timestamp = out->second.timestamp;
sync.position = out->second.position;
sync.sid = m_sid;
}
return sync;
}
void Connection::CleanInputManifest(Timestamp time) {
auto wat = m_input_manifest.find(time);
while (wat != m_input_manifest.begin())
m_input_manifest.erase(wat--);
}