An open API service indexing awesome lists of open source software.

https://github.com/stiffstream/async_restinio_async_libcurl_ru

Пример использования RESTinio и libcurl в одном приложении в асинхронном режиме
https://github.com/stiffstream/async_restinio_async_libcurl_ru

Last synced: 8 months ago
JSON representation

Пример использования RESTinio и libcurl в одном приложении в асинхронном режиме

Awesome Lists containing this project

README

          

Данный репозиторий содержит демонстрационные примеры, описанные в серии статей на ресурсе Habrhabr.ru:
"Асинхронные HTTP-запросы на C++: входящие через RESTinio, исходящие через libcurl",
[Часть 1](https://habrahabr.ru/post/349728/),
[Часть 2](https://habrahabr.ru/post/349818/),
[Часть 3](https://habrahabr.ru/post/349986/).

# Как взять и попробовать?

## Что потребуется?

Компилятор с более-менее нормальной поддержкой C++14. Мы проверяли на gcc-5.4 и 7.3, clang-3.9 и 5.0.

Linux или FreeBSD. Под Windows примеры не проверялись. Возможно, какие-то из них под Windows заработают, но не bridge_server_1_pipe, в котором используется Unix-овый pipe.

Так же потребуется установленная libcurl (т.е. с необходимыми заголовочными файлами и библиотеками). Остальные зависимости примеры подтаскивают и собирают самостоятельно.

## Как взять?

В данном репозитории находятся только исходные тексты самих примеров. Исходные тексты зависимостей (т.к. Asio, fmtlib, restinio и пр.)
в репозиторий не включены. Есть два способа взять примеры с необходимыми для них зависимостями.

### Загрузить полный архив

В секции Downloads находятся архивы, в которые включены все исходные тексты: и самих примеров, и их зависимостей.
Поэтому самый простой способ -- это загрузить соответствующий архив из Downloads, распаковать его, зайти в `async_restinio_async_libcurl_ru/dev`
и перейти к компиляции примеров.

### Использовать MxxRu::externals

В этом случае вам потребуется Ruby + MxxRu + различный инструментарий, который из коробки есть у Linux/FreeBSD-разработчиков (вроде git, tar, unzip и пр.). В этом случае:

1. Устанавливаем Ruby и RubyGems (обычно RubyGems идет сразу с Ruby, но где-то может придется ставить отдельно).
2. Устанавливаем MxxRu: `gem install Mxx_ru`
3. Делаем git clone: `git clone https://github.com/Stiffstream/async_restinio_async_libcurl_ru`
4. Заходим в нужный подкаталог: `cd async_restinio_async_libcurl_ru`
5. Запускаем команду `mxxruexternals`.
6. Ждем пока все зависимости подтянутся.

После этого можно заходить в подкаталог `dev` и переходить к компиляции.

## Как попробовать?

### Компиляция посредством CMake

Для сборки CMake применяется стандартный набор действий:

~~~~~
cd async_restinio_async_libcurl_ru/dev
mkdir cmake_build
cd cmake_build
cmake -DCMAKE_INSTALL_PREFIX=target -DCMAKE_BUILD_TYPE=release ..
cmake --build . --config Release
cmake --build . --target install
~~~~~

Затем заходим в подкаталог `target/bin` и запускаем оттуда получившиеся исполняемые файлы.

### Компиляция посредством MxxRu

Для сборки через MxxRu:

~~~~~
cd async_restinio_async_libcurl_ru/dev
ruby build.rb
~~~~~

Результаты сборки будут в находится в подкаталоге `target` и его подкаталогах с именами вида `gcc_7_3_0__x86_64_pc_linux_gnu`.