Sponge
CS144's user-space TCP library
Public Member Functions | List of all members
FullStackSocket Class Reference

Helper class that makes a TCPOverIPv4overEthernetSpongeSocket behave more like a (kernel) TCPSocket. More...

#include <tcp_sponge_socket.hh>

Inheritance diagram for FullStackSocket:
Inheritance graph
[legend]

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
 
TCPSpongeSocketoperator= (const TCPSpongeSocket &)=delete
 
TCPSpongeSocketoperator= (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...
 
FileDescriptoroperator= (const FileDescriptor &other)=delete
 copy assignment is forbidden More...
 
 FileDescriptor (FileDescriptor &&other)=default
 move construction is allowed More...
 
FileDescriptoroperator= (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...
 

Detailed Description

Helper class that makes a TCPOverIPv4overEthernetSpongeSocket behave more like a (kernel) TCPSocket.

Definition at line 132 of file tcp_sponge_socket.hh.

Constructor & Destructor Documentation

◆ FullStackSocket()

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.

Member Function Documentation

◆ connect()

void FullStackSocket::connect ( const Address address)

Definition at line 321 of file tcp_sponge_socket.cc.


The documentation for this class was generated from the following files: