View
247
Download
0
Category
Preview:
Citation preview
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 51
Лаборатория системного программирования и информационных технологий СПбГУ
Лабораторная работа №5
MeeGo Сommunication services:
IM-клиент с использованием telepathy
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 52
План
Подготовка установка необходимых программных пакетов сборка и установка новейшей версии telepathy-qt4,
конфигурация динамического линковщика создание учётной записи jabber
telepathy-qt4 обзор технологии. основные модули. реализация простого клиента для текстового чата с
использованием lowlevel API (в обход ChannelDispatcher)
Реализация простого клиента для текстового чата с полной инициализацией
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 53
Необходимые знания и навыки Знакомство с материалом лаб. работ №№ 2, 3 Базовое знание языка программирования
C++ Базовое знакомство с фреймворком Qt и
механизмом сигналов и слотов (см. лаб. работу №3)
Базовое знакомство с основными служебными программами Linux (ls, rm, mkdir и т. п.) и принципами работы систем управления пакетами
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 54
Необходимые программные и аппаратные средства
ПК под ОС Linux (поддерживаются дистрибутивы Fedora 13, Ubuntu 10.04, openSUSE 11.3)
Соединение с интернетом
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 55
Подготовка
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 56
Установка базовых пакетовУказания даны на основе Ubuntu 10.04
Установить (в дополнение к пакетам, установленным в прошлых работах) следующие пакеты при помощи команды apt-get install qt4-sdk telepathy-mission-control-5, telepathy-gabble cmake (необходим для сборки telepathy)
Введение в разработку приложений на платформе 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
Введение в разработку приложений на платформе 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 для обновления кеша
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 59
Создание учётной записи jabber Для выполнения лабораторной работы
необходимы 2 учётные записи jabberNB: Учётная запись GTalk также является учётной
записью jabber Можно бесплатно создать учётную запись
jabber.org, пройдя по следующей ссылке: https://register.jabber.org/
Зарегистрируйте учётные записи в клиенте jabber (например, в empathy). Авторизуйте записи для взаимного обмена сообщениями.
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 510
Работа с TelepathyQt4
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 511
Telepathy — напомнинание back-end для сервисов
IM, аудио- и видеотелефонии
Сервисов и клиентов может быть много, но всё их взаимодействие проходит через общий интерфейс
В качестве средства IPC telepathy использует D-Bus.
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 512
Обзор telepathy-qt4 Высокоуровневая Qt-обёртка для D-Bus интерфейса,
который использует telepathy Поскольку используется D-Bus, интерфейс асинхронный При выполнении асинхронного вызова созадётся объект
класса PendingOperation, который по завершении вызова отправляет сигнал finished()
Для минимизации трафика через D-Bus часть функциональности некоторых объектов становится доступной лишь после активации при помощи запроса becomeReady() с соответствующими Features
Во избежание утечек памяти активно используются «умные» указатели
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 513
Базовые компонентыtelepathy-qt4 (I)
ConnectionManager — представляет сервис, обеспечивающий взаимодействие по определенному протоколу или по группе протоколов. Например, gabble (для протокола jabber)
Connection — соединение, создаваемое сущностью ConnectionManager
Channel — канал обмена данными, привязанный к определенной сущности Connection. Может быть текстовым, медиаканалом и каналом для передачи файлов.
Введение в разработку приложений на платформе 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()
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 515
Низкоуровневая реализация клиента (2/2)
Используя низкоуровневый интерфейс Connection, запрашиваем создание текстового канала (TextChannel) connection->lowlevel()->createChannel()
Запрашиваем активацию необходимой функциональности канала (в особенности FeatureMessageQueue для приёма сообщений) channel->becomeReady(QSet<Tp::Feature>)
Канал готов к работе: подключаемся к сигналу TextChannel::messageReceived() и вызываем slot sendMessage() для отправки сообщений.
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 516
Сборка и запуск приложения Выполняем qmake [-makefile] для генерации
Makefile. Внимание: если вами была ранее установлена
версия libtelepathy-qt4 из репозитория, то при вызове make необходимо указывать SUBLIBS="-L/usr/include", иначе линковщик не сможет найти нужную версию библиотеки.
Запуск приложения: ./client <account_1> <Account_1_password>
<account_2>
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 517
Задание №1отсортировано по степени сложности
Для примера telepathy-client-lowlevel Реализовать поддержку дополнительных
протоколов обмена сообщениями (кроме jabber) Реализовать вывод времени получения сообщений.
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 518
Базовые компонентыtelepathy-qt4 (II)
AccountManager — менеджер зарегистрированных в системе аккаунтов
Account — зарегистрированный в системе пользовательский аккаунт
AbstractClient — клиент, обработчик каналов, принадлежащий одному из типов: AbstractClientApprover AbstractClientHandler — непосредственно обработчик AbstractClientObserver — наблюдатель. Может
использоваться, например, для журналирования ChannelDispatcher — определяет, какой обработчик
будет обрабатывать созданный канал ClientRegistrar — регистрирует обработчики
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 519
Высокоуровневая реализация клиента
пример в архиве telepathy-client.tar.gz Реализуем свой AbstractClientHandler, который будет
принимать вновь созданные соединения и создавать для них ChatWidget.
Регистрируем клиент Получаем сущность AccountManager и создаём новый Account
Активируем аккаунт Account::setEnabled()
Создаём канал текстового чата для заданного пользователя с указанием нашего обработчика в качестве PrefferedHandler Account::ensureTextChat()
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 520
Задание №2отсортировано по степени сложности
Для примера telepathy-client Реализовать отображение имён собеседников в
ChatWidget Реализовать отображение списка контактов для
заданного аккаунта Реализовать создание каналов по клику на имя в
списке контактов Реализовать отображение статусов пользователей
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 521
Для дополнительного чтения1) Документация по TelepathyQt4
http://telepathy.freedesktop.org/doc/telepathy-qt4/
2) wiki проекта Telepathyhttp://telepathy.freedesktop.org/wiki/
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 522
Вопросы?sergeyle@gmail.com
Recommended