понедельник, 7 марта 2011 г.

Qt Echo Server introduced

"asio samples" пополнились еще одним проектом - "qt_echo_server".
На данный момент это отражено только в SVN-репозитории.
Поддерживается сборка при помощи MSVS 2010 и Qt Creator.

Несмотря на то, что проект еще не закончен (парсинг конфигурации, задаваемой в GUI), "qt_echo_server" уже собирается и работает в:
1) Windows (Windows XP/Vista: MSVS 2010 + Qt 4.7.0 static build with static C/C++ runtime; Windows 7: MS Visual C++ 2008 + Qt Creator 2.1.0 + Nokia Qt libraries 4.7.2 for Windows);
2) Ubuntu 10.10 (Qt Creator из станд. репозиториев + установленные согласно офиц. документации Boost C++ Libraries 1.46);
3) Kubuntu 10.10 (Qt Creator из станд. репозиториев + установленные согласно офиц. документации Boost C++ Libraries 1.46 + Boost.Asio 1.5.1).

Всем, кому приходило в голову соединять boost::bind или произвольные функторы C++ с "Qt signal/slot", будет весьма интересно то, как это получилось у меня - это является одним из вопросов, решением которых выступает данный "sample" ("qt_echo_server").

пятница, 4 марта 2011 г.

Move semantic supported

Теперь "asio samples" (в основном проект "echo_server" и менее "nmea_client") поддерживают C++0x move semantic (rvalue reference):
1) для тех компиляторов, что не поддерживают еще не законченный стандрат (в части rvalue reference и move semantic) - MS Visual C++ 2008 (9.0) - все остается по-прежнему (хвала "проклятому" препроцессору :)
2) для компиляторов с "достаточной" реализацией move semantic - MS Visual C++ 2010 (10.0), Intel C++ Compiler 12.x, GCC 4.5 - везде, где это допустимо используются rvalue references, std::move и, конечно же, std::forward (спасибо статьям Dave Abrahams в блоге C++Next.

Для Intel C++ Compiler 12.x в build/intel12/boost_1_46_patches/intel_rvalue_ref_on.patch содержится патч, который "включает" поддержку rvalue reference в Boost C++ Libraries 1.46 и, соответсвенно, в "asio samples" (используется boost-вский config.hpp).

Для GCC 4.5 ключ компиляции, ответственный за поддержку rvalue reference, включается непосредственно в *.pro-файлах (проекты для Qt Creator).
Для получения "реальной пользы" от поддержки move semantic необходимо установить Boost.Asio 1.5.1 (developer release) в Boost C++ Libraries 1.46 - только тогда "срабатывает" большинство move-constructor.

P.S. Ну и сами "asio samples", кончено же, лучше брать из SVN-репозитория (trunk).

Linux support included

Начиная с этой недели проект "asio samples" поддерживает Linux.
Если быть точным, то вся поддержка заключается в том, что проекты "echo_server" и "nmea_client" собираются, запускаются и работают (протестирован только "echo_server") на Kubuntu 10.10.

Сборка и отладка производятся при помощи Qt Creator - проекты для него расположены в build/qmake/echo_server/echo_server.pro и build/qmake/nmea_client/nmea_client.pro.

Для сборки указанных проектов необходим не только Qt Creator, но и установленные Boost C++ Libraries. В теории поддерживаются все Boost C++ Libraries 1.4x, но тестирование проводилось на отдельно поставленных (согласно офиц. документации Boost) Boost C++ Libraries 1.46.

среда, 12 января 2011 г.

понедельник, 15 ноября 2010 г.

Not an active object

Недавно пообщался с Dean Michael Berris в boost users mailing list.
Так вот, он полагает, что asio-samples - это не active object.
Однако, я остался при своем мнении и в качестве основы для доказательства предлагаю вот этот документ.
Еще я обратил внимание на Theron. Действительно похоже. Конечно Theron "мощнее" и "богаче" - но зато asio-samples позволяют использовать разные thread pools и эффективно работать с памятью аля per-message-passing-allocator.

понедельник, 8 ноября 2010 г.

Первая документация на asio samples

Сегодня выложил первые диаграммы, отражающие основные идеи, которые я хотел реализовать в asio samples. Получилось вполне сносно. По крайней мере, теперь не надо держать это в голове. На очереди эти же диаграммы, но в UML.

четверг, 4 ноября 2010 г.

Видео с BoostCon 2010

Материалы (слайды) с BoostCon 2010 уже давно есть на оф. сайте. А вот видео появилось недавно.

Больше всего понравился автор блога C++ Soup! Dean Michael Berris ("I'm really the C++ enthusiast") с его рассказом про
(header only) C++ net-lib.

А вот видео про Boost && Qt неприятно удивило - мало того что в зале не нашлось ни одного человека, кто бы использовал в одном проекте и Boost и Qt (!), так еще и:

  1. Докладчик всего год как "в команде Qt".
  2. Довольно подробный рассказ про Qt - зачем это Boost-профи? Разве они не должны знать Qt (хотя бы на том уровне, что был изложен докладчиком) чуть ли не "с пеленок"? Для кого этот доклад?