package actions import ( "fmt" "google.golang.org/grpc" "net" "pro2d/components/db" "pro2d/components/etcd" "pro2d/conf" "pro2d/utils" ) type BasicServer struct { SConf *conf.SConf EtcdClient *etcd.EtcdClient GrpcServer *grpc.Server } func NewServer() *BasicServer { return &BasicServer{} } func (b *BasicServer) Start(sConf *conf.SConf) (net.Listener, error) { b.SConf = sConf //初始化数据库 db.MongoDatabase = db.MongoClient.Database(sConf.DBName) //初始化etcd b.EtcdClient = etcd.NewEtcdClient(conf.GlobalConf.Etcd) b.EtcdClient.PutWithLeasePrefix(sConf.Name, sConf.ID, fmt.Sprintf("%s:%d", sConf.IP, sConf.Port), 10) listing := fmt.Sprintf(":%d", sConf.Port) lis, err := net.Listen("tcp", listing) if err != nil { return nil, err } return lis, err } func (b *BasicServer) Stop() { utils.Sugar.Debugf("平滑关闭服务") b.EtcdClient.Close() b.GrpcServer.GracefulStop() }