Zinx V0 6 多路由模式

2021-09-23 15:41:57 字數 1208 閱讀 7013

不同的message對應不同的業務

訊息管理模組

支援多路由排程管理,擁有乙個router集合屬性

抽象層

type imsghandler inte***ce
實現層

屬性

//路由集合

map[uint32] router

方法

新增路由的方法

//新增路由的方法

func (ms *msghandler)addrouter(msgid uint32, router ziface.irouter)

//新增msgid和router的對應關係

ms.routers[msgid] = router

return

}

排程路由的方法

//排程路由的方法

func (ms *msghandler)domsghandler(request ziface.irequest)

修改

改修connection模組

結構體

//新增

//訊息管理模組 多路由

msghandler ziface.imsghandler

建構函式

//建立乙個新的連線

func newconnection(conn *net.tcpconn, connid uint32, msghandler ziface.imsghandler) ziface.iconnection

return c

}

方法

//針對鏈結讀業務的方法

func (c *connection) startreader()

修改server模組

結構體

//新增

//訊息管理模組 多路由

msghandler ziface.imsghandler

建構函式

func newserver() ziface.iserver 

}

新增路由方法

func (s *server) addrouter(msgid uint32, router ziface.irouter)

Zinx V0 7 讀寫分離

讀寫分離 新增乙個reader和writer之間的通訊channel 新增乙個writer goroutine 阻塞等待channel是否有需要的資料過來 將資料回寫給conn對應的客戶端 reader由之前的 同時啟動writer和reader的goroutine 處理writer退出,當觸發c....

Zinx V0 9 鏈結管理模組

鏈結管理模組 屬性connection鏈結的集合 針對map的互斥鎖 方法新增鏈結 新增鏈結 func cm connmanager add conn ziface.iconnection 刪除鏈結 func cm connmanager remove connid uint32 根據鏈結id得到鏈...

Zinx V0 7的讀寫分離模型

將zinx的讀寫模型變為 把reader中的訊息通過channel傳遞給writer,使讀寫分離 1.在connection中新增乙個channel用來給writer傳遞資料,再新增乙個channel用來傳遞connection的關閉資訊 type connection struct 初始化的時候將...