[DEV] try to have fast tcp socket

This commit is contained in:
Edouard DUPIN 2016-07-01 14:48:45 +02:00
parent d16c4b130d
commit 905721d2b9
4 changed files with 17 additions and 0 deletions

View File

@ -14,6 +14,18 @@
#include <unistd.h>
#include <string.h>
#include <etk/stdTools.h>
#include <netinet/tcp.h>
bool enet::Tcp::setTCPNoDelay(bool _enabled) {
if (m_socketId >= 0) {
int flag = _enabled==true?1:0;
if(setsockopt(m_socketId, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag)) == -1) {
return false;
}
return true;
}
return false;
}
enet::Tcp::Tcp() :

View File

@ -107,6 +107,8 @@ namespace enet {
}
return ret/sizeof(T);
}
bool setTCPNoDelay(bool _enabled);
};
}

View File

@ -15,6 +15,7 @@
#include <unistd.h>
#include <string.h>
#include <etk/stdTools.h>
#include <sys/socket.h>
enet::Tcp enet::connectTcpClient(uint8_t _ip1, uint8_t _ip2, uint8_t _ip3, uint8_t _ip4, uint16_t _port, uint32_t _numberRetry) {
std::string tmpname;

View File

@ -37,6 +37,7 @@ enet::WebSocket::WebSocket(enet::Tcp _connection, bool _isServer) :
m_interface(),
m_observer(nullptr),
m_observerUriCheck(nullptr) {
_connection.setTCPNoDelay(true);
if (_isServer == true) {
ememory::SharedPtr<enet::HttpServer> interface = std::make_shared<enet::HttpServer>(std::move(_connection));
interface->connectHeader(this, &enet::WebSocket::onReceiveRequest);
@ -50,6 +51,7 @@ enet::WebSocket::WebSocket(enet::Tcp _connection, bool _isServer) :
}
void enet::WebSocket::setInterface(enet::Tcp _connection, bool _isServer) {
_connection.setTCPNoDelay(true);
if (_isServer == true) {
ememory::SharedPtr<enet::HttpServer> interface = std::make_shared<enet::HttpServer>(std::move(_connection));
interface->connectHeader(this, &enet::WebSocket::onReceiveRequest);