summaryrefslogtreecommitdiff
path: root/src/components/media_manager/src/pipe_streamer_adapter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/media_manager/src/pipe_streamer_adapter.cc')
-rw-r--r--src/components/media_manager/src/pipe_streamer_adapter.cc76
1 files changed, 26 insertions, 50 deletions
diff --git a/src/components/media_manager/src/pipe_streamer_adapter.cc b/src/components/media_manager/src/pipe_streamer_adapter.cc
index 8bf14a546e..1c071d7653 100644
--- a/src/components/media_manager/src/pipe_streamer_adapter.cc
+++ b/src/components/media_manager/src/pipe_streamer_adapter.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Ford Motor Company
+ * Copyright (c) 2016, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,10 +30,6 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <unistd.h>
#include "utils/logger.h"
#include "utils/file_system.h"
#include "media_manager/pipe_streamer_adapter.h"
@@ -54,70 +50,50 @@ PipeStreamerAdapter::PipeStreamer::PipeStreamer(
const std::string& named_pipe_path,
const std::string& app_storage_folder)
: Streamer(adapter)
- , named_pipe_path_(named_pipe_path)
- , app_storage_folder_(app_storage_folder)
- , pipe_fd_(0) {
- if (!file_system::CreateDirectoryRecursively(app_storage_folder_)) {
- LOG4CXX_ERROR(logger_,
- "Cannot create app storage folder " << app_storage_folder_);
- return;
- }
- if ((mkfifo(named_pipe_path_.c_str(), S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) <
- 0) &&
- (errno != EEXIST)) {
- LOG4CXX_ERROR(logger_, "Cannot create pipe " << named_pipe_path_);
- } else {
- LOG4CXX_INFO(logger_,
- "Pipe " << named_pipe_path_ << " was successfully created");
- }
-}
-PipeStreamerAdapter::PipeStreamer::~PipeStreamer() {
- if (0 == unlink(named_pipe_path_.c_str())) {
- LOG4CXX_INFO(logger_, "Pipe " << named_pipe_path_ << " was removed");
- } else {
- LOG4CXX_ERROR(logger_, "Error removing pipe " << named_pipe_path_);
- }
-}
+ , pipe_(named_pipe_path)
+ , app_storage_folder_(app_storage_folder) {}
+
+PipeStreamerAdapter::PipeStreamer::~PipeStreamer() {}
bool PipeStreamerAdapter::PipeStreamer::Connect() {
- LOG4CXX_AUTO_TRACE(logger_);
+ LOGGER_AUTO_TRACE(logger_);
- pipe_fd_ = open(named_pipe_path_.c_str(), O_RDWR, 0);
- if (-1 == pipe_fd_) {
- LOG4CXX_ERROR(logger_, "Cannot open pipe for writing " << named_pipe_path_);
+ if (!file_system::CreateDirectoryRecursively(app_storage_folder_)) {
+ LOGGER_ERROR(logger_, "Cannot create app folder");
+ return false;
+ }
+
+ if (!pipe_.Open()) {
+ LOGGER_ERROR(logger_, "Cannot open pipe");
return false;
}
- LOG4CXX_INFO(logger_,
- "Pipe " << named_pipe_path_
- << " was successfuly opened for writing");
+ LOGGER_INFO(logger_, "Streamer connected to pipe");
return true;
}
void PipeStreamerAdapter::PipeStreamer::Disconnect() {
- LOG4CXX_AUTO_TRACE(logger_);
- if (0 == close(pipe_fd_)) {
- LOG4CXX_INFO(logger_, "Pipe " << named_pipe_path_ << " was closed");
- } else {
- LOG4CXX_ERROR(logger_, "Error closing pipe " << named_pipe_path_);
- }
+ LOGGER_AUTO_TRACE(logger_);
+
+ pipe_.Close();
+ LOGGER_INFO(logger_, "Streamer disconnected from pipe");
}
bool PipeStreamerAdapter::PipeStreamer::Send(
protocol_handler::RawMessagePtr msg) {
- LOG4CXX_AUTO_TRACE(logger_);
- ssize_t ret = write(pipe_fd_, msg->data(), msg->data_size());
- if (-1 == ret) {
- LOG4CXX_ERROR(logger_, "Failed writing data to pipe " << named_pipe_path_);
+ LOGGER_AUTO_TRACE(logger_);
+
+ size_t sent = 0;
+ if (!pipe_.Write(msg->data(), msg->data_size(), sent)) {
+ LOGGER_ERROR(logger_, "Cannot write to pipe");
return false;
}
- if (static_cast<uint32_t>(ret) != msg->data_size()) {
- LOG4CXX_WARN(logger_,
- "Couldn't write all the data to pipe " << named_pipe_path_);
+ if (sent != msg->data_size()) {
+ LOGGER_WARN(logger_, "Couldn't write all the data to pipe");
}
- LOG4CXX_INFO(logger_, "Streamer::sent " << msg->data_size());
+ LOGGER_INFO(logger_, "Streamer sent to pipe " << sent << " bytes");
return true;
}