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:
phosit 2026-03-03 21:51:22 +01:00
parent e0c189a43e
commit e2dbcea487
No known key found for this signature in database
GPG key ID: C9430B600671C268
5 changed files with 24 additions and 35 deletions

View file

@ -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);
}
}

View file

@ -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

View file

@ -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()
{
}

View file

@ -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; }

View file

@ -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};
};
}