summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/src/tcp/tcp_client_listener.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/transport_manager/src/tcp/tcp_client_listener.cc')
-rw-r--r--src/components/transport_manager/src/tcp/tcp_client_listener.cc67
1 files changed, 34 insertions, 33 deletions
diff --git a/src/components/transport_manager/src/tcp/tcp_client_listener.cc b/src/components/transport_manager/src/tcp/tcp_client_listener.cc
index 28a3c389da..a075b1afb7 100644
--- a/src/components/transport_manager/src/tcp/tcp_client_listener.cc
+++ b/src/components/transport_manager/src/tcp/tcp_client_listener.cc
@@ -42,12 +42,12 @@
#include <sys/sysctl.h>
#include <sys/socket.h>
#ifdef __linux__
-# include <linux/tcp.h>
+#include <linux/tcp.h>
#else // __linux__
-# include <sys/time.h>
-# include <netinet/in.h>
-# include <netinet/tcp.h>
-# include <netinet/tcp_var.h>
+#include <sys/time.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netinet/tcp_var.h>
#endif // __linux__
#include <sstream>
@@ -66,12 +66,12 @@ CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
TcpClientListener::TcpClientListener(TransportAdapterController* controller,
const uint16_t port,
const bool enable_keepalive)
- : port_(port),
- enable_keepalive_(enable_keepalive),
- controller_(controller),
- thread_(0),
- socket_(-1),
- thread_stop_requested_(false) {
+ : port_(port)
+ , enable_keepalive_(enable_keepalive)
+ , controller_(controller)
+ , thread_(0)
+ , socket_(-1)
+ , thread_stop_requested_(false) {
thread_ = threads::CreateThread("TcpClientListener",
new ListeningThreadDelegate(this));
}
@@ -86,7 +86,7 @@ TransportAdapter::Error TcpClientListener::Init() {
return TransportAdapter::FAIL;
}
- sockaddr_in server_address = { 0 };
+ sockaddr_in server_address = {0};
server_address.sin_family = AF_INET;
server_address.sin_port = htons(port_);
server_address.sin_addr.s_addr = INADDR_ANY;
@@ -94,7 +94,8 @@ TransportAdapter::Error TcpClientListener::Init() {
int optval = 1;
setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
- if (bind(socket_, reinterpret_cast<sockaddr*>(&server_address),
+ if (bind(socket_,
+ reinterpret_cast<sockaddr*>(&server_address),
sizeof(server_address)) != 0) {
LOG4CXX_ERROR_WITH_ERRNO(logger_, "bind() failed");
return TransportAdapter::FAIL;
@@ -148,8 +149,8 @@ void SetKeepaliveOptions(const int fd) {
setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle, sizeof(keepidle));
setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &keepcnt, sizeof(keepcnt));
setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &keepintvl, sizeof(keepintvl));
- setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &user_timeout,
- sizeof(user_timeout));
+ setsockopt(
+ fd, IPPROTO_TCP, TCP_USER_TIMEOUT, &user_timeout, sizeof(user_timeout));
#elif defined(__QNX__) // __linux__
// TODO(KKolodiy): Out of order!
const int kMidLength = 4;
@@ -177,7 +178,7 @@ void SetKeepaliveOptions(const int fd) {
tval.tv_sec = keepidle;
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(yes));
setsockopt(fd, IPPROTO_TCP, TCP_KEEPALIVE, &tval, sizeof(tval));
-#endif // __QNX__
+#endif // __QNX__
}
void TcpClientListener::Loop() {
@@ -185,9 +186,8 @@ void TcpClientListener::Loop() {
while (!thread_stop_requested_) {
sockaddr_in client_address;
socklen_t client_address_size = sizeof(client_address);
- const int connection_fd = accept(socket_,
- (struct sockaddr*) &client_address,
- &client_address_size);
+ const int connection_fd = accept(
+ socket_, (struct sockaddr*)&client_address, &client_address_size);
if (thread_stop_requested_) {
LOG4CXX_DEBUG(logger_, "thread_stop_requested_");
close(connection_fd);
@@ -206,7 +206,8 @@ void TcpClientListener::Loop() {
}
char device_name[32];
- strncpy(device_name, inet_ntoa(client_address.sin_addr),
+ strncpy(device_name,
+ inet_ntoa(client_address.sin_addr),
sizeof(device_name) / sizeof(device_name[0]));
LOG4CXX_INFO(logger_, "Connected client " << device_name);
@@ -214,16 +215,15 @@ void TcpClientListener::Loop() {
SetKeepaliveOptions(connection_fd);
}
- TcpDevice* tcp_device = new TcpDevice(client_address.sin_addr.s_addr,
- device_name);
+ TcpDevice* tcp_device =
+ new TcpDevice(client_address.sin_addr.s_addr, device_name);
DeviceSptr device = controller_->AddDevice(tcp_device);
tcp_device = static_cast<TcpDevice*>(device.get());
- const ApplicationHandle app_handle = tcp_device->AddIncomingApplication(
- connection_fd);
+ const ApplicationHandle app_handle =
+ tcp_device->AddIncomingApplication(connection_fd);
- TcpSocketConnection* connection(
- new TcpSocketConnection(device->unique_device_id(), app_handle,
- controller_));
+ TcpSocketConnection* connection(new TcpSocketConnection(
+ device->unique_device_id(), app_handle, controller_));
connection->set_socket(connection_fd);
const TransportAdapter::Error error = connection->Start();
if (error != TransportAdapter::OK) {
@@ -237,11 +237,12 @@ void TcpClientListener::StopLoop() {
thread_stop_requested_ = true;
// We need to connect to the listening socket to unblock accept() call
int byesocket = socket(AF_INET, SOCK_STREAM, 0);
- sockaddr_in server_address = { 0 };
+ sockaddr_in server_address = {0};
server_address.sin_family = AF_INET;
server_address.sin_port = htons(port_);
server_address.sin_addr.s_addr = INADDR_ANY;
- connect(byesocket, reinterpret_cast<sockaddr*>(&server_address),
+ connect(byesocket,
+ reinterpret_cast<sockaddr*>(&server_address),
sizeof(server_address));
shutdown(byesocket, SHUT_RDWR);
close(byesocket);
@@ -250,8 +251,9 @@ void TcpClientListener::StopLoop() {
TransportAdapter::Error TcpClientListener::StartListening() {
LOG4CXX_AUTO_TRACE(logger_);
if (thread_->is_running()) {
- LOG4CXX_WARN(logger_,
- "TransportAdapter::BAD_STATE. Listener has already been started");
+ LOG4CXX_WARN(
+ logger_,
+ "TransportAdapter::BAD_STATE. Listener has already been started");
return TransportAdapter::BAD_STATE;
}
@@ -273,8 +275,7 @@ void TcpClientListener::ListeningThreadDelegate::threadMain() {
TcpClientListener::ListeningThreadDelegate::ListeningThreadDelegate(
TcpClientListener* parent)
- : parent_(parent) {
-}
+ : parent_(parent) {}
TransportAdapter::Error TcpClientListener::StopListening() {
LOG4CXX_AUTO_TRACE(logger_);