func DefaultHandlers()

in operationsbus/handlers.go [45:89]


func DefaultHandlers(
	serviceBusReceiver sb.ReceiverInterface,
	matcher *Matcher,
	operationContainer oc.OperationContainerClient,
	entityController EntityController,
	logger *slog.Logger,
	hooks []BaseOperationHooksInterface,
) shuttle.HandlerFunc {

	// Lock renewal settings
	lockRenewalInterval := 10 * time.Second
	lockRenewalOptions := &shuttle.LockRenewalOptions{Interval: &lockRenewalInterval}

	var errorHandler ErrorHandlerFunc
	if operationContainer != nil {
		errorHandler = NewOperationContainerHandler(
			NewErrorReturnHandler(
				OperationHandler(matcher, hooks, entityController),
				serviceBusReceiver,
				nil,
			),
			operationContainer,
		)
	} else {
		errorHandler = NewErrorReturnHandler(
			OperationHandler(matcher, hooks, entityController),
			serviceBusReceiver,
			nil,
		)
	}

	// Combine handlers into a single default handler
	return shuttle.NewPanicHandler(
		nil,
		shuttle.NewRenewLockHandler(
			lockRenewalOptions,
			NewLogHandler(
				logger,
				NewQosErrorHandler(
					errorHandler,
				),
			),
		),
	)
}