Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2...
Transcript of Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2...
![Page 1: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/1.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 51
Лаборатория системного программирования и информационных технологий СПбГУ
Лабораторная работа №5
MeeGo Сommunication services:
IM-клиент с использованием telepathy
![Page 2: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/2.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 52
План
Подготовка установка необходимых программных пакетов сборка и установка новейшей версии telepathy-qt4,
конфигурация динамического линковщика создание учётной записи jabber
telepathy-qt4 обзор технологии. основные модули. реализация простого клиента для текстового чата с
использованием lowlevel API (в обход ChannelDispatcher)
Реализация простого клиента для текстового чата с полной инициализацией
![Page 3: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/3.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 53
Необходимые знания и навыки Знакомство с материалом лаб. работ №№ 2, 3 Базовое знание языка программирования
C++ Базовое знакомство с фреймворком Qt и
механизмом сигналов и слотов (см. лаб. работу №3)
Базовое знакомство с основными служебными программами Linux (ls, rm, mkdir и т. п.) и принципами работы систем управления пакетами
![Page 4: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/4.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 54
Необходимые программные и аппаратные средства
ПК под ОС Linux (поддерживаются дистрибутивы Fedora 13, Ubuntu 10.04, openSUSE 11.3)
Соединение с интернетом
![Page 5: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/5.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 55
Подготовка
![Page 6: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/6.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 56
Установка базовых пакетовУказания даны на основе Ubuntu 10.04
Установить (в дополнение к пакетам, установленным в прошлых работах) следующие пакеты при помощи команды apt-get install qt4-sdk telepathy-mission-control-5, telepathy-gabble cmake (необходим для сборки telepathy)
![Page 7: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/7.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 57
Используем версию библиотеки 0.5.1 Ссылка для скачивания пакета исходных
файлов: http://telepathy.freedesktop.org/releases/telepathy-qt4/telepathy-qt4-0.5.1.tar.gz
Распаковываем архив (см. лаб.работу №2) Запускаем конфигурацию:
cmake . Запускаем сборку:
make all Устанавливаем библиотеку:
sudo make install
Сборка и установкаtelepathy-qt4
![Page 8: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/8.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 58
Конфигурация динамического линковщика
Заголовочные файлы и файл .so (разделяемый объект, библиотека) были установлены в каталог /usr/local
Проверьте, находится ли нужная версия библиотеки в кеше динамического линковщика. ldconfig -p | grep /usr/local/lib/libtelepathy-qt4
Если команда не дала какого-либо вывода, добавляем строку "/usr/local/lib" в файл /etc/ld.so.conf.d/usr-local-lib.conf
Выполняем sudo ldconfig для обновления кеша
![Page 9: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/9.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 59
Создание учётной записи jabber Для выполнения лабораторной работы
необходимы 2 учётные записи jabberNB: Учётная запись GTalk также является учётной
записью jabber Можно бесплатно создать учётную запись
jabber.org, пройдя по следующей ссылке: https://register.jabber.org/
Зарегистрируйте учётные записи в клиенте jabber (например, в empathy). Авторизуйте записи для взаимного обмена сообщениями.
![Page 10: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/10.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 510
Работа с TelepathyQt4
![Page 11: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/11.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 511
Telepathy — напомнинание back-end для сервисов
IM, аудио- и видеотелефонии
Сервисов и клиентов может быть много, но всё их взаимодействие проходит через общий интерфейс
В качестве средства IPC telepathy использует D-Bus.
![Page 12: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/12.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 512
Обзор telepathy-qt4 Высокоуровневая Qt-обёртка для D-Bus интерфейса,
который использует telepathy Поскольку используется D-Bus, интерфейс асинхронный При выполнении асинхронного вызова созадётся объект
класса PendingOperation, который по завершении вызова отправляет сигнал finished()
Для минимизации трафика через D-Bus часть функциональности некоторых объектов становится доступной лишь после активации при помощи запроса becomeReady() с соответствующими Features
Во избежание утечек памяти активно используются «умные» указатели
![Page 13: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/13.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 513
Базовые компонентыtelepathy-qt4 (I)
ConnectionManager — представляет сервис, обеспечивающий взаимодействие по определенному протоколу или по группе протоколов. Например, gabble (для протокола jabber)
Connection — соединение, создаваемое сущностью ConnectionManager
Channel — канал обмена данными, привязанный к определенной сущности Connection. Может быть текстовым, медиаканалом и каналом для передачи файлов.
![Page 14: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/14.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 514
Низкоуровневая реализация клиента (1/2)
Внимание: Низкоуровневый подход не должен использоваться обычными приложениями
пример в архиве telepathy-client-lowlevel.tar.gz Получаем сущность ConnectionManager для gabble
ConnectionManager::create("gabble")
Используя low-level интерфейс ConnectionManager, создаём соединение CM->lowlevel()->requestConnection()
Активируем соединение: connection->lowlevel->requestConnect()
Запрашиваем сущность Contact для заданного имени через ContactManager connection->contactManager()->conatctsForIdentifiers()
![Page 15: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/15.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 515
Низкоуровневая реализация клиента (2/2)
Используя низкоуровневый интерфейс Connection, запрашиваем создание текстового канала (TextChannel) connection->lowlevel()->createChannel()
Запрашиваем активацию необходимой функциональности канала (в особенности FeatureMessageQueue для приёма сообщений) channel->becomeReady(QSet<Tp::Feature>)
Канал готов к работе: подключаемся к сигналу TextChannel::messageReceived() и вызываем slot sendMessage() для отправки сообщений.
![Page 16: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/16.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 516
Сборка и запуск приложения Выполняем qmake [-makefile] для генерации
Makefile. Внимание: если вами была ранее установлена
версия libtelepathy-qt4 из репозитория, то при вызове make необходимо указывать SUBLIBS="-L/usr/include", иначе линковщик не сможет найти нужную версию библиотеки.
Запуск приложения: ./client <account_1> <Account_1_password>
<account_2>
![Page 17: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/17.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 517
Задание №1отсортировано по степени сложности
Для примера telepathy-client-lowlevel Реализовать поддержку дополнительных
протоколов обмена сообщениями (кроме jabber) Реализовать вывод времени получения сообщений.
![Page 18: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/18.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 518
Базовые компонентыtelepathy-qt4 (II)
AccountManager — менеджер зарегистрированных в системе аккаунтов
Account — зарегистрированный в системе пользовательский аккаунт
AbstractClient — клиент, обработчик каналов, принадлежащий одному из типов: AbstractClientApprover AbstractClientHandler — непосредственно обработчик AbstractClientObserver — наблюдатель. Может
использоваться, например, для журналирования ChannelDispatcher — определяет, какой обработчик
будет обрабатывать созданный канал ClientRegistrar — регистрирует обработчики
![Page 19: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/19.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 519
Высокоуровневая реализация клиента
пример в архиве telepathy-client.tar.gz Реализуем свой AbstractClientHandler, который будет
принимать вновь созданные соединения и создавать для них ChatWidget.
Регистрируем клиент Получаем сущность AccountManager и создаём новый Account
Активируем аккаунт Account::setEnabled()
Создаём канал текстового чата для заданного пользователя с указанием нашего обработчика в качестве PrefferedHandler Account::ensureTextChat()
![Page 20: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/20.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 520
Задание №2отсортировано по степени сложности
Для примера telepathy-client Реализовать отображение имён собеседников в
ChatWidget Реализовать отображение списка контактов для
заданного аккаунта Реализовать создание каналов по клику на имя в
списке контактов Реализовать отображение статусов пользователей
![Page 21: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/21.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 521
Для дополнительного чтения1) Документация по TelepathyQt4
http://telepathy.freedesktop.org/doc/telepathy-qt4/
2) wiki проекта Telepathyhttp://telepathy.freedesktop.org/wiki/
![Page 22: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo.](https://reader034.fdocuments.net/reader034/viewer/2022050803/5a71c7927f8b9aac538d14c7/html5/thumbnails/22.jpg)
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 522
Вопросы[email protected]