#include "socket/tcp_socket.h" namespace Network { TCPSocket::TCPSocket(int domain) { init(domain); } int TCPSocket::init(int domain) { return init(domain, SOCK_STREAM, 0); } int TCPSocket::listen(int __n) { int retVal = ::listen(sock, __n); if (retVal == INVALID_SOCKET) spdlog::error("listen()"); return retVal; } void TCPSocket::accept(std::shared_ptr &newSock, Address &__addr) { SOCKET newsock = INVALID_SOCKET; newsock = ::accept(sock, &__addr.addr, &__addr.length); if (newsock == INVALID_SOCKET) { spdlog::error("accept() errno:{} {}", errno, strerror(errno)); std::exit(EXIT_FAILURE); } newSock = std::make_shared(); newSock->set(newsock, domain); newSock->remoteAddr = __addr; } int TCPSocket::recv(void *__restrict __buf, size_t __n, int __flags) { int retVal = ::recv(sock, (char *)__buf, __n, __flags); if (retVal == SOCKET_ERROR) { if (errno == EAGAIN || errno == EWOULDBLOCK) return retVal; spdlog::error("recv()"); } return retVal; } int TCPSocket::send(const void *__buf, size_t __n, int __flags) { int retVal = ::send(sock, (char *)__buf, __n, __flags); if (retVal == SOCKET_ERROR) spdlog::error("send()"); return retVal; } } // namespace Network