mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 12:32:21 +00:00
38 lines
967 B
Go
38 lines
967 B
Go
// Copyright 2018 <chaishushan{AT}gmail.com>. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"github.com/golang/protobuf/protoc-gen-go/descriptor"
|
|
"github.com/golang/protobuf/protoc-gen-go/generator"
|
|
)
|
|
|
|
type ServiceSpec struct {
|
|
ServiceName string
|
|
MethodList []ServiceMethodSpec
|
|
}
|
|
|
|
type ServiceMethodSpec struct {
|
|
MethodName string
|
|
InputTypeName string
|
|
OutputTypeName string
|
|
}
|
|
|
|
func (p *netrpcPlugin) buildServiceSpec(svc *descriptor.ServiceDescriptorProto) *ServiceSpec {
|
|
spec := &ServiceSpec{
|
|
ServiceName: generator.CamelCase(svc.GetName()),
|
|
}
|
|
|
|
for _, m := range svc.Method {
|
|
spec.MethodList = append(spec.MethodList, ServiceMethodSpec{
|
|
MethodName: generator.CamelCase(m.GetName()),
|
|
InputTypeName: p.TypeName(p.ObjectNamed(m.GetInputType())),
|
|
OutputTypeName: p.TypeName(p.ObjectNamed(m.GetOutputType())),
|
|
})
|
|
}
|
|
|
|
return spec
|
|
}
|