MCPcopy
hub / github.com/golang/protobuf / generateService

Method generateService

protoc-gen-go/grpc/grpc.go:121–262  ·  view source on GitHub ↗

generateService generates all the code for the named service.

(file *generator.FileDescriptor, service *pb.ServiceDescriptorProto, index int)

Source from the content-addressed store, hash-verified

119
120// generateService generates all the code for the named service.
121func (g *grpc) generateService(file *generator.FileDescriptor, service *pb.ServiceDescriptorProto, index int) {
122 path := fmt.Sprintf("6,%d", index) // 6 means service.
123
124 origServName := service.GetName()
125 fullServName := origServName
126 if pkg := file.GetPackage(); pkg != "" {
127 fullServName = pkg + "." + fullServName
128 }
129 servName := generator.CamelCase(origServName)
130 deprecated := service.GetOptions().GetDeprecated()
131
132 g.P()
133 g.P(fmt.Sprintf(`// %sClient is the client API for %s service.
134//
135// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.`, servName, servName))
136
137 // Client interface.
138 if deprecated {
139 g.P("//")
140 g.P(deprecationComment)
141 }
142 g.P("type ", servName, "Client interface {")
143 for i, method := range service.Method {
144 g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service.
145 if method.GetOptions().GetDeprecated() {
146 g.P("//")
147 g.P(deprecationComment)
148 }
149 g.P(g.generateClientSignature(servName, method))
150 }
151 g.P("}")
152 g.P()
153
154 // Client structure.
155 g.P("type ", unexport(servName), "Client struct {")
156 g.P("cc ", grpcPkg, ".ClientConnInterface")
157 g.P("}")
158 g.P()
159
160 // NewClient factory.
161 if deprecated {
162 g.P(deprecationComment)
163 }
164 g.P("func New", servName, "Client (cc ", grpcPkg, ".ClientConnInterface) ", servName, "Client {")
165 g.P("return &", unexport(servName), "Client{cc}")
166 g.P("}")
167 g.P()
168
169 var methodIndex, streamIndex int
170 serviceDescVar := "_" + servName + "_serviceDesc"
171 // Client method implementations.
172 for _, method := range service.Method {
173 var descExpr string
174 if !method.GetServerStreaming() && !method.GetClientStreaming() {
175 // Unary RPC method
176 descExpr = fmt.Sprintf("&%s.Methods[%d]", serviceDescVar, methodIndex)
177 methodIndex++
178 } else {

Callers 1

GenerateMethod · 0.95

Calls 10

PMethod · 0.95
generateClientMethodMethod · 0.95
generateServerMethodMethod · 0.95
CamelCaseFunction · 0.92
PrintCommentsMethod · 0.80
unexportFunction · 0.70
GetNameMethod · 0.45

Tested by

no test coverage detected