Golang core-netdef.IPacketContext类(方法)实例源码

下面列出了Golang core-netdef.IPacketContext 类(方法)源码代码实例,从而了解它的用法。

作者:chogath    项目:robi   
func injectResponseHandler(c netdef.IPacketContext, codec netdef.IPacketCodec, ses *netdef.Session, msg *coredef.RemoteCallREQ) {

	c.MapTo(&rpcResponse{
		codec: codec,
		req:   msg,
		ses:   ses,
	}, (*IResponse)(nil))
}

作者:chogath    项目:robi   
// 只创建了用户对象的原始用户
func RawUserHandler(ses *netdef.Session, c netdef.IPacketContext) {

	u := GetUser(ses)

	if u == nil {
		c.CancelRoute()
		return
	}

	c.Map(u)
}

作者:chogath    项目:robi   
// 进入游戏前的用户
func AccountHandler(ses *netdef.Session, c netdef.IPacketContext) {

	u := GetUser(ses)

	if u == nil || !u.VerifyOK || u.EnterGameOK {
		c.CancelRoute()
		return
	}

	c.Map(u)
}

作者:chogath    项目:robi   
func MsgAdapter_RelayMessageACK(pkt *netdef.Packet, c netdef.IPacketContext) {

	msg := &RelayMessageACK{}

	err := proto.Unmarshal(pkt.Data, msg)

	if err != nil {
		log.Printf("[RelayMessageACK] unmarshaling error:\n", err)
		return
	}

	c.Map(msg)
}

作者:chogath    项目:robi   
func (self *EventDispatcher) CallHandlers(id int, c netdef.IPacketContext) {

	if self.capturePanic {
		defer func() {
			if err := recover(); err != nil {
				log.Printf("id: %x panic: %v", id, err) // 这里的err其实就是panic传入的内容,55
			}

		}()
	}

	em, ok := self.eventHandlers[id]

	if ok && len(em) > 0 {
		c.CallHandlers(em)
	}
}


问题


面经


文章

微信
公众号

扫码关注公众号