1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 20:13:07 +01:00
Files
OpenRCT2/src/openrct2/network/NetworkConnection.h
Julia Pinheiro dafde532af Close #12426: Refactor NETWORK_READPACKET to use strong enum (#12807)
Replacing enum NETWORK_READPACKET with enum class NetworkReadPacket.
2020-08-31 09:13:15 -03:00

69 lines
2.0 KiB
C++

/*****************************************************************************
* Copyright (c) 2014-2020 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
#pragma once
#ifndef DISABLE_NETWORK
# include "../common.h"
# include "NetworkKey.h"
# include "NetworkPacket.h"
# include "NetworkTypes.h"
# include "Socket.h"
# include <deque>
# include <memory>
# include <vector>
class NetworkPlayer;
struct ObjectRepositoryItem;
class NetworkConnection final
{
public:
std::unique_ptr<ITcpSocket> Socket = nullptr;
NetworkPacket InboundPacket;
NETWORK_AUTH AuthStatus = NETWORK_AUTH_NONE;
NetworkStats_t Stats = {};
NetworkPlayer* Player = nullptr;
uint32_t PingTime = 0;
NetworkKey Key;
std::vector<uint8_t> Challenge;
std::vector<const ObjectRepositoryItem*> RequestedObjects;
bool IsDisconnected = false;
NetworkConnection();
~NetworkConnection();
NetworkReadPacket ReadPacket();
void QueuePacket(NetworkPacket&& packet, bool front = false);
void QueuePacket(const NetworkPacket& packet, bool front = false)
{
auto copy = packet;
return QueuePacket(std::move(copy), front);
}
void SendQueuedPackets();
void ResetLastPacketTime();
bool ReceivedPacketRecently();
const utf8* GetLastDisconnectReason() const;
void SetLastDisconnectReason(const utf8* src);
void SetLastDisconnectReason(const rct_string_id string_id, void* args = nullptr);
private:
std::deque<NetworkPacket> _outboundPackets;
uint32_t _lastPacketTime = 0;
utf8* _lastDisconnectReason = nullptr;
void RecordPacketStats(const NetworkPacket& packet, bool sending);
bool SendPacket(NetworkPacket& packet);
};
#endif // DISABLE_NETWORK