loom

Форк
0
/
Initialize.cpp 
36 строк · 1.3 Кб
1
#include "Initialize.h"
2
#include "simodo/lsp-server/ServerContext.h"
3

4
#include "simodo/variable/json/Rpc.h"
5
#include "simodo/variable/json/Serialization.h"
6

7
namespace simodo::lsp
8
{
9

10
void Initialize::work()
11
{
12
    if (_server.state() != ServerState::None
13
     || _jsonrpc.id() <= 0
14
     || _jsonrpc.params().type() != variable::ValueType::Object) {
15
        _server.log().critical("There are wrong parameter structure of 'initialize' command", variable::toJson(_jsonrpc.value()));
16
        /// @todo Скорректировать коды (и тексты) ошибок
17
        _server.sending().push(variable::JsonRpc(1, u"Invalid request", _jsonrpc.id()));
18
        return;
19
    }
20
    const std::shared_ptr<variable::Object> params_object = _jsonrpc.params().getObject();
21

22
    _params = lsp::parseClientParams(params_object);
23

24
    variable::JsonRpc server_response = _server.initialize(_params, _jsonrpc.id());
25

26
    if (!server_response.is_valid()) {
27
        _server.log().critical("Unable to create initialization structure", variable::toJson(_jsonrpc.value()));
28
        /// @todo Скорректировать коды (и тексты) ошибок
29
        _server.sending().push(variable::JsonRpc(3, u"Unable to create initialization structure", _jsonrpc.id()));
30
        return;
31
    }
32

33
    _server.sending().push(server_response);
34
}
35

36
}

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

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

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

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