mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-04 19:08:51 +02:00
net: introduce Sock::WaitMany()
It allows waiting concurrently on more than one socket. Being a `virtual` `Sock` method it can be overriden by tests. Will be used to replace `CConnman::SocketEvents()`.
This commit is contained in:
@@ -223,6 +223,15 @@ bool FuzzedSock::Wait(std::chrono::milliseconds timeout, Event requested, Event*
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FuzzedSock::WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const
|
||||
{
|
||||
for (auto& [sock, events] : events_per_sock) {
|
||||
(void)sock;
|
||||
events.occurred = m_fuzzed_data_provider.ConsumeBool() ? events.requested : 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FuzzedSock::IsConnected(std::string& errmsg) const
|
||||
{
|
||||
if (m_fuzzed_data_provider.ConsumeBool()) {
|
||||
|
||||
@@ -72,6 +72,8 @@ public:
|
||||
|
||||
bool Wait(std::chrono::milliseconds timeout, Event requested, Event* occurred = nullptr) const override;
|
||||
|
||||
bool WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const override;
|
||||
|
||||
bool IsConnected(std::string& errmsg) const override;
|
||||
};
|
||||
|
||||
|
||||
@@ -162,6 +162,15 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per_sock) const override
|
||||
{
|
||||
for (auto& [sock, events] : events_per_sock) {
|
||||
(void)sock;
|
||||
events.occurred = events.requested;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
const std::string m_contents;
|
||||
mutable size_t m_consumed;
|
||||
|
||||
Reference in New Issue
Block a user