loom

Форк
0
/
TaskDistribute.cpp 
73 строки · 3.4 Кб
1
#include "TaskDistribute.h"
2
#include "simodo/lsp-server/ServerContext.h"
3
#include "parsers/Initialize.h"
4
#include "parsers/Initialized.h"
5
#include "parsers/Shutdown.h"
6
#include "parsers/DocDidOpen.h"
7
#include "parsers/DocDidChange.h"
8
#include "parsers/DocDidClose.h"
9
#include "parsers/DocHover.h"
10
#include "parsers/DocumentSymbol.h"
11
#include "parsers/SemanticTokens.h"
12
#include "parsers/GotoDeclaration.h"
13
#include "parsers/GotoDefinition.h"
14
#include "parsers/Completion.h"
15
#include "parsers/SegmentationFault.h"
16
#include "parsers/SimodoCommand.h"
17

18
#include "simodo/variable/json/Serialization.h"
19
#include "simodo/variable/json/Rpc.h"
20
#include "simodo/inout/convert/functions.h"
21

22
namespace simodo::lsp
23
{
24

25
void TaskDistribute::work()
26
{
27
    variable::JsonRpc json_rpc(_jsonrpc_content);
28

29
    /// @note Метод может быть пустым только когда сделаем отправку запросов с сервера на клиент
30
    if (!json_rpc.is_valid() || json_rpc.method().empty()) {
31
        _server.log().error("Unrecognized JSON-RPC structure", _jsonrpc_content);
32
        _server.sending().push(
33
            /// @todo Скорректировать коды (и тексты) ошибок
34
            simodo::variable::JsonRpc(-1, u"Unrecognized JSON-RPC structure", json_rpc.id()));
35
    }
36

37
    if (json_rpc.method() == u"initialize")
38
        _server.tp().submit(new Initialize(_server,_jsonrpc_content));
39
    else if (json_rpc.method() == u"initialized")
40
        _server.tp().submit(new Initialized(_server,_jsonrpc_content));
41
    else if (json_rpc.method() == u"shutdown")
42
        _server.tp().submit(new Shutdown(_server,_jsonrpc_content));
43
    else if (json_rpc.method() == u"textDocument/didOpen")
44
        _server.tp().submit(new DocDidOpen(_server,_jsonrpc_content));
45
    else if (json_rpc.method() == u"textDocument/didChange")
46
        _server.tp().submit(new DocDidChange(_server,_jsonrpc_content));
47
    else if (json_rpc.method() == u"textDocument/didClose")
48
        _server.tp().submit(new DocDidClose(_server,_jsonrpc_content));
49
    else if (json_rpc.method() == u"textDocument/hover")
50
        _server.tp().submit(new DocHover(_server,_jsonrpc_content));
51
    else if (json_rpc.method() == u"textDocument/documentSymbol")
52
        _server.tp().submit(new DocumentSymbol(_server,_jsonrpc_content));
53
    else if (json_rpc.method().starts_with(u"textDocument/semanticTokens"))
54
        _server.tp().submit(new SemanticTokens(_server,_jsonrpc_content));
55
    else if (json_rpc.method() == u"textDocument/declaration")
56
        _server.tp().submit(new GotoDeclaration(_server,_jsonrpc_content));
57
    else if (json_rpc.method() == u"textDocument/definition")
58
        _server.tp().submit(new GotoDefinition(_server,_jsonrpc_content));
59
    else if (json_rpc.method() == u"textDocument/completion")
60
        _server.tp().submit(new Completion(_server,_jsonrpc_content));
61
    else if (json_rpc.method() == u"simodo/command")
62
        _server.tp().submit(new SimodoCommand(_server,_jsonrpc_content));
63
    else if (json_rpc.method() == u"SegmentationFault")
64
        _server.tp().submit(new SegmentationFault(_server,_jsonrpc_content));
65
    else {
66
        _server.log().warning("Unsupported method '" + inout::toU8(json_rpc.method()) + "'", _jsonrpc_content);
67
        _server.sending().push(
68
            /// @todo Скорректировать коды (и тексты) ошибок
69
            simodo::variable::JsonRpc(-1, u"Unsupported method '" + json_rpc.method() + u"'", json_rpc.id()));
70
    }
71
}
72

73
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.