icompontents.go 2.88 KB
package components

//-----------------
//----net start----
//-----------------
type (
	//网络包头
	IHead interface {
		GetDataLen() uint32  //获取消息数据段长度
		GetMsgID() uint32    //获取消息ID
		GetErrCode() int32   //获取消息错误码
		GetPreserve() uint32 //获取预留数据
	}
	//网络包
	IMessage interface {
		GetHeader() IHead       //获取消息头
		SetHeader(header IHead) //设置消息头

		GetData() []byte //获取消息内容
		SetData([]byte)  //设置消息内容

		SetSession(IConnection)  //设置连接
		GetSession() IConnection //获取连接
	}
	//网络拆包解包器
	ISplitter interface {
		UnPack([]byte) (IMessage, error)
		Pack(cmd uint32, data []byte, errcode int32, preserve uint32) ([]byte, error)
		ParseMsg(data []byte, atEOF bool) (advance int, token []byte, err error)
		GetHeadLen() uint32
	}
	ConnectionCallback func(IConnection)
	CloseCallback      func(IConnection)
	MessageCallback    func(IMessage)
	TimerCallback      func(IConnection)
	//链接
	IConnection interface {
		GetID() uint32
		Start()
		Stop()
		Send(code int32, cmd uint32, b []byte) error

		SetConnectionCallback(ConnectionCallback)
		SetMessageCallback(MessageCallback)
		SetCloseCallback(CloseCallback)
		SetTimerCallback(TimerCallback)
	}
	//connManage
	IConnManage interface {
		AddConn(id uint32, connection IConnection)
		GetConn(id uint32) IConnection
		DelConn(id uint32) IConnection
		Range(f func(key interface{}, value interface{}) bool)
		StopAllConns()
	}
	//server
	IServer interface {
		Start() error
		Stop()

		GetSplitter() ISplitter
		GetPlugin() IPlugin
		GetAction(uint32) interface{}
		SetActions(map[interface{}]interface{})
		GetConnManage() IConnManage

		SetConnectionCallback(ConnectionCallback)
		SetMessageCallback(MessageCallback)
		SetCloseCallback(CloseCallback)
		SetTimerCallback(TimerCallback)
	}

	//Connector
	IConnector interface {
		Connect() error
		DisConnect()

		Send(cmd uint32, b []byte)
	}

	//httpserver
	IHttp interface {
		Start() error
		Stop()
		BindHandler(interface{})
	}
	ActionHandler func(msg IMessage) (int32, interface{})
	//用于热更逻辑的插件接口
	IPlugin interface {
		LoadPlugin() error
		SetActions(map[interface{}]interface{})
		GetAction(uint32) interface{}
	}
)

//-----------------
//-----db start----
//-----------------
type (
	IDB interface {
		CreateTable() error

		Create() (interface{}, error)
		Save() error
		Load() error
		FindOne() error
		UpdateProperty(key string, val interface{}) error
		UpdateProperties(properties map[string]interface{}) error

		SetUnique(key string) (string, error)
	}

	ISchema interface {
		Init()
		GetDB() IDB

		GetPri() interface{}
		GetSchema() interface{}
		GetSchemaName() string

		Load() error
		Create() error
		Update()

		SetProperty(key string, val interface{})
		SetProperties(properties map[string]interface{})
	}
)

//-----------------
//-----db end------
//-----------------