Sponge
CS144's user-space TCP library
|
Helper class that makes a TCPOverIPv4overEthernetSpongeSocket behave more like a (kernel) TCPSocket. More...
#include <tcp_sponge_socket.hh>
Public Member Functions | |
FullStackSocket () | |
void | connect (const Address &address) |
Public Member Functions inherited from TCPSpongeSocket< AdaptT > | |
TCPSpongeSocket (AdaptT &&datagram_interface) | |
Construct from the interface that the TCPConnection thread will use to read and write datagrams. More... | |
~TCPSpongeSocket () | |
When a connected socket is destructed, it will send a RST. More... | |
void | connect (const TCPConfig &c_tcp, const FdAdapterConfig &c_ad) |
Connect using the specified configurations; blocks until connect succeeds or fails. More... | |
void | listen_and_accept (const TCPConfig &c_tcp, const FdAdapterConfig &c_ad) |
Listen and accept using the specified configurations; blocks until accept succeeds or fails. More... | |
void | wait_until_closed () |
TCPSpongeSocket (const TCPSpongeSocket &)=delete | |
TCPSpongeSocket (TCPSpongeSocket &&)=delete | |
TCPSpongeSocket & | operator= (const TCPSpongeSocket &)=delete |
TCPSpongeSocket & | operator= (TCPSpongeSocket &&)=delete |
void | bind (const Address &address)=delete |
Address | local_address () const =delete |
Address | peer_address () const =delete |
void | set_reuseaddr ()=delete |
Public Member Functions inherited from LocalStreamSocket | |
LocalStreamSocket (FileDescriptor &&fd) | |
Construct from a file descriptor. More... | |
Public Member Functions inherited from Socket | |
void | bind (const Address &address) |
Bind a socket to a specified address with bind(2), usually for listen/accept. More... | |
void | connect (const Address &address) |
Connect a socket to a specified peer address with connect(2). More... | |
Address | local_address () const |
Get local address of socket with getsockname(2). More... | |
Address | peer_address () const |
Get peer address of socket with getpeername(2). More... | |
void | set_reuseaddr () |
Allow local address to be reused sooner via SO_REUSEADDR. More... | |
void | shutdown (const int how) |
Shut down a socket via shutdown(2). More... | |
Public Member Functions inherited from FileDescriptor | |
FileDescriptor (const int fd) | |
Construct from a file descriptor number returned by the kernel. More... | |
~FileDescriptor ()=default | |
Free the std::shared_ptr; the FDWrapper destructor calls close() when the refcount goes to zero. More... | |
void | close () |
Close the underlying file descriptor. More... | |
FileDescriptor | duplicate () const |
Copy a FileDescriptor explicitly, increasing the FDWrapper refcount. More... | |
std::string | read (const size_t limit=std::numeric_limits< size_t >::max()) |
Read up to limit bytes. More... | |
void | read (std::string &str, const size_t limit=std::numeric_limits< size_t >::max()) |
Read up to limit bytes into str (caller can allocate storage) More... | |
void | set_blocking (const bool blocking_state) |
Set blocking(true) or non-blocking(false) More... | |
size_t | write (BufferViewList buffer, const bool write_all=true) |
Write a buffer (or list of buffers), possibly blocking until all is written. More... | |
size_t | write (const char *str, const bool write_all=true) |
Write a string, possibly blocking until all is written. More... | |
size_t | write (const std::string &str, const bool write_all=true) |
Write a string, possibly blocking until all is written. More... | |
int | fd_num () const |
underlying descriptor number More... | |
bool | eof () const |
EOF flag state. More... | |
bool | closed () const |
closed flag state More... | |
unsigned int | read_count () const |
number of reads More... | |
unsigned int | write_count () const |
number of writes More... | |
FileDescriptor (const FileDescriptor &other)=delete | |
copy construction is forbidden More... | |
FileDescriptor & | operator= (const FileDescriptor &other)=delete |
copy assignment is forbidden More... | |
FileDescriptor (FileDescriptor &&other)=default | |
move construction is allowed More... | |
FileDescriptor & | operator= (FileDescriptor &&other)=default |
move assignment is allowed More... | |
Additional Inherited Members | |
Protected Member Functions inherited from Socket | |
Socket (const int domain, const int type) | |
Construct via socket(2). More... | |
Socket (FileDescriptor &&fd, const int domain, const int type) | |
Construct from a file descriptor. More... | |
template<typename option_type > | |
void | setsockopt (const int level, const int option, const option_type &option_value) |
Wrapper around setsockopt(2). More... | |
Helper class that makes a TCPOverIPv4overEthernetSpongeSocket behave more like a (kernel) TCPSocket.
Definition at line 132 of file tcp_sponge_socket.hh.
FullStackSocket::FullStackSocket | ( | ) |
Construct a TCP (stream) socket, using the CS144 TCPConnection object, that encapsulates TCP segments in IP datagrams, then encapsulates those IP datagrams in Ethernet frames sent to the Ethernet address of the next hop.
Definition at line 315 of file tcp_sponge_socket.cc.
void FullStackSocket::connect | ( | const Address & | address | ) |
Definition at line 321 of file tcp_sponge_socket.cc.