[Libreoffice-commits] online.git: common/Protocol.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Nov 28 04:51:19 UTC 2016
common/Protocol.cpp | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
New commits:
commit 86b38a29de0808305c928b7261463b542bcd86be
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Sun Nov 20 16:16:13 2016 -0500
loolwsd: fast in-place getTokenStringFromMessage
Change-Id: I5a7a7402c9394ac72aca907fc8b1072f6d2df5ad
Reviewed-on: https://gerrit.libreoffice.org/31284
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/common/Protocol.cpp b/common/Protocol.cpp
index 6cd5455..ad02f0f 100644
--- a/common/Protocol.cpp
+++ b/common/Protocol.cpp
@@ -157,8 +157,24 @@ namespace LOOLProtocol
bool getTokenStringFromMessage(const std::string& message, const std::string& name, std::string& value)
{
- Poco::StringTokenizer tokens(message, " \n", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
- return getTokenString(tokens, name, value);
+ if (message.size() > name.size() + 1)
+ {
+ auto pos = message.find(name);
+ while (pos != std::string::npos)
+ {
+ const auto beg = pos + name.size();
+ if (message[beg] == '=')
+ {
+ const auto end = message.find_first_of(" \n", beg);
+ value = message.substr(beg + 1, end - beg - 1);
+ return true;
+ }
+
+ pos = message.find(name, pos + name.size());
+ }
+ }
+
+ return false;
}
bool getTokenKeywordFromMessage(const std::string& message, const std::string& name, const std::map<std::string, int>& map, int& value)
More information about the Libreoffice-commits
mailing list