libreoffice-online/loolwsd/LOOLProtocol.hpp
Tor Lillqvist 389815ac63 Introduce LOLProtocol::getTokenKeyword() and use it
The new function takes a map from keywords to integer values, and accepts
parameters in the form of either name=keyword, or for backward compatibility,
name='keyword'. Use it to parse the type parameter of the key, mouse,
selecttext and selectgraphic messages. This restricts the accepted keywords to
those actually valid for each message.
2015-04-27 21:12:20 +03:00

77 lines
2.4 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#ifndef INCLUDED_LOOLPROTOCOL_HPP
#define INCLUDED_LOOLPROTOCOL_HPP
#include <map>
#include <string>
#define LOK_USE_UNSTABLE_API
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
namespace LOOLProtocol
{
// The frames sent from the client to the server are called
// "commands" and those sent from the server to the client are
// called "messages". At least until I come up with a better
// terminology.
// I don't want to call the latter "responses"
// because they are not necessarily responses to some "request" or
// "command". Also "event" would be misleading because that is
// typically used for things originated by the user, like key or
// mouse events. And in fact, those are here part of the
// "commands".
// Not sure if these enums will be needed
enum class Command
{
KEY,
LOAD,
MOUSE,
RESETSELECTION,
SAVEAS,
SELECTGRAPHIC,
SELECTTEXT,
STATUS,
TILE,
UNO,
};
enum class Message
{
CHILD,
CURSOR_VISIBLE,
ERROR,
GRAPHIC_SELECTION,
HYPERLINK_CLICKED,
INVALIDATE_CURSOR,
INVALIDATE_TILES,
STATUS,
TEXT_SELECTION,
TEXT_SELECTION_END,
TEXT_SELECTION_START,
TILE,
};
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);
// 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);
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */