generate unimplemented psrpc server (#108)

This commit is contained in:
Paul Wells
2025-09-10 17:12:30 -07:00
committed by GitHub
parent b1be172cd6
commit c8bd2dcb0b
3 changed files with 30 additions and 2 deletions
+1
View File
@@ -32,6 +32,7 @@ var (
ErrRequestCanceled = NewErrorf(Canceled, "request canceled")
ErrRequestTimedOut = NewErrorf(DeadlineExceeded, "request timed out")
ErrNoResponse = NewErrorf(Unavailable, "no response from servers")
ErrUnimplemented = NewErrorf(Unimplemented, "method is not implemented")
ErrStreamEOF = NewError(Unavailable, io.EOF)
ErrClientClosed = NewErrorf(Canceled, "client is closed")
ErrServerClosed = NewErrorf(Canceled, "server is closed")
+27
View File
@@ -376,6 +376,9 @@ func (t *psrpc) generateService(file *descriptor.FileDescriptorProto, service *d
t.sectionComment(servName + ` Server`)
t.generateServer(service)
t.sectionComment(servName + ` Unimplemented Server`)
t.generateUnimplementedServer(service)
}
func (t *psrpc) generateInterface(file *descriptor.FileDescriptorProto, service *descriptor.ServiceDescriptorProto, iface string) {
@@ -741,6 +744,30 @@ func (t *psrpc) generateServer(service *descriptor.ServiceDescriptorProto) {
t.P()
}
func (t *psrpc) generateUnimplementedServer(service *descriptor.ServiceDescriptorProto) {
servName := fmt.Sprintf("Unimplemented%sServer", serviceNameCamelCased(service))
t.P(`type `, servName, ` struct{}`)
for _, method := range service.Method {
opts := t.getOptions(method)
methName := methodNameCamelCased(method)
inputType := t.goTypeName(method.GetInputType())
outputType := t.goTypeName(method.GetOutputType())
if opts.Stream {
t.P(`func (`, servName, `) `, methName, `(`, t.pkgs["psrpc"], `.ServerStream[*`, outputType, `, *`, inputType, `]) error { return psrpc.ErrUnimplemented }`)
if opts.Type == options.Routing_AFFINITY {
t.P(`func (`, servName, `) `, methName, `Affinity(context.Context) float32 { return -1 }`)
}
} else {
t.P(`func (`, servName, `) `, methName, `(`, t.pkgs["context"], `.Context, *`, inputType, `) (*`, outputType, `, error) { return nil, psrpc.ErrUnimplemented }`)
if opts.Type == options.Routing_AFFINITY {
t.P(`func (`, servName, `) `, methName, `Affinity(context.Context, *`, inputType, `) float32 { return -1 }`)
}
}
t.P()
}
}
func (t *psrpc) getOptions(method *descriptor.MethodDescriptorProto) *options.Options {
if method.Options == nil || !proto.HasExtension(method.Options, options.E_Options) {
return &options.Options{}
+2 -2
View File
@@ -15,6 +15,6 @@
package version
const (
Version = "v0.6.0"
PsrpcVersion_0_6 = true
Version = "v0.7.0"
PsrpcVersion_0_7 = true
)