Firefox — Использование c ++ xpcom в асинхронном режиме

У меня есть расширение Firefox, которое имеет компонент XPCOM, написанный на C ++. Что было бы наилучшим способом асинхронной связи с этим компонентом таким образом, чтобы компонент мог «информировать» основное приложение о любых изменениях, а не только отвечать на вызовы.
Основная цель — иметь пользовательский интерфейс, который изменяет информацию из XPCOM, которая взаимодействует с внешней системой.
Связь должна быть асинхронной по требованию, поэтому проверять XPCOM каждые x секунд не вариант.

Я хочу знать, как должна выглядеть архитектура такой системы и какую технологию использовать (Workers / streaming / …). Решение должно работать на Firefox 3.5 — 4.0.

Буду признателен за любую помощь.

0

Решение

Вы можете, например, использовать наблюдатель сервис, если вы не хотите катать вещи самостоятельно. Это будет классический шаблон публикации-подписки. Ваш компонент будет использовать notifyObservers() «публиковать» уведомления, которые затем может использовать код веб-интерфейса observe после объявления процентов addObserver,

Вместо этого вы можете сделать так, чтобы ваш компонент предоставлял свой собственный набор интерфейсов и методов для реализации собственного шаблона наблюдателя, аналогично тому, что nsIObserver делает (или даже повторно nsIObserver). Например. nsIPrefBranch делает это уже: повторно использует nsIObserver но не использует глобальный сервер наблюдателей, а вместо этого следит за самими наблюдателями.

Что бы вы ни использовали, вы должны убедитесь, что вы отправляете уведомления в главном потоке, в противном случае любой код Javascript будет освобожден.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]