basic.go 926 Bytes
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()
}