diff options
author | fronneburg <fronneburg@xevo.com> | 2017-10-03 12:19:31 -0700 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2017-10-03 15:19:31 -0400 |
commit | 945413ef789a9b0b1f3c1196353e82a1afd117c2 (patch) | |
tree | c795f4abadd7545a5f61fa86989d207285d6f26a | |
parent | 2162e137c21a5b9e27b599af5dd99890f1acf24c (diff) | |
download | sdl_core-945413ef789a9b0b1f3c1196353e82a1afd117c2.tar.gz |
Fix/1701 (#1702)
proper socket streamer cleanup
6 files changed, 20 insertions, 1 deletions
diff --git a/src/components/media_manager/include/media_manager/file_streamer_adapter.h b/src/components/media_manager/include/media_manager/file_streamer_adapter.h index 293c6721ee..c4c91a98d8 100644 --- a/src/components/media_manager/include/media_manager/file_streamer_adapter.h +++ b/src/components/media_manager/include/media_manager/file_streamer_adapter.h @@ -54,6 +54,8 @@ class FileStreamerAdapter : public StreamerAdapter { const std::string& app_storage_folder); virtual ~FileStreamer(); + virtual void Close() {} + protected: virtual bool Connect(); virtual void Disconnect(); diff --git a/src/components/media_manager/include/media_manager/pipe_streamer_adapter.h b/src/components/media_manager/include/media_manager/pipe_streamer_adapter.h index 1e998ef82f..c079e04954 100644 --- a/src/components/media_manager/include/media_manager/pipe_streamer_adapter.h +++ b/src/components/media_manager/include/media_manager/pipe_streamer_adapter.h @@ -53,6 +53,8 @@ class PipeStreamerAdapter : public StreamerAdapter { const std::string& app_storage_folder); virtual ~PipeStreamer(); + virtual void Close() {} + protected: virtual bool Connect(); virtual void Disconnect(); diff --git a/src/components/media_manager/include/media_manager/socket_streamer_adapter.h b/src/components/media_manager/include/media_manager/socket_streamer_adapter.h index 45311b6077..3b647a0b83 100644 --- a/src/components/media_manager/include/media_manager/socket_streamer_adapter.h +++ b/src/components/media_manager/include/media_manager/socket_streamer_adapter.h @@ -55,6 +55,8 @@ class SocketStreamerAdapter : public StreamerAdapter { const std::string& header); virtual ~SocketStreamer(); + virtual void Close(); + protected: virtual bool Connect(); virtual void Disconnect(); diff --git a/src/components/media_manager/include/media_manager/streamer_adapter.h b/src/components/media_manager/include/media_manager/streamer_adapter.h index 30353b8d09..5ac8e05cac 100644 --- a/src/components/media_manager/include/media_manager/streamer_adapter.h +++ b/src/components/media_manager/include/media_manager/streamer_adapter.h @@ -72,6 +72,8 @@ class StreamerAdapter : public MediaAdapterImpl { virtual void threadMain(); virtual void exitThreadMain(); + virtual void Close() = 0; + protected: virtual bool Connect() = 0; virtual void Disconnect() = 0; diff --git a/src/components/media_manager/src/socket_streamer_adapter.cc b/src/components/media_manager/src/socket_streamer_adapter.cc index 2bb0fe10ec..60b01c901b 100644 --- a/src/components/media_manager/src/socket_streamer_adapter.cc +++ b/src/components/media_manager/src/socket_streamer_adapter.cc @@ -108,13 +108,21 @@ bool SocketStreamerAdapter::SocketStreamer::Connect() { return true; } +void SocketStreamerAdapter::SocketStreamer::Close() { + Disconnect(); +} + void SocketStreamerAdapter::SocketStreamer::Disconnect() { LOG4CXX_AUTO_TRACE(logger); if (0 < send_socket_fd_) { + shutdown(send_socket_fd_, SHUT_RDWR); close(send_socket_fd_); + send_socket_fd_ = 0; } if (0 < socket_fd_) { + shutdown(socket_fd_, SHUT_RDWR); close(socket_fd_); + socket_fd_ = 0; } } diff --git a/src/components/media_manager/src/streamer_adapter.cc b/src/components/media_manager/src/streamer_adapter.cc index 20c067da1c..90a40b1add 100644 --- a/src/components/media_manager/src/streamer_adapter.cc +++ b/src/components/media_manager/src/streamer_adapter.cc @@ -44,9 +44,12 @@ StreamerAdapter::StreamerAdapter(Streamer* const streamer) } StreamerAdapter::~StreamerAdapter() { - delete streamer_; + if (streamer_) { + streamer_->Close(); + } thread_->join(); threads::DeleteThread(thread_); + delete streamer_; } void StreamerAdapter::StartActivity(int32_t application_key) { |