Функция плагина будет вызываться в ответ на событие приложения.
Это указывает на паттерн наблюдателя.Например, если в вашем приложении есть два события, «foo» и «bar», вы можете написать что-то вроде:
HostApp.listeners = {
foo = {},
bar = {},
}
function HostApp:addListener(event, listener)
table.insert(self.listeners[event], listener)
end
function HostApp:notifyListeners(event, ...)
for _,listener in pairs(self.listeners[event]) do
listener(...)
end
end
Тогда, когда произойдет событие foo
:
self:notifyListeners('foo', 'apple', 'donut')
Клиент (например, плагин), заинтересованный в событии foo
, просто зарегистрирует слушателя для него:
HostApp:addListener('foo', function(...)
print('foo happened!', ...)
end)
Расширится в соответствии с вашими потребностями.
В частности, яИнтересно, как лучше всего передать параметры плагину и получить возвращенные значения
Плагин просто предлагает вам функцию для вызова.Вы можете передать ему любые параметры и обработать возвращаемые значения так, как пожелаете.