summaryrefslogtreecommitdiff
path: root/src/components/media_manager/src/socket_streamer_adapter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/media_manager/src/socket_streamer_adapter.cc')
-rw-r--r--src/components/media_manager/src/socket_streamer_adapter.cc33
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 c6da8c7a7..45b1f63a1 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_)) {