From 0c23d0bf3d12d94027e876e6a4b648797ab27a94 Mon Sep 17 00:00:00 2001 From: Simon Rasmussen Date: Fri, 19 May 2017 01:22:42 +0200 Subject: [PATCH] Added set options function for sockets --- include/ur_modern_driver/tcp_socket.h | 1 + include/ur_modern_driver/ur/server.h | 2 ++ include/ur_modern_driver/ur/stream.h | 2 +- src/tcp_socket.cpp | 7 +++++++ src/ur/server.cpp | 8 ++++++++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/include/ur_modern_driver/tcp_socket.h b/include/ur_modern_driver/tcp_socket.h index 303d49e..9822424 100644 --- a/include/ur_modern_driver/tcp_socket.h +++ b/include/ur_modern_driver/tcp_socket.h @@ -25,6 +25,7 @@ protected: { return false; } + virtual void setOptions(int socket_fd); bool setup(std::string &host, int port); diff --git a/include/ur_modern_driver/ur/server.h b/include/ur_modern_driver/ur/server.h index dba5fe5..c5c8412 100644 --- a/include/ur_modern_driver/ur/server.h +++ b/include/ur_modern_driver/ur/server.h @@ -20,6 +20,8 @@ protected: { return ::bind(socket_fd, address, address_len) == 0; } + virtual void setOptions(int socket_fd); + public: URServer(int port); diff --git a/include/ur_modern_driver/ur/stream.h b/include/ur_modern_driver/ur/stream.h index e3bbb23..60619a8 100644 --- a/include/ur_modern_driver/ur/stream.h +++ b/include/ur_modern_driver/ur/stream.h @@ -32,7 +32,7 @@ public: } void disconnect() { - LOG_INFO("Disconnecting"); + LOG_INFO("Disconnecting from %s:%d", host_.c_str(), port_); TCPSocket::close(); } diff --git a/src/tcp_socket.cpp b/src/tcp_socket.cpp index 01685bf..f0049ec 100644 --- a/src/tcp_socket.cpp +++ b/src/tcp_socket.cpp @@ -16,6 +16,12 @@ TCPSocket::~TCPSocket() close(); } +void TCPSocket::setOptions(int socket_fd) +{ + int flag = 1; + setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(int)); +} + bool TCPSocket::setup(std::string &host, int port) { if(state_ == SocketState::Connected) @@ -63,6 +69,7 @@ bool TCPSocket::setup(std::string &host, int port) } else { + setOptions(socket_fd_); state_ = SocketState::Connected; LOG_INFO("Connection established for %s:%d", host.c_str(), port); } diff --git a/src/ur/server.cpp b/src/ur/server.cpp index 6c99e13..fd929fe 100644 --- a/src/ur/server.cpp +++ b/src/ur/server.cpp @@ -9,6 +9,14 @@ URServer::URServer(int port) { } +void URServer::setOptions(int socket_fd) +{ + TCPSocket::setOptions(socket_fd); + + int flag = 1; + setsockopt(socket_fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(int)); +} + std::string URServer::getIP() { char buf[128];