SQCSimulator2023/SQCSim-srv/connection.cpp

55 lines
1.2 KiB
C++
Raw Normal View History

2023-09-24 08:45:40 -04:00
#include "connection.h"
Connection::Connection(SOCKET sock,
sockaddr_in sockaddr,
netprot::LoginInfo log,
netprot::PlayerInfo play):
m_sock(sock),
m_addr(sockaddr),
m_loginfo(log),
m_playinfo(play) {
2023-09-24 08:45:40 -04:00
}
Connection::~Connection() {
closesocket(m_sock);
}
2023-09-24 08:45:40 -04:00
uint64_t Connection::GetHash(bool self) const { return self? m_loginfo.sid: m_playinfo.id; }
2023-09-24 08:45:40 -04:00
uint64_t Connection::GetTeamHash() const { return m_loginfo.tid; }
2023-09-24 08:45:40 -04:00
std::string Connection::GetName() const { return m_loginfo.name; }
2023-09-24 08:45:40 -04:00
2023-09-25 16:30:03 -04:00
void Connection::AddInput(netprot::Input in) {
m_input_manifest.insert({ in.timestamp, in });
2023-09-24 11:07:03 -04:00
}
2023-09-25 16:30:03 -04:00
netprot::Output* Connection::getOutput(Timestamp time) {
2023-09-24 11:07:03 -04:00
auto out = m_output_manifest.find(time);
if (out != m_output_manifest.end())
return &out->second;
return nullptr;
}
2023-09-25 16:30:03 -04:00
netprot::Sync Connection::getSync(Timestamp time) {
netprot::Sync sync;
2023-09-24 11:07:03 -04:00
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_loginfo.sid;
2023-09-24 11:07:03 -04:00
}
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--);
2023-09-24 08:45:40 -04:00
}