57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
#include "connection.h"
|
|
|
|
Connection::Connection(in_addr addr,
|
|
std::string name,
|
|
uint64_t id,
|
|
uint64_t self_id,
|
|
uint64_t 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_t Connection::GetHash(bool self) const { return self? m_sid: m_id; }
|
|
|
|
uint64_t Connection::GetTeamHash() const { return m_tid; }
|
|
|
|
std::string Connection::GetName() const { return m_name; }
|
|
|
|
void Connection::AddInput(netprot::Input in) {
|
|
m_input_manifest.insert({ in.timestamp, in });
|
|
}
|
|
|
|
netprot::Output* Connection::getOutput(Timestamp time) {
|
|
auto out = m_output_manifest.find(time);
|
|
if (out != m_output_manifest.end())
|
|
return &out->second;
|
|
return nullptr;
|
|
}
|
|
|
|
netprot::Sync Connection::getSync(Timestamp time) {
|
|
netprot::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--);
|
|
|
|
}
|