fixes for standalone mode #84
5
http.go
5
http.go
@ -38,12 +38,15 @@ func (g *Generator) httpGenerate(component string, plugin *protogen.Plugin, genC
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, service := range file.Services {
|
for _, service := range file.Services {
|
||||||
|
g.generateServiceEndpoints(gfile, service, component)
|
||||||
if genClient {
|
if genClient {
|
||||||
|
g.generateServiceClient(gfile, file, service)
|
||||||
g.generateServiceClientMethods(gfile, service, component)
|
g.generateServiceClientMethods(gfile, service, component)
|
||||||
}
|
}
|
||||||
if genServer {
|
if genServer {
|
||||||
|
g.generateServiceServer(gfile, file, service)
|
||||||
g.generateServiceServerMethods(gfile, service)
|
g.generateServiceServerMethods(gfile, service)
|
||||||
g.generateServiceRegister(gfile, service, component)
|
g.generateServiceRegister(gfile, file, service, component)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
main.go
4
main.go
@ -63,8 +63,8 @@ func (g *Generator) Generate(plugin *protogen.Plugin) error {
|
|||||||
g.reflection = *flagReflection
|
g.reflection = *flagReflection
|
||||||
plugin.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL)
|
plugin.SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL)
|
||||||
|
|
||||||
var genClient bool
|
genClient := true
|
||||||
var genServer bool
|
genServer := true
|
||||||
var genNone bool
|
var genNone bool
|
||||||
|
|
||||||
if strings.Contains(g.components, "server") {
|
if strings.Contains(g.components, "server") {
|
||||||
|
3
micro.go
3
micro.go
@ -40,14 +40,11 @@ func (g *Generator) microGenerate(component string, plugin *protogen.Plugin, gen
|
|||||||
// generate services
|
// generate services
|
||||||
for _, service := range file.Services {
|
for _, service := range file.Services {
|
||||||
g.generateServiceName(gfile, service)
|
g.generateServiceName(gfile, service)
|
||||||
g.generateServiceEndpoints(gfile, service, component)
|
|
||||||
if genClient {
|
if genClient {
|
||||||
g.generateServiceClient(gfile, service)
|
|
||||||
g.generateServiceClientInterface(gfile, service)
|
g.generateServiceClientInterface(gfile, service)
|
||||||
g.generateServiceClientStreamInterface(gfile, service)
|
g.generateServiceClientStreamInterface(gfile, service)
|
||||||
}
|
}
|
||||||
if genServer {
|
if genServer {
|
||||||
g.generateServiceServer(gfile, service)
|
|
||||||
g.generateServiceServerInterface(gfile, service)
|
g.generateServiceServerInterface(gfile, service)
|
||||||
g.generateServiceServerStreamInterface(gfile, service)
|
g.generateServiceServerStreamInterface(gfile, service)
|
||||||
}
|
}
|
||||||
|
4
rpc.go
4
rpc.go
@ -37,11 +37,13 @@ func (g *Generator) rpcGenerate(component string, plugin *protogen.Plugin, genCl
|
|||||||
}
|
}
|
||||||
for _, service := range file.Services {
|
for _, service := range file.Services {
|
||||||
if genClient {
|
if genClient {
|
||||||
|
g.generateServiceClient(gfile, file, service)
|
||||||
g.generateServiceClientMethods(gfile, service, component)
|
g.generateServiceClientMethods(gfile, service, component)
|
||||||
}
|
}
|
||||||
if genServer {
|
if genServer {
|
||||||
|
g.generateServiceServer(gfile, file, service)
|
||||||
g.generateServiceServerMethods(gfile, service)
|
g.generateServiceServerMethods(gfile, service)
|
||||||
g.generateServiceRegister(gfile, service, component)
|
g.generateServiceRegister(gfile, file, service, component)
|
||||||
}
|
}
|
||||||
if component == "grpc" && g.reflection {
|
if component == "grpc" && g.reflection {
|
||||||
g.generateServiceDesc(gfile, file, service)
|
g.generateServiceDesc(gfile, file, service)
|
||||||
|
22
util.go
22
util.go
@ -31,7 +31,7 @@ func unexport(s string) string {
|
|||||||
return strings.ToLower(s[:1]) + s[1:]
|
return strings.ToLower(s[:1]) + s[1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Generator) generateServiceClient(gfile *protogen.GeneratedFile, service *protogen.Service) {
|
func (g *Generator) generateServiceClient(gfile *protogen.GeneratedFile, file *protogen.File, service *protogen.Service) {
|
||||||
serviceName := service.GoName
|
serviceName := service.GoName
|
||||||
// if rule, ok := getMicroApiService(service); ok {
|
// if rule, ok := getMicroApiService(service); ok {
|
||||||
// gfile.P("// client wrappers ", strings.Join(rule.ClientWrappers, ", "))
|
// gfile.P("// client wrappers ", strings.Join(rule.ClientWrappers, ", "))
|
||||||
@ -41,7 +41,11 @@ func (g *Generator) generateServiceClient(gfile *protogen.GeneratedFile, service
|
|||||||
gfile.P("name string")
|
gfile.P("name string")
|
||||||
gfile.P("}")
|
gfile.P("}")
|
||||||
|
|
||||||
|
if g.standalone {
|
||||||
|
gfile.P("func New", serviceName, "Client(name string, c ", microClientPackage.Ident("Client"), ") ", file.GoImportPath.Ident(serviceName), "Client {")
|
||||||
|
} else {
|
||||||
gfile.P("func New", serviceName, "Client(name string, c ", microClientPackage.Ident("Client"), ") ", serviceName, "Client {")
|
gfile.P("func New", serviceName, "Client(name string, c ", microClientPackage.Ident("Client"), ") ", serviceName, "Client {")
|
||||||
|
}
|
||||||
gfile.P("return &", unexport(serviceName), "Client{c: c, name: name}")
|
gfile.P("return &", unexport(serviceName), "Client{c: c, name: name}")
|
||||||
gfile.P("}")
|
gfile.P("}")
|
||||||
gfile.P()
|
gfile.P()
|
||||||
@ -319,10 +323,14 @@ func (g *Generator) generateServiceClientMethods(gfile *protogen.GeneratedFile,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Generator) generateServiceServer(gfile *protogen.GeneratedFile, service *protogen.Service) {
|
func (g *Generator) generateServiceServer(gfile *protogen.GeneratedFile, file *protogen.File, service *protogen.Service) {
|
||||||
serviceName := service.GoName
|
serviceName := service.GoName
|
||||||
gfile.P("type ", unexport(serviceName), "Server struct {")
|
gfile.P("type ", unexport(serviceName), "Server struct {")
|
||||||
|
if g.standalone {
|
||||||
|
gfile.P(file.GoImportPath.Ident(serviceName), "Server")
|
||||||
|
} else {
|
||||||
gfile.P(serviceName, "Server")
|
gfile.P(serviceName, "Server")
|
||||||
|
}
|
||||||
gfile.P("}")
|
gfile.P("}")
|
||||||
gfile.P()
|
gfile.P()
|
||||||
}
|
}
|
||||||
@ -477,9 +485,13 @@ func (g *Generator) generateServiceServerMethods(gfile *protogen.GeneratedFile,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Generator) generateServiceRegister(gfile *protogen.GeneratedFile, service *protogen.Service, component string) {
|
func (g *Generator) generateServiceRegister(gfile *protogen.GeneratedFile, file *protogen.File, service *protogen.Service, component string) {
|
||||||
serviceName := service.GoName
|
serviceName := service.GoName
|
||||||
|
if g.standalone {
|
||||||
|
gfile.P("func Register", serviceName, "Server(s ", microServerPackage.Ident("Server"), ", sh ", file.GoImportPath.Ident(serviceName), "Server, opts ...", microServerPackage.Ident("HandlerOption"), ") error {")
|
||||||
|
} else {
|
||||||
gfile.P("func Register", serviceName, "Server(s ", microServerPackage.Ident("Server"), ", sh ", serviceName, "Server, opts ...", microServerPackage.Ident("HandlerOption"), ") error {")
|
gfile.P("func Register", serviceName, "Server(s ", microServerPackage.Ident("Server"), ", sh ", serviceName, "Server, opts ...", microServerPackage.Ident("HandlerOption"), ") error {")
|
||||||
|
}
|
||||||
gfile.P("type ", unexport(serviceName), " interface {")
|
gfile.P("type ", unexport(serviceName), " interface {")
|
||||||
for _, method := range service.Methods {
|
for _, method := range service.Methods {
|
||||||
generateServerSignature(gfile, serviceName, method, true)
|
generateServerSignature(gfile, serviceName, method, true)
|
||||||
@ -491,7 +503,11 @@ func (g *Generator) generateServiceRegister(gfile *protogen.GeneratedFile, servi
|
|||||||
gfile.P("h := &", unexport(serviceName), "Server{sh}")
|
gfile.P("h := &", unexport(serviceName), "Server{sh}")
|
||||||
gfile.P("var nopts []", microServerPackage.Ident("HandlerOption"))
|
gfile.P("var nopts []", microServerPackage.Ident("HandlerOption"))
|
||||||
if component == "http" {
|
if component == "http" {
|
||||||
|
// if g.standalone {
|
||||||
|
// gfile.P("nopts = append(nopts, ", microServerHttpPackage.Ident("HandlerEndpoints"), "(", file.GoImportPath.Ident(serviceName), "ServerEndpoints))")
|
||||||
|
// } else {
|
||||||
gfile.P("nopts = append(nopts, ", microServerHttpPackage.Ident("HandlerEndpoints"), "(", serviceName, "ServerEndpoints))")
|
gfile.P("nopts = append(nopts, ", microServerHttpPackage.Ident("HandlerEndpoints"), "(", serviceName, "ServerEndpoints))")
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
gfile.P("return s.Handle(s.NewHandler(&", serviceName, "{h}, append(nopts, opts...)...))")
|
gfile.P("return s.Handle(s.NewHandler(&", serviceName, "{h}, append(nopts, opts...)...))")
|
||||||
gfile.P("}")
|
gfile.P("}")
|
||||||
|
Loading…
Reference in New Issue
Block a user