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

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

#include <tcp_sponge_socket.hh>

Inheritance diagram for CS144TCPSocket:
Inheritance graph
[legend]

Public Member Functions

 CS144TCPSocket ()
 
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 TCPOverIPv4SpongeSocket behave more like a (kernel) TCPSocket.

Definition at line 125 of file tcp_sponge_socket.hh.

Constructor & Destructor Documentation

◆ CS144TCPSocket()

CS144TCPSocket::CS144TCPSocket ( )

Definition at line 288 of file tcp_sponge_socket.cc.

Member Function Documentation

◆ connect()

void CS144TCPSocket::connect ( const Address address)

Definition at line 290 of file tcp_sponge_socket.cc.


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