Skip to content

Commit

Permalink
more socket stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
Siarhei Dziki committed Mar 1, 2024
1 parent 3a91198 commit 4d1aab1
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 6 deletions.
4 changes: 4 additions & 0 deletions src/relay/relay.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ bool relay::init()
m_socket->bind(mainPort);
m_socket->setNonBlocking(true);

int32_t bufferSize{};
m_socket->setSendBufferSize(0x20000, bufferSize);
m_socket->setRecvBufferSize(0x20000, bufferSize);

return true;
}

Expand Down
4 changes: 4 additions & 0 deletions src/socket/udpsocket.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,9 @@ public:

virtual bool setNonBlocking(bool value) = 0;

virtual bool setSendBufferSize(int32_t size, int32_t& newSize) = 0;

virtual bool setRecvBufferSize(int32_t size, int32_t& newSize) = 0;

virtual bool isValid() = 0;
};
26 changes: 22 additions & 4 deletions src/socket/unix/udpsocketUnix.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,35 @@ int32_t udpsocketUnix::recvFrom(void* buffer, size_t bufferSize, internetaddr* a
if (unixAddr == nullptr) [[unlikely]]
return -1;

socklen_t socklen = sizeof(sockaddr_in);
return ::recvfrom(m_socket, buffer, bufferSize, 0, (struct sockaddr*)&unixAddr->getAddr(), &socklen);
socklen_t socklen = sizeof(sockaddr_in);
return ::recvfrom(m_socket, buffer, bufferSize, 0, (struct sockaddr*)&unixAddr->getAddr(), &socklen);
}

bool udpsocketUnix::setNonBlocking(bool value)
bool udpsocketUnix::setNonBlocking(bool bNonBlocking)
{
int flags = fcntl(m_socket, F_GETFL, 0);
if (flags == -1) [[unlikely]]
return false;
flags = bNonBlocking ? flags | O_NONBLOCK : flags ^ (flags & O_NONBLOCK);
return fcntl(m_socket, F_SETFL, ) != -1;
}

return fcntl(m_socket, F_SETFL, flags | O_NONBLOCK) != -1;
bool udpsocketUnix::setSendBufferSize(int32_t size, int32_t& newSize)
{
//int32_t sizeSize = sizeof(size);
//bool bOk = setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (char*)&size, sizeof(int32_t)) == 0;
//getsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (char*)&newSize, &sizeSize);
//return bOk;
return false;
}

bool udpsocketUnix::setRecvBufferSize(int32_t size, int32_t& newSize)
{
//int32_t sizeSize = sizeof(size);
//bool bOk = setsockopt(m_socket, SOL_SOCKET, SO_SNDBUF, (char*)&size, sizeof(int32_t)) == 0;
//getsockopt(m_socket, SOL_SOCKET, SO_RCVBUF, (char*)&newSize, &sizeSize);
//return bOk;
return false;
}

bool udpsocketUnix::isValid()
Expand Down
8 changes: 6 additions & 2 deletions src/socket/unix/udpsocketUnix.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,17 @@ public:

virtual ~udpsocketUnix();

virtual bool bind(int32_t port) override;
virtual bool bind(int32_t port) override;

virtual int32_t sendTo(void* buffer, size_t bufferSize, const internetaddr* addr) override;

virtual int32_t recvFrom(void* buffer, size_t bufferSize, internetaddr* addr) override;

virtual bool setNonBlocking(bool value) override;
virtual bool setNonBlocking(bool bNonBlocking) override;

virtual bool setSendBufferSize(int32_t size, int32_t& newSize) override;

virtual bool setRecvBufferSize(int32_t size, int32_t& newSize) override;

virtual bool isValid() override;

Expand Down

0 comments on commit 4d1aab1

Please sign in to comment.