Опекун
Опекун хранит набор акторов для удаления. Когда опекун удаляется, он удаляет акторов из своего набора и затем очищает набор.
Пример программы
Представьте себе программу с 3 акторами, которые необходимо остановить при получении сигнала TERM. Мы можем настроить Опекуна, который знает о каждом из наших акторов, и когда поступает сигнал TERM, он удаляется.
use "bureaucracy"
use "signals"
actor Actor1
be dispose() => None // dispose of resources here.
actor Actor2
be dispose() => None // dispose of resources here.
actor Actor3
be dispose() => None // dispose of resources here.
actor Main
new create(env: Env) =>
let actor1 = Actor1
let actor2 = Actor2
let actor3 = Actor3
let custodian = Custodian
custodian(actor1)
custodian(actor2)
custodian(actor3)
SignalHandler(TermHandler(custodian), Sig.term())
class TermHandler is SignalNotify
let _custodian: Custodian
new iso create(custodian: Custodian) =>
_custodian = custodian
fun ref apply(count: U32): Bool =>
_custodian.dispose()
true
actor tag Custodian
Конструкторы
create
new tag create() : Custodian tag^
Возвращаемое значение
- Опекун тег^
Открытые методы
apply
Добавить актора для удаления.
be apply( worker: DisposableActor tag)
Параметры
- worker: УправляемыйАктор тег
remove
Удаляет актора из набора объектов для удаления.
be remove( worker: DisposableActor tag)
Параметры
- worker: УправляемыйАктор тег
dispose
Удалить акторов в наборе и затем очистить набор.
be dispose()
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/bureaucracy-Custodian