net/SocketDescriptor: add Shutdown()

This commit is contained in:
Max Kellermann 2018-08-21 11:31:58 +02:00
parent ebf607eef8
commit fd923d5d96
2 changed files with 28 additions and 0 deletions

View File

@ -488,3 +488,25 @@ SocketDescriptor::Write(const void *buffer, size_t length,
return ::sendto(Get(), (const char *)buffer, length, flags,
address.GetAddress(), address.GetSize());
}
#ifndef _WIN32
void
SocketDescriptor::Shutdown() noexcept
{
shutdown(Get(), SHUT_RDWR);
}
void
SocketDescriptor::ShutdownRead() noexcept
{
shutdown(Get(), SHUT_RD);
}
void
SocketDescriptor::ShutdownWrite() noexcept
{
shutdown(Get(), SHUT_WR);
}
#endif

View File

@ -241,6 +241,12 @@ public:
*/
ssize_t Write(const void *buffer, size_t length,
SocketAddress address) noexcept;
#ifndef _WIN32
void Shutdown() noexcept;
void ShutdownRead() noexcept;
void ShutdownWrite() noexcept;
#endif
};
static_assert(std::is_trivial<SocketDescriptor>::value, "type is not trivial");