/// 创建新的CoConnetor组件. /// /// 创建CoConnector组件时,CoConnector组件使用到的CoSession组件,CoConnection组件一同创建, /// CoServer组件则通过Context拿到,在CoConnector组件启动时加载. func NewCoConnector(ctx *context.Context) *CoConnector { cocnct, ok := ctx.GetComponent("coconnector").(*CoConnector) if ok == true { return cocnct } var decode func([]byte) (interface{}, error) var encode func(string, string, map[string]interface{}) ([]byte, error) cnct := getConnector(ctx) if opts, ok := ctx.AllOpts["coconnector"]; ok == true { decode, _ = opts["decode"].(func([]byte) (interface{}, error)) encode, _ = opts["encode"].(func(string, string, map[string]interface{}) ([]byte, error)) } coserv, ok1 := ctx.GetComponent("coserver").(*coserver.CoServer) if ok1 == false { coserv = coserver.NewCoServer() } cosess, ok2 := ctx.GetComponent("cosession").(*cosession.CoSession) if ok2 == false { cosess = cosession.NewCoSession() } coconn, ok3 := ctx.GetComponent("coconnection").(*coconnection.CoConnection) if ok3 == false { coconn = coconnection.NewCoConnection() } cocnct = &CoConnector{ctx, cnct, coserv, cosess, coconn, decode, encode} ctx.RegisteComponent("coconnector", cocnct) return cocnct }