Skip to content

Commit

Permalink
调整: BuildPacket时, 用名字进行meta查找. 避免go1.8 plugin中type不一致问题
Browse files Browse the repository at this point in the history
  • Loading branch information
davyxu committed Jan 18, 2017
1 parent b667a93 commit fbe2f3f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
18 changes: 9 additions & 9 deletions msgmeta.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cellnet

import (
"path"
"reflect"

"github.com/golang/protobuf/proto"
Expand All @@ -13,9 +14,8 @@ type MessageMeta struct {
}

var (
name2msgmeta = map[string]*MessageMeta{}
id2msgmeta = map[uint32]*MessageMeta{}
msgtype2msgmeta = map[reflect.Type]*MessageMeta{}
name2msgmeta = map[string]*MessageMeta{}
id2msgmeta = map[uint32]*MessageMeta{}
)

// 注册消息元信息(代码生成专用)
Expand All @@ -30,7 +30,6 @@ func RegisterMessageMeta(name string, msg proto.Message, id uint32) {
}

name2msgmeta[name] = meta
msgtype2msgmeta[rtype] = meta
id2msgmeta[meta.ID] = meta
}

Expand All @@ -43,13 +42,14 @@ func MessageMetaByName(name string) *MessageMeta {
return nil
}

// 根据类型名字查找消息元信息
func MessageMetaByType(rtype reflect.Type) *MessageMeta {
if v, ok := msgtype2msgmeta[rtype]; ok {
return v
func MessageFullName(rtype reflect.Type) string {

if rtype.Kind() == reflect.Ptr {
rtype = rtype.Elem()
}

return nil
return path.Base(rtype.PkgPath()) + "." + rtype.Name()

}

// 根据id查找消息元信息
Expand Down
2 changes: 1 addition & 1 deletion packet.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func BuildPacket(data interface{}) (*Packet, *MessageMeta) {
log.Errorln(err)
}

meta := MessageMetaByType(reflect.TypeOf(msg))
meta := MessageMetaByName(MessageFullName(reflect.TypeOf(msg)))

return &Packet{
MsgID: uint32(meta.ID),
Expand Down

0 comments on commit fbe2f3f

Please sign in to comment.