From: Mikhail Kurinnoi Date: Mon, 4 Feb 2019 11:19:47 +0000 (+0300) Subject: Add TCP socket prompt feature. X-Git-Tag: submit/tizen/20190405.141848~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dca9c8286a6a43535e2dd80f5e583f2858ecbe3f;p=sdk%2Ftools%2Fcoreprofiler.git Add TCP socket prompt feature. Provide custom socket prompt string in order to check send/receive capability of established connection. Required by VS plugin. --- diff --git a/README.md b/README.md index f2cabc6..200aea3 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,9 @@ dumped (only timestamp of execution and configuration parameters is stored). - `PROF_TRACE_SOCKET` - optional, defines port of the socket. `PROF_TRACE_STREAM` should be `Socket`. The default port is 6050. + - `PROF_TRACE_SOCKET_PROMPT` - optional, defines server prompt string. + `PROF_TRACE_STREAM` should be `Socket`. + ### Control logging - `PROF_LOG_STREAM` - defines the output channel for log messages. Can be diff --git a/src/config/configurationmanager.cpp b/src/config/configurationmanager.cpp index 33ee9f3..85bec8e 100644 --- a/src/config/configurationmanager.cpp +++ b/src/config/configurationmanager.cpp @@ -126,6 +126,7 @@ void ConfigurationManager::FetchConfig(TraceLogConfig &config) const FetchValue("PROF_TRACE_STREAM", new_config.OutputStream); FetchValue("PROF_TRACE_SOCKET", new_config.SocketPort); + FetchValue("PROF_TRACE_SOCKET_PROMPT", new_config.SocketPrompt); // Apply changes to the current configuration. config = new_config; diff --git a/src/config/tracelogconfig.cpp b/src/config/tracelogconfig.cpp index be28098..278328d 100644 --- a/src/config/tracelogconfig.cpp +++ b/src/config/tracelogconfig.cpp @@ -24,6 +24,7 @@ TraceLogConfig::TraceLogConfig() : OutputStream(TraceLogOutputStream::Stdout) , FileName() , SocketPort() + , SocketPrompt() {} void TraceLogConfig::Validate() diff --git a/src/config/tracelogconfig.h b/src/config/tracelogconfig.h index 4f8d9aa..94de1ca 100644 --- a/src/config/tracelogconfig.h +++ b/src/config/tracelogconfig.h @@ -60,6 +60,7 @@ struct TraceLogConfig // std::string SocketPort; + std::string SocketPrompt; static constexpr int MinAllowedSocketPort = 1; static constexpr int MaxAllowedSocketPort = 65535; static constexpr uint16_t DefaultSocketPort = 6050; diff --git a/src/profiler.cpp b/src/profiler.cpp index a725c5e..aa1bdb4 100644 --- a/src/profiler.cpp +++ b/src/profiler.cpp @@ -305,7 +305,7 @@ void Profiler::SetupTraceLog(TraceLogConfig &config) socket_port = static_cast(stoi(config.SocketPort)); } m_traceLog.reset( - ITraceLog::Create(ITraceLog::SocketStream, socket_port)); + ITraceLog::Create(ITraceLog::SocketStream, socket_port, config.SocketPrompt)); } } diff --git a/src/tracelog/tracelog.cpp b/src/tracelog/tracelog.cpp index 0c59ef6..755152b 100644 --- a/src/tracelog/tracelog.cpp +++ b/src/tracelog/tracelog.cpp @@ -64,7 +64,7 @@ public: } } - TraceLog(SocketStream_t, uint16_t port) + TraceLog(SocketStream_t, uint16_t port, const std::string &SocketPrompt) : m_stream(*new net::osocketstream()) , m_stream_owner(true) , m_tracefmt(m_stream) @@ -73,6 +73,10 @@ public: { m_stream.exceptions(std::ios::failbit | std::ios::badbit); static_cast(m_stream).start(port); + if (!SocketPrompt.empty()) + { + m_stream << SocketPrompt << std::endl; + } } catch (...) { @@ -454,7 +458,7 @@ ITraceLog *ITraceLog::Create( // static ITraceLog *ITraceLog::Create( - SocketStream_t SocketStream, uint16_t port) + SocketStream_t SocketStream, uint16_t port, const std::string &SocketPrompt) { - return new TraceLog(SocketStream, port); + return new TraceLog(SocketStream, port, SocketPrompt); } diff --git a/src/tracelog/tracelog.h b/src/tracelog/tracelog.h index dbf9d81..a7b15ed 100644 --- a/src/tracelog/tracelog.h +++ b/src/tracelog/tracelog.h @@ -63,7 +63,7 @@ public: static ITraceLog *Create(FileStream_t, const std::string &filename); - static ITraceLog *Create(SocketStream_t, uint16_t port); + static ITraceLog *Create(SocketStream_t, uint16_t port, const std::string &SocketPrompt); // // Profiler records