diff options
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) { |