loolwsd/LOOLProtocol.cpp | 24 ++++++++---------------- loolwsd/LOOLProtocol.hpp | 39 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 19 deletions(-)
New commits: commit 9f39e465a6f898fee916b2d63639c56f140e85ad Author: Ashod Nakashian <[email protected]> Date: Sun Mar 27 14:30:03 2016 -0400 loolwsd: cleanup of the command parser Change-Id: I654e42ab6de92b7120ae2212d7e08c682d3d36f0 Reviewed-on: https://gerrit.libreoffice.org/23584 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/LOOLProtocol.cpp b/loolwsd/LOOLProtocol.cpp index 7c635be..b514636 100644 --- a/loolwsd/LOOLProtocol.cpp +++ b/loolwsd/LOOLProtocol.cpp @@ -150,28 +150,20 @@ namespace LOOLProtocol return true; } - std::string getFirstLine(const char *message, int length) - { - if (message == nullptr || length <= 0) - return ""; - - const char *endOfLine = static_cast<const char *>(std::memchr(message, '\n', length)); - if (endOfLine == nullptr) - return std::string(message, length); - else - return std::string(message, endOfLine-message); - } - - std::string getAbbreviatedMessage(const char *message, int length) + std::string getAbbreviatedMessage(const char *message, const int length) { if (message == nullptr || length <= 0) + { return ""; + } const auto firstLine = getFirstLine(message, length); - std::string result = "'" + firstLine + "'"; if (firstLine.size() < static_cast<std::string::size_type>(length)) - result += "..."; - return result; + { + return std::string('\'' + firstLine + "'..."); + } + + return std::string('\'' + firstLine + '\''); } }; diff --git a/loolwsd/LOOLProtocol.hpp b/loolwsd/LOOLProtocol.hpp index 5978041..9a5ac8b 100644 --- a/loolwsd/LOOLProtocol.hpp +++ b/loolwsd/LOOLProtocol.hpp @@ -79,7 +79,7 @@ namespace LOOLProtocol std::tuple<int, int, std::string> ParseVersion(const std::string& version); bool stringToInteger(const std::string& input, int& value); - + bool getTokenInteger(const std::string& token, const std::string& name, int& value); bool getTokenString(const std::string& token, const std::string& name, std::string& value); bool getTokenKeyword(const std::string& token, const std::string& name, const std::map<std::string, int>& map, int& value); @@ -87,8 +87,41 @@ namespace LOOLProtocol // Functions that parse messages. All return false if parsing fails bool parseStatus(const std::string& message, LibreOfficeKitDocumentType& type, int& nParts, int& currentPart, int& width, int& height); - std::string getFirstLine(const char *message, int length); - std::string getAbbreviatedMessage(const char *message, int length); + /// Returns the first token of a message given a delimiter. + inline + std::string getFirstToken(const char *message, const int length, const char delim = ' ') + { + if (message == nullptr || length <= 0) + { + return ""; + } + + const char *endOfLine = static_cast<const char *>(std::memchr(message, delim, length)); + const auto size = (endOfLine == nullptr ? length : endOfLine - message); + return std::string(message, size); + } + + inline + std::string getFirstToken(const std::vector<char>& message) + { + return getFirstToken(message.data(), message.size()); + } + + /// Returns the first line of a message. + inline + std::string getFirstLine(const char *message, const int length) + { + return getFirstToken(message, length, '\n'); + } + + inline + std::string getFirstLine(const std::vector<char>& message) + { + return getFirstLine(message.data(), message.size()); + } + + /// Returns an abbereviation of the message (the first line, indicating truncation). + std::string getAbbreviatedMessage(const char *message, const int length); }; #endif _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
