mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
Remove INetSession
This was only used in the `CNetFileTransferer`. Only one function is called. That can also be a `std::function`.
This commit is contained in:
parent
e0c189a43e
commit
e2dbcea487
5 changed files with 24 additions and 35 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2025 Wildfire Games.
|
||||
/* Copyright (C) 2026 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
|
|
@ -97,7 +97,7 @@ Status CNetFileTransferer::OnFileTransferData(const CFileTransferDataMessage& me
|
|||
CFileTransferAckMessage ackMessage;
|
||||
ackMessage.m_RequestID = message.m_RequestID;
|
||||
ackMessage.m_NumPackets = 1; // TODO: would be nice to send a single ack for multiple packets at once
|
||||
m_Session->SendMessage(&ackMessage);
|
||||
m_SendMessage(&ackMessage);
|
||||
|
||||
if (task.buffer.size() == task.length)
|
||||
{
|
||||
|
|
@ -155,7 +155,7 @@ void CNetFileTransferer::StartTask(RequestType requestType, std::function<void(s
|
|||
CFileTransferRequestMessage request;
|
||||
request.m_RequestType = static_cast<i8>(requestType);
|
||||
request.m_RequestID = requestID;
|
||||
m_Session->SendMessage(&request);
|
||||
m_SendMessage(&request);
|
||||
}
|
||||
|
||||
void CNetFileTransferer::StartResponse(u32 requestID, const std::string& data)
|
||||
|
|
@ -171,7 +171,7 @@ void CNetFileTransferer::StartResponse(u32 requestID, const std::string& data)
|
|||
CFileTransferResponseMessage respMessage;
|
||||
respMessage.m_RequestID = requestID;
|
||||
respMessage.m_Length = task.buffer.size();
|
||||
m_Session->SendMessage(&respMessage);
|
||||
m_SendMessage(&respMessage);
|
||||
}
|
||||
|
||||
void CNetFileTransferer::Poll()
|
||||
|
|
@ -190,7 +190,7 @@ void CNetFileTransferer::Poll()
|
|||
dataMessage.m_Data = task.buffer.substr(task.offset, packetSize);
|
||||
task.offset += packetSize;
|
||||
++task.packetsInFlight;
|
||||
m_Session->SendMessage(&dataMessage);
|
||||
m_SendMessage(&dataMessage);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2025 Wildfire Games.
|
||||
/* Copyright (C) 2026 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
|
|
@ -32,7 +32,6 @@ class CFileTransferAckMessage;
|
|||
class CFileTransferDataMessage;
|
||||
class CFileTransferResponseMessage;
|
||||
class CNetMessage;
|
||||
class INetSession;
|
||||
|
||||
// Assume this is sufficiently less than MTU that packets won't get
|
||||
// fragmented or dropped.
|
||||
|
|
@ -59,8 +58,9 @@ public:
|
|||
REJOIN
|
||||
};
|
||||
|
||||
CNetFileTransferer(INetSession* session)
|
||||
: m_Session(session), m_NextRequestID(1), m_LastProgressReportTime(0)
|
||||
template<typename Session>
|
||||
CNetFileTransferer(Session& session) :
|
||||
m_SendMessage{std::bind_front(&Session::SendMessage, std::ref(session))}
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -107,9 +107,9 @@ private:
|
|||
size_t packetsInFlight;
|
||||
};
|
||||
|
||||
INetSession* m_Session;
|
||||
std::function<bool(const CNetMessage* message)> m_SendMessage;
|
||||
|
||||
u32 m_NextRequestID;
|
||||
u32 m_NextRequestID{1};
|
||||
|
||||
|
||||
struct AsyncFileReceiveTask
|
||||
|
|
@ -132,7 +132,7 @@ private:
|
|||
using FileSendTasksMap = std::map<u32, CNetFileSendTask>;
|
||||
FileSendTasksMap m_FileSendTasks;
|
||||
|
||||
double m_LastProgressReportTime;
|
||||
double m_LastProgressReportTime{0};
|
||||
};
|
||||
|
||||
#endif // NETFILETRANSFER_H
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2025 Wildfire Games.
|
||||
/* Copyright (C) 2026 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
|
|
@ -36,7 +36,7 @@ constexpr int NETCLIENT_POLL_TIMEOUT = 50;
|
|||
constexpr int CHANNEL_COUNT = 1;
|
||||
|
||||
CNetClientSession::CNetClientSession(CNetClient& client) :
|
||||
m_Client(client), m_FileTransferer(this), m_Host(nullptr), m_Server(nullptr),
|
||||
m_Client(client), m_FileTransferer(*this), m_Host(nullptr), m_Server(nullptr),
|
||||
m_Stats(nullptr), m_IncomingMessages(16), m_OutgoingMessages(16),
|
||||
m_LoopRunning(false), m_ShouldShutdown(false), m_MeanRTT(0), m_LastReceivedTime(0)
|
||||
{
|
||||
|
|
@ -239,7 +239,7 @@ u32 CNetClientSession::GetMeanRTT() const
|
|||
}
|
||||
|
||||
CNetServerSession::CNetServerSession(CNetServerWorker& server, ENetPeer* peer) :
|
||||
m_Server(server), m_FileTransferer(this), m_Peer(peer), m_HostID(0), m_GUID(), m_UserName()
|
||||
m_Server(server), m_FileTransferer(*this), m_Peer(peer), m_HostID(0), m_GUID(), m_UserName()
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2025 Wildfire Games.
|
||||
/* Copyright (C) 2026 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
|
|
@ -50,22 +50,12 @@ typedef struct _ENetHost ENetHost;
|
|||
* A client runs one session at once; a server typically runs many.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Interface for sessions to which messages can be sent.
|
||||
*/
|
||||
class INetSession
|
||||
{
|
||||
public:
|
||||
virtual ~INetSession() {}
|
||||
virtual bool SendMessage(const CNetMessage* message) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* The client end of a network session.
|
||||
* Provides an abstraction of the network interface, allowing communication with the server.
|
||||
* The NetClientSession is threaded, so all calls to the public interface must be thread-safe.
|
||||
*/
|
||||
class CNetClientSession : public INetSession
|
||||
class CNetClientSession
|
||||
{
|
||||
NONCOPYABLE(CNetClientSession);
|
||||
|
||||
|
|
@ -94,7 +84,7 @@ public:
|
|||
/**
|
||||
* Queue up a message to send to the server on the next Loop() call.
|
||||
*/
|
||||
virtual bool SendMessage(const CNetMessage* message) override;
|
||||
bool SendMessage(const CNetMessage* message);
|
||||
|
||||
/**
|
||||
* Number of milliseconds since the most recent packet of the server was received.
|
||||
|
|
@ -155,7 +145,7 @@ private:
|
|||
* Thread-safety:
|
||||
* - This is constructed and used by CNetServerWorker in the network server thread.
|
||||
*/
|
||||
class CNetServerSession : public CFsm<CNetServerSession, CNetMessage*>, public INetSession
|
||||
class CNetServerSession : public CFsm<CNetServerSession, CNetMessage*>
|
||||
{
|
||||
NONCOPYABLE(CNetServerSession);
|
||||
|
||||
|
|
@ -203,7 +193,7 @@ public:
|
|||
/**
|
||||
* Send a message to the client.
|
||||
*/
|
||||
virtual bool SendMessage(const CNetMessage* message);
|
||||
bool SendMessage(const CNetMessage* message);
|
||||
|
||||
CNetFileTransferer& GetFileTransferer() { return m_FileTransferer; }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 2025 Wildfire Games.
|
||||
/* Copyright (C) 2026 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
|
|
@ -32,11 +32,10 @@ namespace
|
|||
{
|
||||
constexpr const char* MESSAGECONTENT{"Some example message content"};
|
||||
|
||||
class MessageQueues final : public INetSession
|
||||
class MessageQueues
|
||||
{
|
||||
public:
|
||||
~MessageQueues() final = default;
|
||||
bool SendMessage(const CNetMessage* message) final
|
||||
bool SendMessage(const CNetMessage* message)
|
||||
{
|
||||
switch (message->GetType())
|
||||
{
|
||||
|
|
@ -77,7 +76,7 @@ void CheckSizes(MessageQueues& queues, size_t requestSize, size_t responseSize,
|
|||
struct Participant
|
||||
{
|
||||
MessageQueues queues;
|
||||
CNetFileTransferer transferer{&queues};
|
||||
CNetFileTransferer transferer{queues};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue