代码拉取完成,页面将自动刷新
package remote
import (
"reflect"
"os"
"github.com/gogo/protobuf/proto"
)
func serialize(message proto.Message) ([]byte, string, error) {
typeName := proto.MessageName(message)
ensureGoGo(typeName)
bytes, err := proto.Marshal(message)
if err != nil {
return nil, "", err
}
return bytes, typeName, nil
}
func deserialize(message *MessageEnvelope, typeName string) proto.Message {
ensureGoGo(typeName)
t1 := proto.MessageType(typeName)
if t1 == nil {
logger.Error("Unknown message type=[%v]", typeName)
os.Exit(1)
}
t := t1.Elem()
intPtr := reflect.New(t)
instance := intPtr.Interface().(proto.Message)
proto.Unmarshal(message.MessageData, instance)
return instance
}
func ensureGoGo(typeName string) {
if typeName == "" {
logger.Error("Message type name is empty string, make sure you have generated the Proto contacts with GOGO Proto: github.com/gogo/protobuf/proto")
os.Exit(1)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。