Skip to content

Commit

Permalink
refactor: improve merging conf runners
Browse files Browse the repository at this point in the history
Split merging function into two separate functions for timeouts and responses
  • Loading branch information
farzadghanei committed May 11, 2024
1 parent 786bca1 commit efba21a
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions internal/conf.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,6 @@ func GetConfRunner(runners *ConfRunners, name string) (ConfRunner, bool) {
func MergedConfRunners(baseConf, overrideConf *ConfRunner) ConfRunner {
mergedConf := CopyConfRunner(overrideConf)

if mergedConf.Timeout == nil {
mergedConf.Timeout = baseConf.Timeout
}

if mergedConf.ShutdownSignalHeader == nil {
mergedConf.ShutdownSignalHeader = baseConf.ShutdownSignalHeader
}
Expand All @@ -134,22 +130,39 @@ func MergedConfRunners(baseConf, overrideConf *ConfRunner) ConfRunner {
if mergedConf.ListenAddress == "" {
mergedConf.ListenAddress = baseConf.ListenAddress
}

if mergedConf.RequestReadTimeout == nil {
mergedConf.RequestReadTimeout = baseConf.RequestReadTimeout
if mergedConf.MaxConcurrentRequests == nil {
mergedConf.MaxConcurrentRequests = baseConf.MaxConcurrentRequests
}

mergeConfRunnerTimeouts(&mergedConf, baseConf)

// Merge the request required headers map with the baseConf
for key, value := range baseConf.RequestRequiredHeaders {
if _, exists := mergedConf.RequestRequiredHeaders[key]; !exists {
mergedConf.RequestRequiredHeaders[key] = value
}
}

mergeConfRunnerResponses(&mergedConf, baseConf)

return mergedConf
}

// mergeConfRunnerTimeouts merges the timeout fields of the mergedConf with the baseConf in place
func mergeConfRunnerTimeouts(mergedConf, baseConf *ConfRunner) {
if mergedConf.Timeout == nil {
mergedConf.Timeout = baseConf.Timeout
}
if mergedConf.RequestReadTimeout == nil {
mergedConf.RequestReadTimeout = baseConf.RequestReadTimeout
}
if mergedConf.ResponseWriteTimeout == nil {
mergedConf.ResponseWriteTimeout = baseConf.ResponseWriteTimeout
}
}

// mergeConfRunnerResponses merges the response fields of the mergedConf with the baseConf in place
func mergeConfRunnerResponses(mergedConf, baseConf *ConfRunner) {
if mergedConf.ResponseOK == nil {
mergedConf.ResponseOK = baseConf.ResponseOK
}
Expand All @@ -166,15 +179,9 @@ func MergedConfRunners(baseConf, overrideConf *ConfRunner) ConfRunner {
mergedConf.ResponseUnavailable = baseConf.ResponseUnavailable
}

if mergedConf.MaxConcurrentRequests == nil {
mergedConf.MaxConcurrentRequests = baseConf.MaxConcurrentRequests
}

if mergedConf.ResponseInvalidRequest == nil {
mergedConf.ResponseInvalidRequest = baseConf.ResponseInvalidRequest
}

return mergedConf
}

// CopyConfRunner returns a copy of the ConfRunner with the same values
Expand Down

0 comments on commit efba21a

Please sign in to comment.