Bitcoin Core
27.99.0
P2P Digital Currency
|
#include <net.h>
Public Member Functions | |
FuzzedSock (FuzzedDataProvider &fuzzed_data_provider) | |
~FuzzedSock () override | |
FuzzedSock & | operator= (Sock &&other) override |
Move assignment operator, grab the socket from another object and close ours (if set). More... | |
ssize_t | Send (const void *data, size_t len, int flags) const override |
send(2) wrapper. More... | |
ssize_t | Recv (void *buf, size_t len, int flags) const override |
recv(2) wrapper. More... | |
int | Connect (const sockaddr *, socklen_t) const override |
connect(2) wrapper. More... | |
int | Bind (const sockaddr *, socklen_t) const override |
bind(2) wrapper. More... | |
int | Listen (int backlog) const override |
listen(2) wrapper. More... | |
std::unique_ptr< Sock > | Accept (sockaddr *addr, socklen_t *addr_len) const override |
accept(2) wrapper. More... | |
int | GetSockOpt (int level, int opt_name, void *opt_val, socklen_t *opt_len) const override |
getsockopt(2) wrapper. More... | |
int | SetSockOpt (int level, int opt_name, const void *opt_val, socklen_t opt_len) const override |
setsockopt(2) wrapper. More... | |
int | GetSockName (sockaddr *name, socklen_t *name_len) const override |
getsockname(2) wrapper. More... | |
bool | SetNonBlocking () const override |
Set the non-blocking option on the socket. More... | |
bool | IsSelectable () const override |
Check if the underlying socket can be used for select(2) (or the Wait() method). More... | |
bool | Wait (std::chrono::milliseconds timeout, Event requested, Event *occurred=nullptr) const override |
Wait for readiness for input (recv) or output (send). More... | |
bool | WaitMany (std::chrono::milliseconds timeout, EventsPerSock &events_per_sock) const override |
Same as Wait() , but wait on many sockets within the same timeout. More... | |
bool | IsConnected (std::string &errmsg) const override |
Check if still connected. More... | |
Public Member Functions inherited from Sock | |
Sock ()=delete | |
Sock (SOCKET s) | |
Take ownership of an existent socket. More... | |
Sock (const Sock &)=delete | |
Copy constructor, disabled because closing the same socket twice is undesirable. More... | |
Sock (Sock &&other) | |
Move constructor, grab the socket from another object and close ours (if set). More... | |
virtual | ~Sock () |
Destructor, close the socket or do nothing if empty. More... | |
Sock & | operator= (const Sock &)=delete |
Copy assignment operator, disabled because closing the same socket twice is undesirable. More... | |
virtual void | SendComplete (Span< const unsigned char > data, std::chrono::milliseconds timeout, CThreadInterrupt &interrupt) const |
Send the given data, retrying on transient errors. More... | |
virtual void | SendComplete (Span< const char > data, std::chrono::milliseconds timeout, CThreadInterrupt &interrupt) const |
Convenience method, equivalent to SendComplete(MakeUCharSpan(data), timeout, interrupt) . More... | |
virtual std::string | RecvUntilTerminator (uint8_t terminator, std::chrono::milliseconds timeout, CThreadInterrupt &interrupt, size_t max_data) const |
Read from socket until a terminator character is encountered. More... | |
bool | operator== (SOCKET s) const |
Check if the internal socket is equal to s . More... | |
Private Attributes | |
FuzzedDataProvider & | m_fuzzed_data_provider |
std::optional< uint8_t > | m_peek_data |
Data to return when MSG_PEEK is used as a Recv() flag. More... | |
const bool | m_selectable |
Whether to pretend that the socket is select(2)-able. More... | |
Additional Inherited Members | |
Public Types inherited from Sock | |
using | Event = uint8_t |
using | EventsPerSock = std::unordered_map< std::shared_ptr< const Sock >, Events, HashSharedPtrSock, EqualSharedPtrSock > |
On which socket to wait for what events in WaitMany() . More... | |
Static Public Attributes inherited from Sock | |
static constexpr Event | RECV = 0b001 |
If passed to Wait() , then it will wait for readiness to read from the socket. More... | |
static constexpr Event | SEND = 0b010 |
If passed to Wait() , then it will wait for readiness to send to the socket. More... | |
static constexpr Event | ERR = 0b100 |
Ignored if passed to Wait() , but could be set in the occurred events if an exceptional condition has occurred on the socket or if it has been disconnected. More... | |
Protected Attributes inherited from Sock | |
SOCKET | m_socket |
Contained socket. More... | |
|
explicit |
|
overridevirtual |
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.
Reimplemented from Sock.
Definition at line 293 of file net.cpp.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
getsockopt(2) wrapper.
Equivalent to 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.
Reimplemented from Sock.
Definition at line 307 of file net.cpp.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
setsockopt(2) wrapper.
Equivalent to 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.
Reimplemented from Sock.
Definition at line 326 of file net.cpp.
|
overridevirtual |
Wait for readiness for input (recv) or output (send).
[in] | timeout | Wait this much for at least one of the requested events to occur. |
[in] | requested | Wait for those events, bitwise-or of RECV and SEND . |
[out] | occurred | If not nullptr and the function returns true , then this indicates which of the requested events occurred (ERR will be added, even if not requested, if an exceptional event occurs on the socket). A timeout is indicated by return value of true and occurred being set to 0. |
occurred
of 0 is returned), false otherwise Reimplemented from Sock.
Definition at line 371 of file net.cpp.
|
overridevirtual |
Same as Wait()
, but wait on many sockets within the same timeout.
[in] | timeout | Wait this long for at least one of the requested events to occur. |
[in,out] | events_per_sock | Wait for the requested events on these sockets and set occurred for the events that actually occurred. |
what[].occurred
are returned as 0), false otherwise Reimplemented from Sock.
Definition at line 388 of file net.cpp.
|
private |
|
mutableprivate |
|
private |
Whether to pretend that the socket is select(2)-able.
This is randomly set in the constructor. It should remain constant so that repeated calls to IsSelectable()
return the same value.