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
56 lines
1.3 KiB
3 years ago
|
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)
|
||
|
}
|
||
|
}
|