mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 10:43:19 -03:00
net: remove now unnecessary Sock::Get()
`Sock::Get()` was used only in `sock.{cpp,h}`. Remove it and access `Sock::m_socket` directly. Unit tests that used `Get()` to test for equality still verify that the behavior is correct by using the added `operator==()`.
This commit is contained in:
parent
944b21b70a
commit
7829272f78
3 changed files with 23 additions and 22 deletions
|
@ -38,7 +38,7 @@ BOOST_AUTO_TEST_CASE(constructor_and_destructor)
|
|||
{
|
||||
const SOCKET s = CreateSocket();
|
||||
Sock* sock = new Sock(s);
|
||||
BOOST_CHECK_EQUAL(sock->Get(), s);
|
||||
BOOST_CHECK(*sock == s);
|
||||
BOOST_CHECK(!SocketIsClosed(s));
|
||||
delete sock;
|
||||
BOOST_CHECK(SocketIsClosed(s));
|
||||
|
@ -51,7 +51,7 @@ BOOST_AUTO_TEST_CASE(move_constructor)
|
|||
Sock* sock2 = new Sock(std::move(*sock1));
|
||||
delete sock1;
|
||||
BOOST_CHECK(!SocketIsClosed(s));
|
||||
BOOST_CHECK_EQUAL(sock2->Get(), s);
|
||||
BOOST_CHECK(*sock2 == s);
|
||||
delete sock2;
|
||||
BOOST_CHECK(SocketIsClosed(s));
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(move_assignment)
|
|||
*sock2 = std::move(*sock1);
|
||||
delete sock1;
|
||||
BOOST_CHECK(!SocketIsClosed(s));
|
||||
BOOST_CHECK_EQUAL(sock2->Get(), s);
|
||||
BOOST_CHECK(*sock2 == s);
|
||||
delete sock2;
|
||||
BOOST_CHECK(SocketIsClosed(s));
|
||||
}
|
||||
|
|
|
@ -44,8 +44,6 @@ Sock& Sock::operator=(Sock&& other)
|
|||
return *this;
|
||||
}
|
||||
|
||||
SOCKET Sock::Get() const { return m_socket; }
|
||||
|
||||
ssize_t Sock::Send(const void* data, size_t len, int flags) const
|
||||
{
|
||||
return send(m_socket, static_cast<const char*>(data), len, flags);
|
||||
|
@ -411,6 +409,11 @@ void Sock::Close()
|
|||
m_socket = INVALID_SOCKET;
|
||||
}
|
||||
|
||||
bool Sock::operator==(SOCKET s) const
|
||||
{
|
||||
return m_socket == s;
|
||||
};
|
||||
|
||||
std::string NetworkErrorString(int err)
|
||||
{
|
||||
#if defined(WIN32)
|
||||
|
|
|
@ -21,8 +21,7 @@
|
|||
static constexpr auto MAX_WAIT_FOR_IO = 1s;
|
||||
|
||||
/**
|
||||
* RAII helper class that manages a socket. Mimics `std::unique_ptr`, but instead of a pointer it
|
||||
* contains a socket and closes it automatically when it goes out of scope.
|
||||
* RAII helper class that manages a socket and closes it automatically when it goes out of scope.
|
||||
*/
|
||||
class Sock
|
||||
{
|
||||
|
@ -63,43 +62,37 @@ public:
|
|||
virtual Sock& operator=(Sock&& other);
|
||||
|
||||
/**
|
||||
* Get the value of the contained socket.
|
||||
* @return socket or INVALID_SOCKET if empty
|
||||
*/
|
||||
[[nodiscard]] virtual SOCKET Get() const;
|
||||
|
||||
/**
|
||||
* send(2) wrapper. Equivalent to `send(this->Get(), data, len, flags);`. Code that uses this
|
||||
* send(2) wrapper. Equivalent to `send(m_socket, data, len, flags);`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual ssize_t Send(const void* data, size_t len, int flags) const;
|
||||
|
||||
/**
|
||||
* recv(2) wrapper. Equivalent to `recv(this->Get(), buf, len, flags);`. Code that uses this
|
||||
* recv(2) wrapper. Equivalent to `recv(m_socket, buf, len, flags);`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual ssize_t Recv(void* buf, size_t len, int flags) const;
|
||||
|
||||
/**
|
||||
* connect(2) wrapper. Equivalent to `connect(this->Get(), addr, addrlen)`. Code that uses this
|
||||
* connect(2) wrapper. Equivalent to `connect(m_socket, addr, addrlen)`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual int Connect(const sockaddr* addr, socklen_t addr_len) const;
|
||||
|
||||
/**
|
||||
* bind(2) wrapper. Equivalent to `bind(this->Get(), addr, addr_len)`. Code that uses this
|
||||
* bind(2) wrapper. Equivalent to `bind(m_socket, addr, addr_len)`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual int Bind(const sockaddr* addr, socklen_t addr_len) const;
|
||||
|
||||
/**
|
||||
* listen(2) wrapper. Equivalent to `listen(this->Get(), backlog)`. Code that uses this
|
||||
* listen(2) wrapper. Equivalent to `listen(m_socket, backlog)`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual int Listen(int backlog) const;
|
||||
|
||||
/**
|
||||
* accept(2) wrapper. Equivalent to `std::make_unique<Sock>(accept(this->Get(), addr, addr_len))`.
|
||||
* accept(2) wrapper. Equivalent to `std::make_unique<Sock>(accept(m_socket, addr, addr_len))`.
|
||||
* Code that uses this wrapper can be unit tested if this method is overridden by a mock Sock
|
||||
* implementation.
|
||||
* The returned unique_ptr is empty if `accept()` failed in which case errno will be set.
|
||||
|
@ -108,7 +101,7 @@ public:
|
|||
|
||||
/**
|
||||
* getsockopt(2) wrapper. Equivalent to
|
||||
* `getsockopt(this->Get(), level, opt_name, opt_val, opt_len)`. Code that uses this
|
||||
* `getsockopt(m_socket, level, opt_name, opt_val, opt_len)`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual int GetSockOpt(int level,
|
||||
|
@ -118,7 +111,7 @@ public:
|
|||
|
||||
/**
|
||||
* setsockopt(2) wrapper. Equivalent to
|
||||
* `setsockopt(this->Get(), level, opt_name, opt_val, opt_len)`. Code that uses this
|
||||
* `setsockopt(m_socket, level, opt_name, opt_val, opt_len)`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual int SetSockOpt(int level,
|
||||
|
@ -128,7 +121,7 @@ public:
|
|||
|
||||
/**
|
||||
* getsockname(2) wrapper. Equivalent to
|
||||
* `getsockname(this->Get(), name, name_len)`. Code that uses this
|
||||
* `getsockname(m_socket, name, name_len)`. Code that uses this
|
||||
* wrapper can be unit tested if this method is overridden by a mock Sock implementation.
|
||||
*/
|
||||
[[nodiscard]] virtual int GetSockName(sockaddr* name, socklen_t* name_len) const;
|
||||
|
@ -266,6 +259,11 @@ public:
|
|||
*/
|
||||
[[nodiscard]] virtual bool IsConnected(std::string& errmsg) const;
|
||||
|
||||
/**
|
||||
* Check if the internal socket is equal to `s`. Use only in tests.
|
||||
*/
|
||||
bool operator==(SOCKET s) const;
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Contained socket. `INVALID_SOCKET` designates the object is empty.
|
||||
|
|
Loading…
Add table
Reference in a new issue