LiteCoding

Заметки о программировании

Пишем плагин для Vuze. Часть 1. Что могут плагины?

with one comment

Этой публикацией я начинаю миницикл статей о написании плагинов для Vuze (бывший Azureus). Vuze начинался как обыкновенный torrent-клиент и в настоящее время превратился в медиакомбайн с поддержкой p2p. Будучи третьим по распространенности в мире (более 86 млн активных копий), он предоставляет практически неограниченные возможности по взаимодействию с основными модулями системы через интерфейс плагинов. Поэтому возможности плагинов, как правило, ограничены лишь фантазией автора.

Доступ плагина к ядру системы предоставляется через интерфейс PluginInterface. Итак, какие подсистемы Vuze доступны для нас?

1. ClientIDManager
Как получить: PluginInterface.getClientIDManager()
Для чего нужно: Позволяет получить генератор идентификаторов пира (peer id). Честно говоря, не представляю, в каких случаях это может пригодиться, но раз есть, то пусть будет.

2. ConnectionManager
Как получить: PluginInterface.getConnectionManager()
Для чего нужно: Очень полезный инструмент для создания исходящих соединений.

3. DistributedDatabase
Как получить: PluginInterface.getDistributedDatabase()
Для чего нужно: Интерфейс, дающий доступ к распределенной базе данных (DDB). Он позволяет манипулировать (писать, читать, удалять) небольшими объемами данных, расположенными в облаке пиров Vuze. На DDB основаны некоторые сервисы Vuze, например, система рейтингов закачек.

4. DownloadManager
Как получить: PluginInterface.getDownloadManager()
Для чего нужно: Это один из самых частоиспользуемых интерфейсов. С помощью него можно получить полную информацию о состоянии закачек (вплоть до торрент-файла).

5. IPCInterface
Как получить: PluginInterface.getIPC()
Для чего нужно: Интерфейс для взаимодействия с другими плагинами. Синтаксис вызовов очень похож на Apache XML-RPC. Используется не очень часто, т.к. в общем случае сделать это весьма непросто. Но если удается договориться с автором плагина об интерфейсе взаимодействия (или если требуется взаимодействовать с другим своим плагином), то IPCInterface вполне удобен для разработчика.

6. IPFilter
Как получить: PluginInterface.getIPFilter()
Для чего нужно: Предоставляет полный доступ к IP-фильтру.

7. Logger
Как получить: PluginInterface.getLogger()
Для чего нужно: Предоставляет доступ к логгеру.

8. MainlineDHTManager
Как получить: PluginInterface.getMainlineDHTManager()
Для чего нужно: Позволяет получить или зарегистрировать MainlineDHTProvider. Используется для реализации поддержки Mainline DHT на базе плагина. В Vuze может быть зарегистрирован только один провайдер Mainline DHT.

9. MessageManager
Как получить: PluginInterface.getMessageManager()
Для чего нужно: Позволяет добавлять расширения в протокол BitTorrent, также есть возможность поиска других пиров, поддерживающих данное расширение.

10. PlatformManager
Как получить: PluginInterface.getPlatformManager()
Для чего нужно: Предоставляет базовый доступ к локальному жесткому диску.

11. PluginManager
Как получить: PluginInterface.getPluginManager()
Для чего нужно: Предоставляет доступ к интерфейсам установленных плагинов, а также дает минимум функций для управления самим Vuze.

12. ShareManager
Как получить: PluginInterface.getShareManager()
Для чего нужно: Используется для создания торрент-файлов к файлам и каталогам на локальном жестком диске.

13. ShortCuts
Как получить: PluginInterface.getShortCuts()
Для чего нужно: Предоставляет набор методов для быстрого доступа к закачкам и статистике закачек по инфохэшу.

14. TorrentManager
Как получить: PluginInterface.getTorrentManager()
Для чего нужно: Позволяет создать экземпляр класса, реализующего интерфейс Torrent, из потока, массива или файла.

15. Tracker
Как получить: PluginInterface.getTracker()
Для чего нужно: Позволяет управлять встроенным трекером Vuze (не путать с менеджером закачек).

16. UIManager
Как получить: PluginInterface.getUIManager()
Для чего нужно: Отвечает за GUI плагина. Я расскажу об этом более подробно в статье о графическом интерфейсе плагинов Vuze.

17. UpdateManager
Как получить: PluginInterface.getUpdateManager()
Для чего нужно: Если плагин не распространяется через репозиторий плагинов на SourceForge, с помощью этого менеджера можно управлять обновлением плагина.

18. Utilities
Как получить: PluginInterface.getUtilities()
Для чего нужно: Предоставляет набор полезных функций, в т.ч. планировщик задач, парсер RSS и т.д.

Как видите, с помощью стандартного интерфейса плагинов Vuze можно решать невероятно сложные задачи, не прибегая к играм с рефлексией и не создавая хаки (которые очень непросто поддерживать в актуальном состоянии). Малое количество плагинов, размещенных на SourceForge, можно объяснить только неполной документацией, неудачной структурой форума для разработчиков и отсутствием мануалов по созданию плагинов (Aizen не в счет). В следующих статьях по этой теме я постараюсь заполнить образовавшийся информационный вакуум и раскрыть секреты разработки плагинов для Vuze на живом примере.

Следующая статья: Пишем плагин для Vuze. Часть 2. Обработчики событий

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • LinkedIn
  • Tumblr

Written by Дмитрий Воробьев

Вторник, Февраль 23rd, 2010 at 19:30

One Response to 'Пишем плагин для Vuze. Часть 1. Что могут плагины?'

Subscribe to comments with RSS or TrackBack to 'Пишем плагин для Vuze. Часть 1. Что могут плагины?'.

  1. […] Пишем плагин для Vuze. Часть 1. Что могут плагины? | LiteCoding пишет: 8 Апрель 2010 в 9:22 […]

Leave a Reply

You must be logged in to post a comment.