[DEV] try to have fast tcp socket
This commit is contained in:
12
enet/Tcp.cpp
12
enet/Tcp.cpp
@@ -14,6 +14,18 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <etk/stdTools.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() :
|
enet::Tcp::Tcp() :
|
||||||
|
@@ -107,6 +107,8 @@ namespace enet {
|
|||||||
}
|
}
|
||||||
return ret/sizeof(T);
|
return ret/sizeof(T);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool setTCPNoDelay(bool _enabled);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <etk/stdTools.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) {
|
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;
|
std::string tmpname;
|
||||||
|
@@ -37,6 +37,7 @@ enet::WebSocket::WebSocket(enet::Tcp _connection, bool _isServer) :
|
|||||||
m_interface(),
|
m_interface(),
|
||||||
m_observer(nullptr),
|
m_observer(nullptr),
|
||||||
m_observerUriCheck(nullptr) {
|
m_observerUriCheck(nullptr) {
|
||||||
|
_connection.setTCPNoDelay(true);
|
||||||
if (_isServer == true) {
|
if (_isServer == true) {
|
||||||
ememory::SharedPtr<enet::HttpServer> interface = std::make_shared<enet::HttpServer>(std::move(_connection));
|
ememory::SharedPtr<enet::HttpServer> interface = std::make_shared<enet::HttpServer>(std::move(_connection));
|
||||||
interface->connectHeader(this, &enet::WebSocket::onReceiveRequest);
|
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) {
|
void enet::WebSocket::setInterface(enet::Tcp _connection, bool _isServer) {
|
||||||
|
_connection.setTCPNoDelay(true);
|
||||||
if (_isServer == true) {
|
if (_isServer == true) {
|
||||||
ememory::SharedPtr<enet::HttpServer> interface = std::make_shared<enet::HttpServer>(std::move(_connection));
|
ememory::SharedPtr<enet::HttpServer> interface = std::make_shared<enet::HttpServer>(std::move(_connection));
|
||||||
interface->connectHeader(this, &enet::WebSocket::onReceiveRequest);
|
interface->connectHeader(this, &enet::WebSocket::onReceiveRequest);
|
||||||
|
Reference in New Issue
Block a user