summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/src/tcp
diff options
context:
space:
mode:
authorSho Amano <samano@xevo.com>2018-03-13 21:16:35 +0900
committerSho Amano <samano@xevo.com>2018-03-14 12:57:26 +0900
commitd7be4b4ad7d67f48ee116c4d9be54c0c0219a7df (patch)
tree712b017e45f674936495fb876e76baefaad74339 /src/components/transport_manager/src/tcp
parent3d61a8e0e3e84dbe3de72a69e35c1ef0a58eee1f (diff)
downloadsdl_core-d7be4b4ad7d67f48ee116c4d9be54c0c0219a7df.tar.gz
Enable NetworkInterfaceListener
Diffstat (limited to 'src/components/transport_manager/src/tcp')
-rw-r--r--src/components/transport_manager/src/tcp/tcp_client_listener.cc17
1 files changed, 17 insertions, 0 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 1f28fa39da..693158dba1 100644
--- a/src/components/transport_manager/src/tcp/tcp_client_listener.cc
+++ b/src/components/transport_manager/src/tcp/tcp_client_listener.cc
@@ -59,6 +59,7 @@
#include "utils/make_shared.h"
#include "utils/threads/thread.h"
#include "transport_manager/transport_adapter/transport_adapter_controller.h"
+#include "transport_manager/tcp/network_interface_listener.h"
#include "transport_manager/tcp/tcp_device.h"
#include "transport_manager/tcp/tcp_socket_connection.h"
@@ -78,6 +79,7 @@ TcpClientListener::TcpClientListener(TransportAdapterController* controller,
, thread_stop_requested_(false) {
thread_ = threads::CreateThread("TcpClientListener",
new ListeningThreadDelegate(this));
+ interface_listener_ = new NetworkInterfaceListener(this);
}
TransportAdapter::Error TcpClientListener::Init() {
@@ -113,6 +115,12 @@ TransportAdapter::Error TcpClientListener::Init() {
LOG4CXX_ERROR_WITH_ERRNO(logger_, "listen() failed");
return TransportAdapter::FAIL;
}
+
+ if (!interface_listener_->Init()) {
+ close(socket_);
+ socket_ = -1;
+ return TransportAdapter::FAIL;
+ }
return TransportAdapter::OK;
}
@@ -129,6 +137,8 @@ void TcpClientListener::Terminate() {
LOG4CXX_ERROR_WITH_ERRNO(logger_, "Failed to close socket");
}
socket_ = -1;
+
+ interface_listener_->Deinit();
}
bool TcpClientListener::IsInitialised() const {
@@ -300,8 +310,13 @@ TransportAdapter::Error TcpClientListener::StartListening() {
return TransportAdapter::BAD_STATE;
}
+ if (!interface_listener_->Start()) {
+ return TransportAdapter::FAIL;
+ }
+
if (!thread_->start()) {
LOG4CXX_ERROR(logger_, "Tcp client listener thread start failed");
+ interface_listener_->Stop();
return TransportAdapter::FAIL;
}
LOG4CXX_INFO(logger_, "Tcp client listener has started successfully");
@@ -327,6 +342,8 @@ TransportAdapter::Error TcpClientListener::StopListening() {
return TransportAdapter::BAD_STATE;
}
+ interface_listener_->Stop();
+
thread_->join();
LOG4CXX_INFO(logger_, "Tcp client listener has stopped successfully");