diff options
author | eidheim <eidheim@gmail.com> | 2020-01-18 20:22:28 +0300 |
---|---|---|
committer | eidheim <eidheim@gmail.com> | 2020-01-18 20:22:28 +0300 |
commit | 40463fb4c5e188392a9865f9339eb1e8c67ef4ac (patch) | |
tree | 57a54867c645c1654c2364f433594eb5ad0765de /client_ws.hpp | |
parent | 74fb8e9ac23e070f094142cc563508d7cbebe589 (diff) |
Simplified string() functions, and streambuf is no longer consumed when InMessage::string() is called
Diffstat (limited to 'client_ws.hpp')
-rw-r--r-- | client_ws.hpp | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/client_ws.hpp b/client_ws.hpp index 2d97717..1c82571 100644 --- a/client_ws.hpp +++ b/client_ws.hpp @@ -30,24 +30,9 @@ namespace SimpleWeb { return length; } - /// Convenience function to return std::string. The stream buffer is consumed. - /// Successive calls will return the same string. - const std::string &string() noexcept { - if(cached_string) - return *cached_string; - - cached_string = std::unique_ptr<std::string>(new std::string()); - - try { - auto size = streambuf.size(); - cached_string->resize(size); - read(&(*cached_string)[0], static_cast<std::streamsize>(size)); - return *cached_string; - } - catch(...) { - cached_string->clear(); - return *cached_string; - } + /// Convenience function to return std::string. + std::string string() noexcept { + return std::string(asio::buffers_begin(streambuf.data()), asio::buffers_end(streambuf.data())); } private: |