in codegen/template_bundle/template_files.go [1269:1330]
func {{$exportName}}(deps *module.Dependencies) Client {
oc := deps.Default.GRPCClientDispatcher.MustOutboundConfig("{{$clientID}}")
var routingKey string
if deps.Default.Config.ContainsKey("clients.{{$clientID}}.routingKey") {
routingKey = deps.Default.Config.MustGetString("clients.{{$clientID}}.routingKey")
}
var requestUUIDHeaderKey string
if deps.Default.Config.ContainsKey("clients.{{$clientID}}.requestUUIDHeaderKey") {
requestUUIDHeaderKey = deps.Default.Config.MustGetString("clients.{{$clientID}}.requestUUIDHeaderKey")
}
timeoutInMS := int(deps.Default.Config.MustGetInt("clients.{{$clientID}}.timeout"))
methodNames := map[string]string{
{{range $i, $svc := .ProtoServices -}}
{{range $j, $method := $svc.RPC -}}
{{$serviceMethod := printf "%s::%s" $svc.Name .Name -}}
{{$methodName := (title (index $exposedMethods $serviceMethod)) -}}
{{- if $methodName -}}
"{{$serviceMethod}}": "{{$methodName}}",
{{ end -}}
{{- end -}}
{{- end}}
}
qpsLevels := map[string]string{
{{range $methodName, $qpsLevel := $QPSLevels -}}
"{{$methodName}}": "{{$qpsLevel}}",
{{end}}
}
// circuitBreakerDisabled sets whether circuit-breaker should be disabled
circuitBreakerDisabled := false
if deps.Default.Config.ContainsKey("clients.{{$clientID}}.circuitBreakerDisabled") {
circuitBreakerDisabled = deps.Default.Config.MustGetBoolean("clients.{{$clientID}}.circuitBreakerDisabled")
}
if !circuitBreakerDisabled {
for _, methodName := range methodNames {
circuitBreakerName := "{{$clientID}}" + "-" + methodName
qpsLevel := "default"
if level, ok := qpsLevels[circuitBreakerName]; ok {
qpsLevel = level
}
configureCircuitBreaker(deps, timeoutInMS, circuitBreakerName, qpsLevel)
}
}
return &{{$clientName}}{
{{range $i, $s := $services -}}
{{camel $s.Name}}Client: gen.New{{pascal $s.Name}}YARPCClient(oc),
{{ end -}}
opts: zanzibar.NewGRPCClientOpts(
deps.Default.ContextLogger,
deps.Default.ContextMetrics,
deps.Default.ContextExtractor,
methodNames,
"{{$clientID}}",
routingKey,
requestUUIDHeaderKey,
circuitBreakerDisabled,
timeoutInMS,
),
}
}