loom

Форк
0
/
Initialize.cpp 
38 строк · 1.4 Кб
1
#include "Initialize.h"
2
#include "simodo/lsp/server/ServerContext.h"
3
#include "simodo/lsp/client/ClientParamsParsers.h"
4

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

8
namespace simodo::lsp
9
{
10

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

20
    if (_jsonrpc.params().type() == variable::ValueType::Object) {
21
        const std::shared_ptr<variable::Object> params_object = _jsonrpc.params().getObject();
22

23
        _params = lsp::parseClientParams(params_object);
24
    }
25

26
    variable::JsonRpc server_response = _server.initialize(_params, _jsonrpc.id());
27

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

35
    _server.sending().push(server_response);
36
}
37

38
}

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

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

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

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