From: Mikhail Kurinnoi Date: Tue, 5 Feb 2019 10:58:54 +0000 (+0300) Subject: Add TCP socket prompt feature. X-Git-Tag: submit/tizen/20190405.141848~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6cdf0c4611de3a44cd2a49049924ee80687ee96b;p=sdk%2Ftools%2Fheaptrack.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/src/track/libheaptrack.cpp b/src/track/libheaptrack.cpp index f93acfb..03cd85c 100644 --- a/src/track/libheaptrack.cpp +++ b/src/track/libheaptrack.cpp @@ -164,8 +164,20 @@ outStream* createFile(const char* fileName) } unsetenv("DUMP_HEAPTRACK_SOCKET"); } - debugLog("%s", "will write to socket"); - return OpenStream(Port); + + outStream *tmpStream = OpenStream(Port); + + env = getenv("DUMP_HEAPTRACK_SOCKET_PROMPT"); + if (env) { + if (fprintf(tmpStream, "%s\n", env) < 0 + || !tmpStream->Flush()) { + fprintf(stderr, "WARNING: can't send socket prompt \"%s\".\n", env); + } + unsetenv("DUMP_HEAPTRACK_SOCKET_PROMPT"); + } + + debugLog("will write to socket/%p\n", tmpStream); + return tmpStream; } if (outputFileName.empty()) { diff --git a/src/track/outstream/outstream.h b/src/track/outstream/outstream.h index 0d3084d..e927af4 100644 --- a/src/track/outstream/outstream.h +++ b/src/track/outstream/outstream.h @@ -18,6 +18,7 @@ public: virtual int Putc(int Char) noexcept = 0; virtual int Puts(const char *String) noexcept = 0; + virtual bool Flush() noexcept = 0; }; template diff --git a/src/track/outstream/outstream_file.cpp b/src/track/outstream/outstream_file.cpp index 54ab758..855b979 100644 --- a/src/track/outstream/outstream_file.cpp +++ b/src/track/outstream/outstream_file.cpp @@ -58,3 +58,12 @@ int outStreamFILE::Puts(const char *String) noexcept } return fputs(String, Stream_); } + +bool outStreamFILE::Flush() noexcept +{ + if (!Stream_) { + errno = EIO; + return false; + } + return fflush(Stream_) != EOF; +} diff --git a/src/track/outstream/outstream_file.h b/src/track/outstream/outstream_file.h index b4167d2..0b0d9f9 100644 --- a/src/track/outstream/outstream_file.h +++ b/src/track/outstream/outstream_file.h @@ -31,6 +31,7 @@ public: int Putc(int Char) noexcept override; int Puts(const char *String) noexcept override; + bool Flush() noexcept override; private: FILE *Stream_; diff --git a/src/track/outstream/outstream_socket.cpp b/src/track/outstream/outstream_socket.cpp index 2311cbe..65cd252 100644 --- a/src/track/outstream/outstream_socket.cpp +++ b/src/track/outstream/outstream_socket.cpp @@ -163,3 +163,12 @@ int outStreamSOCKET::Puts(const char *String) noexcept return EOF; } + +bool outStreamSOCKET::Flush() noexcept +{ + if (Socket_ == -1) { + errno = EIO; + return false; + } + return FlushBuffer(); +} diff --git a/src/track/outstream/outstream_socket.h b/src/track/outstream/outstream_socket.h index c02de54..910ca03 100644 --- a/src/track/outstream/outstream_socket.h +++ b/src/track/outstream/outstream_socket.h @@ -34,6 +34,7 @@ public: int Putc(int Char) noexcept override; int Puts(const char *String) noexcept override; + bool Flush() noexcept override; static constexpr int MinAllowedSocketPort = 1; static constexpr int MaxAllowedSocketPort = 65535;