|
Bredbandskollen CLI
1.2
Asynchronous network task engine
|
Pass sockets and messages between processes. More...
#include <socketreceiver.h>


Public Member Functions | |
| SocketReceiver (Task *task, int sock, pid_t peer_pid) | |
| virtual SocketConnection * | incoming () override |
| Return connection object if new client available, else return nullptr. | |
| int | passSocketToPeer (int fd) |
| Return 0 for success, errno on failure. | |
| ssize_t | passMessageToPeer (const char *buf, size_t len) |
| Send data to peer. Return amount sent, or < 0 for error. | |
| pid_t | peerPid () const |
| Return PID of the peer process. | |
| void | peerDead () |
| Stop communication with peer process and terminate as soon as possible. | |
Public Member Functions inherited from ServerSocket | |
| ServerSocket (const std::string &label, Task *task, uint16_t port, const std::string &ip="127.0.0.1") | |
| Create a new server socket. More... | |
| ServerSocket (int fd, const std::string &label, Task *owner) | |
| Create a new server to listen on an existing file descriptor. | |
| std::string | cacheLabel () override |
| Server sockets shall not be cached. | |
| void | stopListening () |
| Schedule listen socket for removal. | |
| void | tlsSetKey (unsigned int i) |
| unsigned int | tlsKey () const |
Public Member Functions inherited from Socket | |
| Socket (const std::string &label, Task *owner, const std::string &hostname, uint16_t port) | |
| Socket (const std::string &label, Task *owner, int fd) | |
| Task * | owner () const |
| Return task owning the socket. | |
| std::string | hostname () const |
| Return name of the host to which the socket is supposed to connect. | |
| uint16_t | port () const |
| Return port number to which the socket is supposed to connect. | |
| PollState | state () const |
| Return current socket state. | |
| int | getUnixDomainPeer () const |
| Return the peer socket descriptor. More... | |
| int | id () const |
| Return unique connection ID if connected. More... | |
| virtual void | setOwner (Task *t) |
| Set the given task as owner of the socket. | |
| void | setExpiry (double s) |
| Set a time to live for the socket. More... | |
| bool | hasExpired (const TimePoint &when) const |
| Return true if the given TimePoint is after the socket's expiry. | |
| const char * | localIp () const |
| Return local IP address in static buffer. | |
| struct addrinfo * | getAddressInfo (uint16_t iptype=0) |
| Perform DNS lookup of remote host. | |
Public Member Functions inherited from Logger | |
| Logger (std::string label) | |
| std::string | label () const |
| Return the object's log label. | |
| void | resetLabel (const std::string &new_label) |
| Modify the object's log label. | |
Additional Inherited Members | |
Static Public Member Functions inherited from Socket | |
| static const char * | getIp (int fd, uint16_t *port=nullptr, bool peer=true) |
| Return IP address of connected socket in static buffer. More... | |
| static const char * | getIp (struct sockaddr *address, uint16_t *port=nullptr) |
| Return IP address in static buffer. | |
| static const char * | getIp (struct addrinfo *address, uint16_t *port=nullptr) |
| Return IP address in static buffer. | |
Static Public Member Functions inherited from Logger | |
| static void | setLogFile (std::ostream &stream) |
| Set global log destination. More... | |
| static void | reopenLogFile (const std::string &filename) |
| If current log is a file (ofstream), reopen it with new filename: | |
| static void | setLogLimit (unsigned int loglines=0, unsigned int warnlines=0, unsigned int errlines=0) |
| Set max number of lines of info/warn/err log. More... | |
| static void | sayTime (std::ostream &stream) |
| Write current local time to the given stream. | |
| static bool | inError () |
| Return true if any error has been logged (globally since start) | |
| static std::ostream & | err_log (const std::string &label) |
| Write a line of error log. More... | |
| static std::ostream & | warn_log (const std::string &label) |
| Write a line of warning log. More... | |
| static std::ostream & | log (const std::string &label) |
| Write a line of info log. More... | |
| static void | flushLogFile () |
| static void | pauseLogging () |
| Disable all log output until next call to Logger::setLogFile. | |
| static double | secondsSince (const TimePoint &t) |
| static double | secondsTo (const TimePoint &t) |
| static int64_t | msSince (const TimePoint &t) |
| static int64_t | msTo (const TimePoint &t) |
| static bool | hasExpired (const TimePoint &t) |
| Return true if current time is after the given TimePoint. | |
| static TimePoint | timeNow () |
| Return current time. | |
| static TimePoint | timeAfter (double s) |
| Return current time plus s seconds. | |
| static TimePoint | timeMax () |
| Return a very distant time. | |
| static std::chrono::microseconds | toUs (double t) |
| Convert s (seconds) to std::chrono::microseconds. | |
| static std::string | dateString (time_t t=0) |
| Return local time, formatted as 2023-10-14T09:38:47+0200. | |
| static std::string | dateString2 (time_t t=0) |
| Return local time, formatted as Sat, 14 Oct 2023 09:38:47. | |
| static std::string | createHashKey (unsigned int length=20) |
| Return a random string. More... | |
Protected Member Functions inherited from Socket | |
| virtual bool | wantToSend () |
| Return true if socket is watched for writeability. | |
| virtual PollState | checkReadBlock () |
| This will be called regularly on READ_BLOCKED sockets to check if the block can be lifted. More... | |
| void | setWantToSend () |
| Notify intention of sending large amounts of data. More... | |
| int | socket () const |
| Return file descriptor. | |
| void | closeMe () |
| Tell the network engine that the connection should be closed. | |
| void | createNonBlockingSocket (struct addrinfo *addressEntry, struct addrinfo *localAddr=nullptr) |
| Create socket and initiate the connection. More... | |
| bool | setNonBlocking (int fd) |
| Set socket as non-blocking. | |
| bool | inError () const |
| Return true if the socket has encountered a fatal error. | |
Protected Member Functions inherited from Logger | |
| std::ostream & | errno_log () const |
| Write a line of error log after a failed system call has set the global errno to a non-zero value. More... | |
| std::ostream & | err_log () const |
| Write a line of error log. More... | |
| std::ostream & | warn_log () const |
| Write a line of warning log. More... | |
| std::ostream & | log () const |
| Write a line of info log. More... | |
| std::ostream & | dbg_log () const |
| Write a line of debug log. More... | |
Static Protected Member Functions inherited from Socket | |
| static bool | isTempError () |
| Return true unless last syscall encountered a fatal error. | |
| static int | closeSocket (int fd) |
| Close a file descriptor. | |
| static bool | socketInError (int fd) |
| Return true if the file descriptor has encountered a fatal error. | |
Pass sockets and messages between processes.
Typical use is to have a master process listen on a port, passing any new connections to child processes.
Both sockets and messages (data) may be passsed between processes.
A pair of Unix domain sockets must be created in the parent process, to be used by one SocketReceiver in the parent and one SocketReceiver in the child process.
| SocketReceiver::SocketReceiver | ( | Task * | task, |
| int | sock, | ||
| pid_t | peer_pid | ||
| ) |
Add a SocketReceiver to the given Task. The sock parameter shall be one of a pair of Unix domain sockets. The peer_pid parameter is used only for logging.