Взаимодействие плагинов
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Взаимодействие плагинов Expand / Collapse
Автор
Сообщение
15.06.2007 23:58


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 14.05.2008 23:42
Сообщ.: 121, Visits: 2 333
Приветствую, товарищи.
Возникла такая необходимость.
Намерен сделать два плагина. Конкретнее, два VST-плагина для звуковых редакторов, но это не важно.
Важно то, что они должны взаимодействовать еще и между собой.
То есть, например, загружаем один плагин, потом другой и он уже видит, что первый загружен и предлагает пользователю соединиться с ним. Затем периодически посылает ему некоторые данные.
Поделитесь соображениями, каким образом это можно организовать?
Сообщ. #914142
19.06.2007 12:55
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298, Visits: 12 500
если не размышлять: используй mutex'ы и shared memory

вопросы:
* плагины загружаются в различных процессах или в одном?
* если в различных процессах, и запущенно 3 экземпляра плагина №1, то с каким из экземпляров должен общаться экземпляр плагина №2 (есть ли какие-либо правила в выборе предпочтения)?
* если в одном, то как они исполняются? асинхронно в отдельных потоках или синхронно в главном потоке процесса?

С уважением,
Владимир
Сообщ. #914198
21.06.2007 0:51


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 14.05.2008 23:42
Сообщ.: 121, Visits: 2 333
Плагины загружаются в одном процессе, исполняются в одном, но не главном, потоке. Выбор предпочтения одного из уже загруженных экземпляров плагина №1 предоставляется пользователю.
Спасибо за подсказку, буду пробовать.
Сообщ. #914245
21.06.2007 11:27
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298, Visits: 12 500
если дело происходит в одном процессе и даже в одном потоке, то я бы не стал ничего придумывать с mutex'ами и shared memory

организуйте что-нибудь типа plugin manager'a, позволяющего манипулировать и общаться загруженным плагинам между собой

во время процесса загрузки плагина, вызывайте функцию у загруженного плагина, что-нибудь типа SetPluginManager(CPluginManager* manager), ссылку на менеджера используйте, чтобы узнать о других плагинах и по-необходимости передать им управление

Удачи,
Владимир
Сообщ. #914255
23.06.2007 17:36


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 14.05.2008 23:42
Сообщ.: 121, Visits: 2 333
Да, но ведь загрузчик является сторонним процессом, не моим. Если я правильно понял, вы предлагаете, чтобы загрузчик создавал менеджера, а потом передавал указатель на него всем загружаемым плагинам?
Сообщ. #914290
25.06.2007 21:49
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

модератор
Last Login: 09.07.2008 2:17
Сообщ.: 1 298, Visits: 12 500
да... именно это и предлагалось
Сообщ. #914315
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 7:39