Jump to content

Остановка ресурсов


Recommended Posts

Здравствуйте, коллеги!

Есть два ресурса: "resource1" и "resource2".

"resource1" имеет экспортированную функцию "test", а "resource2" должен использовать эту функцию при своей остановке. Требуется, чтобы при остановке "resource1", сначала останавливался "resource2", а затем "resource1".

Если указать "resource2" include'ом ресурса "resource1", то всё работает так, как нужно. Но у меня немного другая система, не предусматривающая стандартную систему include'ов.

Возможно ли это сделать без использования include'ов?

Link to comment

У меня есть один ресурс - ядро, который запускает все остальные ресурсы - компоненты. У компонентов в meta.xml указываются другие компоненты, от которых они зависят. Перед запуском компонента, запускаются его зависимости.

Если останавливать зависимые компоненты в событии onResourceStop, то они остановятся только после того, как ресурс уже остановился. Это мне не подходит.

Link to comment

Напиши функцию в ресурсе - ядре, которая будет останавливать все зависимые ресурсы, а в конце себя остановит. И поставь эту функцию на команду.

Link to comment
Если указать "resource2" include'ом ресурса "resource1", то всё работает так, как нужно. Но у меня немного другая система, не предусматривающая стандартную систему include'ов.

Если своя система - тогда сами и придумывайте, как сделать в ней зависимости ресурсов.

Link to comment
Если указать "resource2" include'ом ресурса "resource1", то всё работает так, как нужно. Но у меня немного другая система, не предусматривающая стандартную систему include'ов.

Если своя система - тогда сами и придумывайте, как сделать в ней зависимости ресурсов.

Я всё давно уже придумал. Вопрос был в том, как остановить зависимые ресурсы до полной остановки основного ресурса. Я надеялся, что это можно сделать функцией stopResource в событии onResourceStop, но результат оказался другим: ресурс вставал в очередь и останавливался после основного ресурса. Добавление опции немедленной остановки ресурса должно решить эту задачу.

Link to comment

Я думаю, что если делать систему, которая управляет запуском/остановкой ресурсов, другим ресурсам не стоит разрешать это делать.

Можно запретить всем в ACL остановку ресурса, кроме управляющего, но тогда системе не будет известно когда ресурс пытался выполнить эту функцию. Можно сделать функцию отсылающую запрос системе и отменяющей событие, выполняемую в onResourceStop. А так же переопределить stopResource и если нужно restartResource, что-бы при обычном выполнении отсылался запрос системе, а выполнял их только ресурс-система.

PS:Grell просто верх доброжелательности.

Link to comment

Решил сделать просто:

local dependence = getResourceFromName("dep") 
if dependence then 
  dependenceRoot = getResourceRootElement(dependence) 
  if dependenceRoot then 
    addEventHandler("onResourceStop", dependenceRoot, 
      function () 
        -- some code 
      end 
    ) 
  end 
end 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...