1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package quickstart
- import (
- _ "embed"
- "io/ioutil"
- "path/filepath"
- "github.com/zeromicro/go-zero/core/logx"
- "github.com/zeromicro/go-zero/core/service"
- "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
- )
- const (
- rpcEtcContent = `Name: greet.rpc
- ListenOn: 127.0.0.1:8080
- `
- protoName = "greet.proto"
- )
- var (
- //go:embed idl/greet.proto
- protocContent string
- zRPCWorkDir string
- )
- type serviceImpl struct {
- starter func()
- }
- func (s serviceImpl) Start() {
- s.starter()
- }
- func (s serviceImpl) Stop() {}
- func initRPCProto() error {
- zRPCWorkDir = filepath.Join(projectDir, "rpc")
- if err := pathx.MkdirIfNotExist(zRPCWorkDir); err != nil {
- return err
- }
- protoFilename := filepath.Join(zRPCWorkDir, protoName)
- rpcBytes := []byte(protocContent)
- return ioutil.WriteFile(protoFilename, rpcBytes, 0666)
- }
- type micro struct{}
- func newMicroService() micro {
- m := micro{}
- m.mustStartRPCProject()
- return m
- }
- func (m micro) mustStartRPCProject() {
- logx.Must(initRPCProto())
- log.Debug(">> Generating quickstart zRPC project...")
- arg := "goctl rpc protoc " + protoName + " --go_out=. --go-grpc_out=. --zrpc_out=. --verbose"
- execCommand(zRPCWorkDir, arg)
- etcFile := filepath.Join(zRPCWorkDir, "etc", "greet.yaml")
- logx.Must(ioutil.WriteFile(etcFile, []byte(rpcEtcContent), 0666))
- }
- func (m micro) start() {
- mono := newMonoService(true)
- goModTidy(projectDir)
- sg := service.NewServiceGroup()
- sg.Add(serviceImpl{func() {
- log.Debug(">> Ready to start an zRPC server...")
- goStart(zRPCWorkDir)
- }})
- sg.Add(serviceImpl{func() {
- mono.start()
- }})
- sg.Start()
- }
|