예제 #1
0
파일: GServer.go 프로젝트: sinni800/sgemu
func (serv *GServer) SavePlayers() {
	serv.Log.Printf("Saving Players...")
	for _, m := range serv.Maps {
		m.Run.Add(func() {
			for _, c := range m.Players {
				serv.DBRun.Add(func() { Data.SavePlayer(c.Player) })
			}
		})
	}
	serv.Sdr.AddMin(func() { serv.SavePlayers() }, 1)
	//serv.Sdr.AddSec(func() { serv.SavePlayers() }, 5)
}
예제 #2
0
파일: GServer.go 프로젝트: sinni800/sgemu
func (serv *GServer) OnShutdown() {
	serv.Run.StopAndWait()
	serv.Log.Printf("GServer runner stopped!")
	serv.DBRun.StopAndWait()
	serv.Log.Printf("GServer DB runner stopped!")
	for id, m := range serv.Maps {
		m.Run.StopAndWait()
		serv.Log.Printf("Mapid %d runner stopped!", id)
		for _, c := range m.Players {
			Data.SavePlayer(c.Player)
		}
	}
	serv.CoreServer.Socket.Close()
	serv.Log.Printf("GServer socket closed!")

	if serv.RPCListener != nil {
		e := serv.RPCListener.Close()
		if e != nil {
			panic(e)
		}
	}
}