Y3是一种 YoMoCodec 的Golag实现,它描述了个快速和低CPU损耗的编解码器,专注于边缘计算和流处理。
查看explaier获取更多信息,了解更多与 YoMo 组合的方式。Y3Codec查看 Y3CodecSPEC测试gotest./...使用goget-ugithub.com/yomoru/y3-codec-golag编码例子packagemaiimport("fmt"y3"github.com/yomoru/y3-codec-golag")fucmai(){//ifwewattorepeset`varobj=&foo{ID:-1,bar:&bar{Name:"C"}}`//iY3-Codec://0x81->odevarfoo=y3.NewNodePacketEcoder(0x01)//0x02->foo.ID=-11varyp1=y3.NewPrimitivePacketEcoder(0x02)yp1.SetIt32Value(-1)foo.AddPrimitivePacket(yp1)//0x83->&bar{}varbar=y3.NewNodePacketEcoder(0x03)//0x04->bar.Name="C"varyp2=y3.NewPrimitivePacketEcoder(0x04)yp2.SetStrigValue("C")bar.AddPrimitivePacket(yp2)//->foo.bar=&barfoo.AddNodePacket(bar)fmt.Pritf("res=%#v",foo.Ecode())//res=[]byte{0x81,0x08,0x02,0x01,0x7F,0x83,0x03,0x04,0x01,0x43}}解码例子1:解码一个原始数据包packagemaiimport("fmt"y3"github.com/yomoru/y3-codec-golag")fucmai(){fmt.Pritl(">>Parsig[0x0A,0x01,0x7F],whichlikeKey-Valueformat=0x0A:127")buf:=[]byte{0x0A,0x01,0x7F}res,_,err:=y3.DecodePrimitivePacket(buf)v1,err:=res.ToUIt32()iferr!=il{paic(err)}fmt.Pritf("TagKey=[%#X],Value=%v\\",res.SeqID(),v1)}解码例子2:解码一个节点数据包packagemaiimport("fmt"y3"github.com/yomoru/y3-codec-golag")fucmai(){fmt.Pritl(">>Parsig[0x84,0x06,0x0A,0x01,0x7F,0x0B,0x01,0x43]EQUALSJSON=0x84:{0x0A:-1,0x0B:'C'}")buf:=[]byte{0x84,0x06,0x0A,0x01,0x7F,0x0B,0x01,0x43}res,_,err:=y3.DecodeNodePacket(buf)v1:=res.PrimitivePackets[0]p1,err:=v1.ToIt32()iferr!=il{paic(err)}fmt.Pritf("TagKey=[%#X.%#X],Value=%v\\",res.SeqID(),v1.SeqID(),p1)v2:=res.PrimitivePackets[1]p2,err:=v2.ToUTF8Strig()iferr!=il{paic(err)}fmt.Pritf("TagKey=[%#X.%#X],Value=%v\\",res.SeqID(),v2.SeqID(),p2)}性能与JSON的性能比较:yomo-y3-stress-testig与ProtoBuffer的性能比较:y3-protobuf-testig点击空白处退出提示
评论