[#476] cmd/container: Add async handlers

Add `addContainerAsyncNotificationHandler`
func that passed handler to container's
worker pool similar to how it is done in
reputation handlers.

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2021-04-14 17:31:49 +03:00 committed by Alex Vanin
parent 72699b4c26
commit 91e0f4b370

View file

@ -138,6 +138,7 @@ func initContainerService(c *cfg) {
) )
} }
// addContainerNotificationHandler adds handler that will be executed synchronously
func addContainerNotificationHandler(c *cfg, sTyp string, h event.Handler) { func addContainerNotificationHandler(c *cfg, sTyp string, h event.Handler) {
typ := event.TypeFromString(sTyp) typ := event.TypeFromString(sTyp)
@ -148,6 +149,19 @@ func addContainerNotificationHandler(c *cfg, sTyp string, h event.Handler) {
c.cfgContainer.subscribers[typ] = append(c.cfgContainer.subscribers[typ], h) c.cfgContainer.subscribers[typ] = append(c.cfgContainer.subscribers[typ], h)
} }
// addContainerAsyncNotificationHandler adds handler that will be executed asynchronously via container workerPool
func addContainerAsyncNotificationHandler(c *cfg, sTyp string, h event.Handler) {
addContainerNotificationHandler(
c,
sTyp,
event.WorkerPoolHandler(
c.cfgContainer.workerPool,
h,
c.log,
),
)
}
func setContainerNotificationParser(c *cfg, sTyp string, p event.Parser) { func setContainerNotificationParser(c *cfg, sTyp string, p event.Parser) {
typ := event.TypeFromString(sTyp) typ := event.TypeFromString(sTyp)