HTTPS SSH

Что это?

Это демонстрация того, как с помощью одного mchain-а организовать дозированную обработку потока сообщений. Смысл в том, чтобы либо собрать пакет из 100 сообщений (если сообщения идут без больших задержек), либо же собрать столько сообщений в пакет, сколько успело прийти за 100ms после получения первого сообщения.

Грубо говоря, нужно читать сообщения из канала. Когда вычитывается первое сообщение, инициируется отсчет тайм-аута в 100ms. Если в течении этих 100ms мы получаем 100 сообщений, то обрабатываем эти 100 сообщений. Если в течении 100ms мы получаем меньше 100 сообщений (или вообще больше не получаем ни одного сообщения), то обрабатываем столько сообщений, сколько успели накопить.

Данный пример написан как продолжение вот этой темы.

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

Примечание. Нужен компилятор с поддержкой C++14 (пример проверялся под VC++14.0, GCC 5.4-6.3, clang 3.8-3.9).

Для компиляции примера потребуется Ruby, RubyGems и Rake. Обычно все эти инструменты идут в одном пакете. Но может потребоваться устанавливать их по отдельности. Например:

sudo apt install ruby
sudo apt install rake

После установки Ruby (+RubyGems+Rake) нужно установить Mxx_ru:

gem install Mxx_ru

Или, если gem требует прав администратора:

sudo gem install Mxx_ru

После этого можно забрать исходный код примера с BitBucket-а и компилировать:

# Забираем исходники Mercurial-ом
hg clone https://bitbucket.org/sobjectizerteam/chain_and_timeout
cd chain_and_timeout
# Забираем все необходимые зависимости.
mxxruexternals
# Компилируем.
cd dev
ruby build.rb

Либо же, без Mercurial-а:

# Забираем и распаковываем исходники
wget https://bitbucket.org/sobjectizerteam/chain_and_timeout/get/tip.tar.bz2
tar xaf tip.tar.bz2
cd <каталог, который получился после распаковки>
# Забираем все необходимые зависимости.
mxxruexternals
# Компилируем.
cd dev
ruby build.rb

В результате компиляции в target/release должно оказаться приложение chain_and_timeout_app.

Аналогичные действия нужно предпринимать и под Windows.