Лабораторная работа №5 meego Сommunication … filetelepathy. 2...

22
Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 5 1 Лаборатория системного программирования и информационных технологий СПбГУ Лабораторная работа №5 MeeGo Сommunication services: IM-клиент с использованием telepathy

Upload: vandang

Post on 31-Jan-2018

251 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 51

Лаборатория системного программирования и информационных технологий СПбГУ

Лабораторная работа №5

MeeGo Сommunication services:

IM-клиент с использованием telepathy

Page 2: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 52

План

Подготовка установка необходимых программных пакетов сборка и установка новейшей версии telepathy-qt4,

конфигурация динамического линковщика создание учётной записи jabber

telepathy-qt4 обзор технологии. основные модули. реализация простого клиента для текстового чата с

использованием lowlevel API (в обход ChannelDispatcher)

Реализация простого клиента для текстового чата с полной инициализацией

Page 3: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 53

Необходимые знания и навыки Знакомство с материалом лаб. работ №№ 2, 3 Базовое знание языка программирования

C++ Базовое знакомство с фреймворком Qt и

механизмом сигналов и слотов (см. лаб. работу №3)

Базовое знакомство с основными служебными программами Linux (ls, rm, mkdir и т. п.) и принципами работы систем управления пакетами

Page 4: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 54

Необходимые программные и аппаратные средства

ПК под ОС Linux (поддерживаются дистрибутивы Fedora 13, Ubuntu 10.04, openSUSE 11.3)

Соединение с интернетом

Page 5: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 55

Подготовка

Page 6: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 510

Работа с TelepathyQt4

Page 11: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 511

Telepathy — напомнинание back-end для сервисов

IM, аудио- и видеотелефонии

Сервисов и клиентов может быть много, но всё их взаимодействие проходит через общий интерфейс

В качестве средства IPC telepathy использует D-Bus.

Page 12: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 513

Базовые компонентыtelepathy-qt4 (I)

ConnectionManager — представляет сервис, обеспечивающий взаимодействие по определенному протоколу или по группе протоколов. Например, gabble (для протокола jabber)

Connection — соединение, создаваемое сущностью ConnectionManager

Channel — канал обмена данными, привязанный к определенной сущности Connection. Может быть текстовым, медиаканалом и каналом для передачи файлов.

Page 14: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 517

Задание №1отсортировано по степени сложности

Для примера telepathy-client-lowlevel Реализовать поддержку дополнительных

протоколов обмена сообщениями (кроме jabber) Реализовать вывод времени получения сообщений.

Page 18: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 518

Базовые компонентыtelepathy-qt4 (II)

AccountManager — менеджер зарегистрированных в системе аккаунтов

Account — зарегистрированный в системе пользовательский аккаунт

AbstractClient — клиент, обработчик каналов, принадлежащий одному из типов: AbstractClientApprover AbstractClientHandler — непосредственно обработчик AbstractClientObserver — наблюдатель. Может

использоваться, например, для журналирования ChannelDispatcher — определяет, какой обработчик

будет обрабатывать созданный канал ClientRegistrar — регистрирует обработчики

Page 19: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 520

Задание №2отсортировано по степени сложности

Для примера telepathy-client Реализовать отображение имён собеседников в

ChatWidget Реализовать отображение списка контактов для

заданного аккаунта Реализовать создание каналов по клику на имя в

списке контактов Реализовать отображение статусов пользователей

Page 21: Лабораторная работа №5 MeeGo Сommunication … filetelepathy. 2 Введение в разработку приложений на платформе Atom/MeeGo

Введение в разработку приложений на платформе 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

Введение в разработку приложений на платформе Atom/MeeGo. Лабораторная работа 522

Вопросы[email protected]