in fc/life_cycle_handler.go [54:79]
func NewLifeCycleHandler(handlerFunc interface{}) LifeCycleHandler {
if handlerFunc == nil {
return errorLifeCycleHandler(fmt.Errorf("handler is nil"))
}
handler := reflect.ValueOf(handlerFunc)
handlerType := reflect.TypeOf(handlerFunc)
if handlerType.Kind() != reflect.Func {
return errorLifeCycleHandler(fmt.Errorf("handler kind %s is not %s", handlerType.Kind(), reflect.Func))
}
err := validateLifeCycleArguments(handlerType)
if err != nil {
return errorLifeCycleHandler(err)
}
if err := validateLifeCycleReturns(handlerType); err != nil {
return errorLifeCycleHandler(err)
}
return fcLifeCycleHandler(func(ctx context.Context) {
handler.Call(
[]reflect.Value{
reflect.ValueOf(ctx),
})
})
}