xx 5 месяцев назад
Сommit
29e7b8c9d3

+ 6 - 0
bin/conf/server.json

@@ -0,0 +1,6 @@
+{
+	"LogLevel": "debug",
+	"LogPath": "",
+	"TCPAddr": "127.0.0.1:3563",
+	"MaxConnNum": 20000
+}

+ 2 - 0
bin/gamedata/.gitignore

@@ -0,0 +1,2 @@
+*
+!.gitignore

+ 2 - 0
bin/log/.gitignore

@@ -0,0 +1,2 @@
+*
+!.gitignore

+ 18 - 0
src/server/base/skeleton.go

@@ -0,0 +1,18 @@
+package base
+
+import (
+	"github.com/name5566/leaf/chanrpc"
+	"github.com/name5566/leaf/module"
+	"server/conf"
+)
+
+func NewSkeleton() *module.Skeleton {
+	skeleton := &module.Skeleton{
+		GoLen:              conf.GoLen,
+		TimerDispatcherLen: conf.TimerDispatcherLen,
+		AsynCallLen:        conf.AsynCallLen,
+		ChanRPCServer:      chanrpc.NewServer(conf.ChanRPCLen),
+	}
+	skeleton.Init()
+	return skeleton
+}

+ 24 - 0
src/server/conf/conf.go

@@ -0,0 +1,24 @@
+package conf
+
+import (
+	"log"
+	"time"
+)
+
+var (
+	// log conf
+	LogFlag = log.LstdFlags
+
+	// gate conf
+	PendingWriteNum        = 2000
+	MaxMsgLen       uint32 = 4096
+	HTTPTimeout            = 10 * time.Second
+	LenMsgLen              = 2
+	LittleEndian           = false
+
+	// skeleton conf
+	GoLen              = 10000
+	TimerDispatcherLen = 10000
+	AsynCallLen        = 10000
+	ChanRPCLen         = 10000
+)

+ 30 - 0
src/server/conf/json.go

@@ -0,0 +1,30 @@
+package conf
+
+import (
+	"encoding/json"
+	"github.com/name5566/leaf/log"
+	"io/ioutil"
+)
+
+var Server struct {
+	LogLevel    string
+	LogPath     string
+	WSAddr      string
+	CertFile    string
+	KeyFile     string
+	TCPAddr     string
+	MaxConnNum  int
+	ConsolePort int
+	ProfilePath string
+}
+
+func init() {
+	data, err := ioutil.ReadFile("conf/server.json")
+	if err != nil {
+		log.Fatal("%v", err)
+	}
+	err = json.Unmarshal(data, &Server)
+	if err != nil {
+		log.Fatal("%v", err)
+	}
+}

+ 10 - 0
src/server/game/external.go

@@ -0,0 +1,10 @@
+package game
+
+import (
+	"server/game/internal"
+)
+
+var (
+	Module  = new(internal.Module)
+	ChanRPC = internal.ChanRPC
+)

+ 20 - 0
src/server/game/internal/chanrpc.go

@@ -0,0 +1,20 @@
+package internal
+
+import (
+	"github.com/name5566/leaf/gate"
+)
+
+func init() {
+	skeleton.RegisterChanRPC("NewAgent", rpcNewAgent)
+	skeleton.RegisterChanRPC("CloseAgent", rpcCloseAgent)
+}
+
+func rpcNewAgent(args []interface{}) {
+	a := args[0].(gate.Agent)
+	_ = a
+}
+
+func rpcCloseAgent(args []interface{}) {
+	a := args[0].(gate.Agent)
+	_ = a
+}

+ 1 - 0
src/server/game/internal/handler.go

@@ -0,0 +1 @@
+package internal

+ 23 - 0
src/server/game/internal/module.go

@@ -0,0 +1,23 @@
+package internal
+
+import (
+	"github.com/name5566/leaf/module"
+	"server/base"
+)
+
+var (
+	skeleton = base.NewSkeleton()
+	ChanRPC  = skeleton.ChanRPCServer
+)
+
+type Module struct {
+	*module.Skeleton
+}
+
+func (m *Module) OnInit() {
+	m.Skeleton = skeleton
+}
+
+func (m *Module) OnDestroy() {
+
+}

+ 21 - 0
src/server/gamedata/reader.go

@@ -0,0 +1,21 @@
+package gamedata
+
+import (
+	"github.com/name5566/leaf/log"
+	"github.com/name5566/leaf/recordfile"
+	"reflect"
+)
+
+func readRf(st interface{}) *recordfile.RecordFile {
+	rf, err := recordfile.New(st)
+	if err != nil {
+		log.Fatal("%v", err)
+	}
+	fn := reflect.TypeOf(st).Name() + ".txt"
+	err = rf.Read("gamedata/" + fn)
+	if err != nil {
+		log.Fatal("%v: %v", fn, err)
+	}
+
+	return rf
+}

+ 9 - 0
src/server/gate/external.go

@@ -0,0 +1,9 @@
+package gate
+
+import (
+	"server/gate/internal"
+)
+
+var (
+	Module = new(internal.Module)
+)

+ 29 - 0
src/server/gate/internal/module.go

@@ -0,0 +1,29 @@
+package internal
+
+import (
+	"github.com/name5566/leaf/gate"
+	"server/conf"
+	"server/game"
+	"server/msg"
+)
+
+type Module struct {
+	*gate.Gate
+}
+
+func (m *Module) OnInit() {
+	m.Gate = &gate.Gate{
+		MaxConnNum:      conf.Server.MaxConnNum,
+		PendingWriteNum: conf.PendingWriteNum,
+		MaxMsgLen:       conf.MaxMsgLen,
+		WSAddr:          conf.Server.WSAddr,
+		HTTPTimeout:     conf.HTTPTimeout,
+		CertFile:        conf.Server.CertFile,
+		KeyFile:         conf.Server.KeyFile,
+		TCPAddr:         conf.Server.TCPAddr,
+		LenMsgLen:       conf.LenMsgLen,
+		LittleEndian:    conf.LittleEndian,
+		Processor:       msg.Processor,
+		AgentChanRPC:    game.ChanRPC,
+	}
+}

+ 5 - 0
src/server/gate/router.go

@@ -0,0 +1,5 @@
+package gate
+
+func init() {
+
+}

+ 10 - 0
src/server/login/external.go

@@ -0,0 +1,10 @@
+package login
+
+import (
+	"server/login/internal"
+)
+
+var (
+	Module  = new(internal.Module)
+	ChanRPC = internal.ChanRPC
+)

+ 13 - 0
src/server/login/internal/handler.go

@@ -0,0 +1,13 @@
+package internal
+
+import (
+	"reflect"
+)
+
+func handleMsg(m interface{}, h interface{}) {
+	skeleton.RegisterChanRPC(reflect.TypeOf(m), h)
+}
+
+func init() {
+
+}

+ 23 - 0
src/server/login/internal/module.go

@@ -0,0 +1,23 @@
+package internal
+
+import (
+	"github.com/name5566/leaf/module"
+	"server/base"
+)
+
+var (
+	skeleton = base.NewSkeleton()
+	ChanRPC  = skeleton.ChanRPCServer
+)
+
+type Module struct {
+	*module.Skeleton
+}
+
+func (m *Module) OnInit() {
+	m.Skeleton = skeleton
+}
+
+func (m *Module) OnDestroy() {
+
+}

+ 24 - 0
src/server/main.go

@@ -0,0 +1,24 @@
+package main
+
+import (
+	"github.com/name5566/leaf"
+	lconf "github.com/name5566/leaf/conf"
+	"server/conf"
+	"server/game"
+	"server/gate"
+	"server/login"
+)
+
+func main() {
+	lconf.LogLevel = conf.Server.LogLevel
+	lconf.LogPath = conf.Server.LogPath
+	lconf.LogFlag = conf.LogFlag
+	lconf.ConsolePort = conf.Server.ConsolePort
+	lconf.ProfilePath = conf.Server.ProfilePath
+
+	leaf.Run(
+		game.Module,
+		gate.Module,
+		login.Module,
+	)
+}

+ 11 - 0
src/server/msg/msg.go

@@ -0,0 +1,11 @@
+package msg
+
+import (
+	"github.com/name5566/leaf/network"
+)
+
+var Processor network.Processor
+
+func init() {
+
+}