Jump to content

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


Strix

Recommended Posts

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

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

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

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

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

Link to post

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

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

Link to post

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

Link to post

Хотелось бы, чтобы вся схема работала без дополнительных команд. Всё равно спасибо за ответы.

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

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

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

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

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

Link to post

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

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

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

Link to post

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

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

Link to post

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...