allow custom cleanups

This commit is contained in:
admin 2025-07-25 14:40:04 +02:00
parent c6bf54943a
commit 7dc2fb0e77

View File

@ -21,7 +21,7 @@ type IContext interface {
Set(key string, data any) Set(key string, data any)
Get(key string) (any, bool) Get(key string) (any, bool)
RemoveMetaData(key string) RemoveMetaData(key string)
CleanupIn(lifetime time.Duration) CleanupIn(lifetime time.Duration, onCleanup ...func())
Dispatch(event IEvent, filter func(c IContext) bool) Dispatch(event IEvent, filter func(c IContext) bool)
IsCaller(c IContext) bool IsCaller(c IContext) bool
} }
@ -88,7 +88,7 @@ func (context *context) RemoveMetaData(key string) {
delete(context.metadata, key) delete(context.metadata, key)
} }
func (context *context) CleanupIn(lifetime time.Duration) { func (context *context) CleanupIn(lifetime time.Duration, onCleanup ...func()) {
context.mutex.Lock() context.mutex.Lock()
defer context.mutex.Unlock() defer context.mutex.Unlock()
@ -104,6 +104,9 @@ func (context *context) CleanupIn(lifetime time.Duration) {
if context.timer != nil { if context.timer != nil {
di.Destroy[IContext](context.id) di.Destroy[IContext](context.id)
for _, cleaner := range onCleanup {
cleaner()
}
context.timer = nil context.timer = nil
} }
}(context.id) }(context.id)