From b1eb362d8349447b607a9ccb075ba0043bb70947 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 25 Dec 2022 21:49:59 +0000 Subject: Refactor SocketEngine slightly. - Remove pointless shutdown() wrapper. - Remove pointless bounds checking function. - Make Bind and Listen take an EventHandler instead of a fd. - Add nullability attributes to every method. --- src/socketengine.cpp | 56 +++++++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 33 deletions(-) (limited to 'src/socketengine.cpp') diff --git a/src/socketengine.cpp b/src/socketengine.cpp index 216806a76..a256ae612 100644 --- a/src/socketengine.cpp +++ b/src/socketengine.cpp @@ -168,19 +168,14 @@ bool SocketEngine::HasFd(int fd) EventHandler* SocketEngine::GetRef(int fd) { - if (fd < 0 || static_cast(fd) >= ref.size()) + if (fd < 0 || static_cast(fd) >= ref.size()) return nullptr; return ref[fd]; } -bool SocketEngine::BoundsCheckFd(const EventHandler* eh) +int SocketEngine::Accept(EventHandler* eh, sockaddr* addr, socklen_t* addrlen) { - return eh && eh->HasFd(); -} - -int SocketEngine::Accept(EventHandler* fd, sockaddr* addr, socklen_t* addrlen) -{ - return accept(fd->GetFd(), addr, addrlen); + return accept(eh->GetFd(), addr, addrlen); } int SocketEngine::Close(EventHandler* eh) @@ -228,43 +223,43 @@ void SocketEngine::SetReuse(int fd) setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast(&on), sizeof(on)); } -ssize_t SocketEngine::RecvFrom(EventHandler* fd, void* buf, size_t len, int flags, sockaddr* from, socklen_t* fromlen) +ssize_t SocketEngine::RecvFrom(EventHandler* eh, void* buf, size_t len, int flags, sockaddr* from, socklen_t* fromlen) { - ssize_t nbRecvd = recvfrom(fd->GetFd(), static_cast(buf), len, flags, from, fromlen); + ssize_t nbRecvd = recvfrom(eh->GetFd(), static_cast(buf), len, flags, from, fromlen); stats.UpdateReadCounters(nbRecvd); return nbRecvd; } -ssize_t SocketEngine::Send(EventHandler* fd, const void* buf, size_t len, int flags) +ssize_t SocketEngine::Send(EventHandler* eh, const void* buf, size_t len, int flags) { - ssize_t nbSent = send(fd->GetFd(), static_cast(buf), len, flags); + ssize_t nbSent = send(eh->GetFd(), static_cast(buf), len, flags); stats.UpdateWriteCounters(nbSent); return nbSent; } -ssize_t SocketEngine::Recv(EventHandler* fd, void* buf, size_t len, int flags) +ssize_t SocketEngine::Recv(EventHandler* eh, void* buf, size_t len, int flags) { - ssize_t nbRecvd = recv(fd->GetFd(), static_cast(buf), len, flags); + ssize_t nbRecvd = recv(eh->GetFd(), static_cast(buf), len, flags); stats.UpdateReadCounters(nbRecvd); return nbRecvd; } -ssize_t SocketEngine::SendTo(EventHandler* fd, const void* buf, size_t len, int flags, const irc::sockets::sockaddrs& address) +ssize_t SocketEngine::SendTo(EventHandler* eh, const void* buf, size_t len, int flags, const irc::sockets::sockaddrs& address) { - ssize_t nbSent = sendto(fd->GetFd(), static_cast(buf), len, flags, &address.sa, address.sa_size()); + ssize_t nbSent = sendto(eh->GetFd(), static_cast(buf), len, flags, &address.sa, address.sa_size()); stats.UpdateWriteCounters(nbSent); return nbSent; } -ssize_t SocketEngine::WriteV(EventHandler* fd, const IOVector* iovec, int count) +ssize_t SocketEngine::WriteV(EventHandler* eh, const IOVector* iovec, int count) { - ssize_t sent = writev(fd->GetFd(), iovec, count); + ssize_t sent = writev(eh->GetFd(), iovec, count); stats.UpdateWriteCounters(sent); return sent; } #ifdef _WIN32 -int SocketEngine::WriteV(EventHandler* fd, const iovec* iovec, int count) +int SocketEngine::WriteV(EventHandler* eh, const iovec* iovec, int count) { // On Windows the fields in iovec are not in the order required by the Winsock API; IOVector has // the fields in the correct order. @@ -278,13 +273,13 @@ int SocketEngine::WriteV(EventHandler* fd, const iovec* iovec, int count) wiovec[i].iov_len = iovec[i].iov_len; wiovec[i].iov_base = reinterpret_cast(iovec[i].iov_base); } - return WriteV(fd, wiovec, count); + return WriteV(eh, wiovec, count); } #endif -int SocketEngine::Connect(EventHandler* fd, const irc::sockets::sockaddrs& address) +int SocketEngine::Connect(EventHandler* eh, const irc::sockets::sockaddrs& address) { - int ret = connect(fd->GetFd(), &address.sa, address.sa_size()); + int ret = connect(eh->GetFd(), &address.sa, address.sa_size()); #ifdef _WIN32 if ((ret == SOCKET_ERROR) && (WSAGetLastError() == WSAEWOULDBLOCK)) errno = EINPROGRESS; @@ -292,24 +287,19 @@ int SocketEngine::Connect(EventHandler* fd, const irc::sockets::sockaddrs& addre return ret; } -int SocketEngine::Shutdown(EventHandler* fd, int how) -{ - return shutdown(fd->GetFd(), how); -} - -int SocketEngine::Bind(int fd, const irc::sockets::sockaddrs& addr) +int SocketEngine::Shutdown(EventHandler* eh, int how) { - return bind(fd, &addr.sa, addr.sa_size()); + return shutdown(eh->GetFd(), how); } -int SocketEngine::Listen(int sockfd, int backlog) +int SocketEngine::Bind(EventHandler* eh, const irc::sockets::sockaddrs& addr) { - return listen(sockfd, backlog); + return bind(eh->GetFd(), &addr.sa, addr.sa_size()); } -int SocketEngine::Shutdown(int fd, int how) +int SocketEngine::Listen(EventHandler* eh, int backlog) { - return shutdown(fd, how); + return listen(eh->GetFd(), backlog); } void SocketEngine::Statistics::UpdateReadCounters(ssize_t len_in) -- cgit v1.3.1-10-gc9f91