in thrift/thrift-gen/tchannel-template.go [148:186]
func (s *{{ $svc.ServerStruct }}) {{ .HandleFunc }}(ctx {{ contextType }}, protocol athrift.TProtocol) (bool, athrift.TStruct, error) {
var req {{ .ArgsType }}
var res {{ .ResultType }}
if err := req.Read(protocol); err != nil {
return false, nil, err
}
{{ if .HasReturn }}
r, err :=
{{ else }}
err :=
{{ end }}
s.handler.{{ .Name }}({{ .CallList "req" }})
if err != nil {
{{ if .HasExceptions }}
switch v := err.(type) {
{{ range .Exceptions }}
case {{ .ArgType }}:
if v == nil {
return false, nil, fmt.Errorf("Handler for {{ .Name }} returned non-nil error type {{ .ArgType }} but nil value")
}
res.{{ .ArgStructName }} = v
{{ end }}
default:
return false, nil, err
}
{{ else }}
return false, nil, err
{{ end }}
} else {
{{ if .HasReturn }}
res.Success = {{ .WrapResult "r" }}
{{ end }}
}
return err == nil, &res, nil
}