func wrapCloudEventFunction()

in funcframework/framework.go [294:316]


func wrapCloudEventFunction(ctx context.Context, fn func(context.Context, cloudevents.Event) error) (http.Handler, error) {
	p, err := cloudevents.NewHTTP()
	if err != nil {
		return nil, fmt.Errorf("failed to create protocol: %v", err)
	}

	// Always log errors returned by the function to stderr
	logErrFn := func(ctx context.Context, ce cloudevents.Event) error {
		defer recoverPanic(nil, "user function execution", true)
		err := fn(ctx, ce)
		if err != nil {
			fmt.Fprintf(os.Stderr, fmtFunctionError(err))
		}
		return err
	}

	h, err := cloudevents.NewHTTPReceiveHandler(ctx, p, logErrFn)
	if err != nil {
		return nil, fmt.Errorf("failed to create handler: %v", err)
	}

	return convertBackgroundToCloudEvent(h), nil
}