You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

56 lines
1.3 KiB

package main
import (
"flag"
"log"
"net"
"github.com/gin-gonic/gin"
"minerva.bing89.com/gateway/pkg/apiserver"
grpcv1 "minerva.bing89.com/gateway/pkg/grpc/v1"
"minerva.bing89.com/gateway/pkg/minerva"
)
var (
address string
dburi string
persistentEngine string
)
func initFlags(){
flag.StringVar(&address, "address", "localhost:8080", "address to listen")
flag.StringVar(&dburi, "dburi", "minerva.json", "Persistent destination")
flag.StringVar(&persistentEngine, "persistent-engine", "file", "persistent engine, example: file, mysql, etc.")
flag.Parse()
}
//暂时只支持file作为持久化方式, 不处理其他方式
func createPersistentEngine()(minerva.PersistentEngine, error){
fe := minerva.NewPersistentFile(dburi)
return fe, nil
}
func main(){
initFlags()
pEngine, err := createPersistentEngine()
if err != nil {
log.Fatal("create persistent engine failed ", err)
}
svr, err := grpcv1.NewServer(pEngine)
if err != nil {
log.Fatal("create grpc server failed ",err)
}
apiServer := apiserver.NewAPIServer(svr)
engine := gin.Default()
apiServer.InitRoute(engine)
lis, err := net.Listen("tcp", address)
if err != nil {
log.Fatal("create net listener failed ",err)
}
defer lis.Close()
go svr.StartRPCService(lis)
err = engine.RunListener(lis)
if err != nil {
log.Fatal("start http server failed ", err)
}
}