diff options
Diffstat (limited to 'src/components/media_manager/src/socket_streamer_adapter.cc')
-rw-r--r-- | src/components/media_manager/src/socket_streamer_adapter.cc | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/src/components/media_manager/src/socket_streamer_adapter.cc b/src/components/media_manager/src/socket_streamer_adapter.cc index c6da8c7a75..45b1f63a17 100644 --- a/src/components/media_manager/src/socket_streamer_adapter.cc +++ b/src/components/media_manager/src/socket_streamer_adapter.cc @@ -1,5 +1,5 @@ -/** - * Copyright (c) 2013, Ford Motor Company +/* + * Copyright (c) 2014, Ford Motor Company * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -51,14 +51,16 @@ CREATE_LOGGERPTR_GLOBAL(logger, "SocketStreamerAdapter") SocketStreamerAdapter::SocketStreamerAdapter() : socket_fd_(0), is_ready_(false), - thread_(NULL), - streamer_(NULL), + streamer_(new Streamer(this)), + thread_(threads::CreateThread("SocketStreamer", streamer_)), messages_() { } SocketStreamerAdapter::~SocketStreamerAdapter() { - thread_->stop(); - streamer_ = NULL; + LOG4CXX_AUTO_TRACE(logger); + thread_->join(); + delete streamer_; + threads::DeleteThread(thread_); } void SocketStreamerAdapter::StartActivity(int32_t application_key) { @@ -110,15 +112,9 @@ bool SocketStreamerAdapter::is_app_performing_activity( } void SocketStreamerAdapter::Init() { - if (!thread_) { - LOG4CXX_INFO(logger, "Create and start sending thread"); - streamer_ = new Streamer(this); - thread_ = threads::CreateThread("SocketStreamer", streamer_); - const size_t kStackSize = 16384; - thread_->startWithOptions(threads::ThreadOptions(kStackSize)); - } else { - LOG4CXX_WARN(logger, "thread is already exist"); - } + LOG4CXX_DEBUG(logger, "Start sending thread"); + const size_t kStackSize = 16384; + thread_->start(threads::ThreadOptions(kStackSize)); } void SocketStreamerAdapter::SendData( @@ -201,19 +197,16 @@ void SocketStreamerAdapter::Streamer::threadMain() { LOG4CXX_TRACE(logger,"exit " << this); } -bool SocketStreamerAdapter::Streamer::exitThreadMain() { +void SocketStreamerAdapter::Streamer::exitThreadMain() { LOG4CXX_TRACE(logger,"enter " << this); stop_flag_ = true; stop(); server_->messages_.Shutdown(); - //exith threadMainshould whait while threadMain will be finished if (server_->socket_fd_ != -1) { shutdown(server_->socket_fd_, SHUT_RDWR); close(server_->socket_fd_); } - sync_primitives::AutoLock auto_lock(thread_lock); LOG4CXX_TRACE(logger,"exit " << this); - return true; } void SocketStreamerAdapter::Streamer::start() { @@ -253,7 +246,7 @@ void SocketStreamerAdapter::Streamer::start() { void SocketStreamerAdapter::Streamer::stop() { LOG4CXX_TRACE(logger,"enter " << this); if (0 == new_socket_fd_) { - LOG4CXX_ERROR(logger, "Client Socket does not exits: "); + LOG4CXX_ERROR(logger, "Client Socket does not exist: "); } else if (-1 == shutdown(new_socket_fd_, SHUT_RDWR)) { LOG4CXX_ERROR(logger, "Unable to shutdown socket " << strerror(errno)); } else if (-1 == ::close(new_socket_fd_)) { |