aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorVasil Dimov <vd@FreeBSD.org>2023-07-14 18:36:34 +0200
committerVasil Dimov <vd@FreeBSD.org>2023-10-31 18:19:22 +0100
commit1b19d1117ca5373a15313227b547ef4392022dbd (patch)
tree4670ed1ed5ab7d6ae97522005b4f842b77e9a265 /src/util
parent73dfa6da0801e3116e7e84cd5e089b98a9f70212 (diff)
downloadbitcoin-1b19d1117ca5373a15313227b547ef4392022dbd.tar.xz
sock: change Sock::SendComplete() to take Span
This would make it easier to pass other than `std::string` types, to be used in the `Socks5()` function.
Diffstat (limited to 'src/util')
-rw-r--r--src/util/sock.cpp9
-rw-r--r--src/util/sock.h9
2 files changed, 16 insertions, 2 deletions
diff --git a/src/util/sock.cpp b/src/util/sock.cpp
index d16dc56aa3..e896b87160 100644
--- a/src/util/sock.cpp
+++ b/src/util/sock.cpp
@@ -242,7 +242,7 @@ bool Sock::WaitMany(std::chrono::milliseconds timeout, EventsPerSock& events_per
#endif /* USE_POLL */
}
-void Sock::SendComplete(const std::string& data,
+void Sock::SendComplete(Span<const unsigned char> data,
std::chrono::milliseconds timeout,
CThreadInterrupt& interrupt) const
{
@@ -283,6 +283,13 @@ void Sock::SendComplete(const std::string& data,
}
}
+void Sock::SendComplete(Span<const char> data,
+ std::chrono::milliseconds timeout,
+ CThreadInterrupt& interrupt) const
+{
+ SendComplete(MakeUCharSpan(data), timeout, interrupt);
+}
+
std::string Sock::RecvUntilTerminator(uint8_t terminator,
std::chrono::milliseconds timeout,
CThreadInterrupt& interrupt,
diff --git a/src/util/sock.h b/src/util/sock.h
index d78e01929b..65e7ffc165 100644
--- a/src/util/sock.h
+++ b/src/util/sock.h
@@ -228,7 +228,14 @@ public:
* @throws std::runtime_error if the operation cannot be completed. In this case only some of
* the data will be written to the socket.
*/
- virtual void SendComplete(const std::string& data,
+ virtual void SendComplete(Span<const unsigned char> data,
+ std::chrono::milliseconds timeout,
+ CThreadInterrupt& interrupt) const;
+
+ /**
+ * Convenience method, equivalent to `SendComplete(MakeUCharSpan(data), timeout, interrupt)`.
+ */
+ virtual void SendComplete(Span<const char> data,
std::chrono::milliseconds timeout,
CThreadInterrupt& interrupt) const;