mirror of
https://github.com/hanzoai/psrpc.git
synced 2026-09-30 23:47:22 +00:00
generate unimplemented psrpc server (#108)
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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
@@ -15,6 +15,6 @@
|
||||
package version
|
||||
|
||||
const (
|
||||
Version = "v0.6.0"
|
||||
PsrpcVersion_0_6 = true
|
||||
Version = "v0.7.0"
|
||||
PsrpcVersion_0_7 = true
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user