コード例 #1
0
ファイル: response.go プロジェクト: chogaths/robin
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))
}
コード例 #2
0
ファイル: user.go プロジェクト: chogaths/robin
// 只创建了用户对象的原始用户
func RawUserHandler(ses *netdef.Session, c netdef.IPacketContext) {

	u := GetUser(ses)

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

	c.Map(u)
}
コード例 #3
0
ファイル: user.go プロジェクト: chogaths/robin
// 进入游戏前的用户
func AccountHandler(ses *netdef.Session, c netdef.IPacketContext) {

	u := GetUser(ses)

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

	c.Map(u)
}
コード例 #4
0
ファイル: coredef_id.go プロジェクト: chogaths/robin
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)
}
コード例 #5
0
ファイル: eventdisp.go プロジェクト: chogaths/robin
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)
	}
}