func NewLifeCycleHandler()

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),
			})
	})
}