本文整理汇总了Golang中github.com/golang/protobuf/proto.NewBuffer函数的典型用法代码示例。如果您正苦于以下问题:Golang NewBuffer函数的具体用法?Golang NewBuffer怎么用?Golang NewBuffer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewBuffer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: encodeListTxIndexes
func encodeListTxIndexes(listTx []uint64) []byte {
b := proto.NewBuffer([]byte{})
for i := range listTx {
b.EncodeVarint(listTx[i])
}
return b.Bytes()
}
开发者ID:masterDev1985,项目名称:obc-peer,代码行数:7,代码来源:blockchain_indexes.go
示例2: marshal
func (trieNode *trieNode) marshal() ([]byte, error) {
buffer := proto.NewBuffer([]byte{})
// write value
err := buffer.EncodeRawBytes(trieNode.value)
if err != nil {
return nil, err
}
numCryptoHashes := trieNode.getNumChildren()
//write number of crypto-hashes
err = buffer.EncodeVarint(uint64(numCryptoHashes))
if err != nil {
return nil, err
}
if numCryptoHashes == 0 {
return buffer.Bytes(), nil
}
for i, cryptoHash := range trieNode.childrenCryptoHashes {
//write crypto-hash Index
err = buffer.EncodeVarint(uint64(i))
if err != nil {
return nil, err
}
// write crypto-hash
err = buffer.EncodeRawBytes(cryptoHash)
if err != nil {
return nil, err
}
}
return buffer.Bytes(), nil
}
开发者ID:masterDev1985,项目名称:obc-peer,代码行数:35,代码来源:trie_node.go
示例3: TestMsg
func TestMsg(t *testing.T) {
recMsg := &OSMsg{Fromu: proto.String("jack"), Tou: proto.String("tom"), Content: proto.String("first")}
b, err := proto.Marshal(recMsg)
if checkerr(err) {
return
}
buf := proto.NewBuffer(b)
err = proto.Unmarshal(b, &msg)
if checkerr(err) {
return
}
fmt.Println(msg)
fmt.Println(msg.String())
err = proto.Unmarshal(buf.Bytes(), &osmsg)
if checkerr(err) {
return
}
fmt.Println(osmsg)
fmt.Println(osmsg.String())
a := []int{1, 2}
a1 := a[:1]
fmt.Println(a, a1)
a1 = append(a1, 3)
fmt.Println(a, a1)
a1 = append(a1, 4)
fmt.Println(a, a1)
a1[1] = 10
fmt.Println(a, a1)
}
开发者ID:shaalx,项目名称:oschat,代码行数:33,代码来源:msg_test.go
示例4: BenchmarkVarint64ArrayMixed
// BenchmarkVarint64ArrayMixed shows the performance of lots of small messages, each
// containing a small number of large (3, 4, and 5 byte) repeated int64s.
func BenchmarkVarint64ArrayMixed(b *testing.B) {
for i := uint(1); i <= 1<<5; i <<= 1 {
dist := genUint64Dist([11]int{0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0}, int(i))
// number of sub fields
for k := uint(1); k <= 1<<10; k <<= 2 {
msg := &tpb.Message{}
for m := uint(0); m < k; m++ {
msg.Children = append(msg.Children, &tpb.Message{
Key: dist,
})
}
raw, err := proto.Marshal(msg)
if err != nil {
b.Error("wrong encode", err)
}
b.Run(fmt.Sprintf("Fields%vLen%v", k, i), func(b *testing.B) {
scratchBuf := proto.NewBuffer(nil)
b.ResetTimer()
for k := 0; k < b.N; k++ {
scratchBuf.SetBuf(raw)
msgBlackhole.Reset()
if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
b.Error("wrong decode", err)
}
}
})
}
}
}
开发者ID:Rudloff,项目名称:platform,代码行数:31,代码来源:decode_test.go
示例5: unmarshalTrieNode
func unmarshalTrieNode(key *trieKey, serializedContent []byte) (*trieNode, error) {
trieNode := newTrieNode(key, nil, false)
buffer := proto.NewBuffer(serializedContent)
value, err := buffer.DecodeRawBytes(false)
if err != nil {
return nil, err
}
trieNode.value = value
numCryptoHashes, err := buffer.DecodeVarint()
if err != nil {
return nil, err
}
for i := uint64(0); i < numCryptoHashes; i++ {
index, err := buffer.DecodeVarint()
if err != nil {
return nil, err
}
cryptoHash, err := buffer.DecodeRawBytes(false)
if err != nil {
return nil, err
}
trieNode.childrenCryptoHashes[int(index)] = cryptoHash
}
return trieNode, nil
}
开发者ID:masterDev1985,项目名称:obc-peer,代码行数:27,代码来源:trie_node.go
示例6: marshal
func (bucketNode *bucketNode) marshal() []byte {
buffer := proto.NewBuffer([]byte{})
for i := 0; i < conf.getMaxGroupingAtEachLevel(); i++ {
buffer.EncodeRawBytes(bucketNode.childrenCryptoHash[i])
}
return buffer.Bytes()
}
开发者ID:C0rWin,项目名称:fabric,代码行数:7,代码来源:bucket_node.go
示例7: unmarshalTrieNode
func unmarshalTrieNode(key *trieKey, serializedContent []byte) (*trieNode, error) {
stateTrieLogger.Debug("key = [%s], len(serializedContent) = %d", key, len(serializedContent))
trieNode := newTrieNode(key, nil, false)
buffer := proto.NewBuffer(serializedContent)
trieNode.value = unmarshalTrieNodeValueFromBuffer(buffer)
numCryptoHashes, err := buffer.DecodeVarint()
stateTrieLogger.Debug("numCryptoHashes = [%d]", numCryptoHashes)
if err != nil {
return nil, err
}
for i := uint64(0); i < numCryptoHashes; i++ {
index, err := buffer.DecodeVarint()
if err != nil {
return nil, err
}
cryptoHash, err := buffer.DecodeRawBytes(false)
if err != nil {
return nil, err
}
trieNode.childrenCryptoHashes[int(index)] = cryptoHash
}
stateTrieLogger.Debug("unmarshalled trieNode = [%s]", trieNode)
return trieNode, nil
}
开发者ID:magooster,项目名称:obc-peer,代码行数:25,代码来源:trie_node.go
示例8: Encoder
func (c *codec) Encoder(w io.Writer) mc.Encoder {
return &encoder{
w: w,
buf: proto.NewBuffer(nil),
c: c,
}
}
开发者ID:mildred,项目名称:go-multicodec,代码行数:7,代码来源:pb.go
示例9: writeResponse
func (s *Server) writeResponse(c *Client, cmd int, seq uint32, pb proto.Message) error {
var err error
c.sendlock.Lock()
defer c.sendlock.Unlock()
// cmd
binary.LittleEndian.PutUint16(c.wb[0:2], uint16(cmd+1))
// seq
binary.LittleEndian.PutUint32(c.wb[4:8], seq)
logger.Println("send header:", cmd+1, seq)
// pb
if pb != nil {
buf := proto.NewBuffer(c.wb[0:8])
buf.Marshal(pb)
respb := buf.Bytes()
// len
binary.LittleEndian.PutUint16(respb[2:4], uint16(len(respb)))
_, err = c.w.Write(respb)
} else {
// len
binary.LittleEndian.PutUint16(c.wb[2:4], uint16(HeaderSize))
_, err = c.w.Write(c.wb[0:8])
}
return err
}
开发者ID:SeaSunOpenSource,项目名称:go-jxhttp,代码行数:26,代码来源:server.go
示例10: NotifyClient
func (s *Server) NotifyClient(c *Client, cmd int, pb proto.Message, cb NotifyCallback) error {
var err error
seq := c.addPendingRequest(cb)
c.sendlock.Lock()
defer c.sendlock.Unlock()
// cmd
binary.LittleEndian.PutUint16(c.wb[0:2], uint16(cmd))
// seq
binary.LittleEndian.PutUint32(c.wb[4:8], seq)
// pb
if pb != nil {
buf := proto.NewBuffer(c.wb[0:8])
buf.Marshal(pb)
respb := buf.Bytes()
// len
binary.LittleEndian.PutUint16(respb[2:4], uint16(len(respb)))
_, err = c.w.Write(respb)
} else {
// len
binary.LittleEndian.PutUint16(c.wb[2:4], uint16(HeaderSize))
_, err = c.w.Write(c.wb[0:8])
}
return err
}
开发者ID:SeaSunOpenSource,项目名称:go-jxhttp,代码行数:28,代码来源:server.go
示例11: dataAsString
// dataAsString returns the given byte array as a string; handles detecting
// protocol buffers.
func dataAsString(data []byte) string {
dataString := string(data)
if !strings.HasPrefix(dataString, "{") {
dataString = "\n" + hex.Dump(data)
proto.NewBuffer(make([]byte, 0, 1024)).DebugPrint("decoded object", data)
}
return dataString
}
开发者ID:kubernetes,项目名称:kubernetes,代码行数:10,代码来源:serialization_test.go
示例12: unmarshalTrieNodeValue
func unmarshalTrieNodeValue(serializedContent []byte) []byte {
buffer := proto.NewBuffer(serializedContent)
value, err := buffer.DecodeRawBytes(false)
if err != nil {
panic(fmt.Errorf("This error is not excpected: %s", err))
}
return value
}
开发者ID:masterDev1985,项目名称:obc-peer,代码行数:8,代码来源:trie_node.go
示例13: Write
func (self *Shard) Write(database string, series []*protocol.Series) error {
self.closeLock.RLock()
defer self.closeLock.RUnlock()
if self.closed {
return fmt.Errorf("Shard is closed")
}
wb := make([]storage.Write, 0)
for _, s := range series {
if len(s.Points) == 0 {
return errors.New("Unable to write no data. Series was nil or had no points.")
}
if len(s.FieldIds) == 0 {
return errors.New("Unable to write points without fields")
}
count := 0
for fieldIndex, id := range s.FieldIds {
for _, point := range s.Points {
// keyBuffer and dataBuffer have to be recreated since we are
// batching the writes, otherwise new writes will override the
// old writes that are still in memory
dataBuffer := proto.NewBuffer(nil)
var err error
sk := newStorageKey(id, point.GetTimestamp(), point.GetSequenceNumber())
if point.Values[fieldIndex].GetIsNull() {
wb = append(wb, storage.Write{Key: sk.bytes(), Value: nil})
goto check
}
err = dataBuffer.Marshal(point.Values[fieldIndex])
if err != nil {
return err
}
wb = append(wb, storage.Write{Key: sk.bytes(), Value: dataBuffer.Bytes()})
check:
count++
if count >= self.writeBatchSize {
err = self.db.BatchPut(wb)
if err != nil {
return err
}
count = 0
wb = make([]storage.Write, 0, self.writeBatchSize)
}
}
}
}
return self.db.BatchPut(wb)
}
开发者ID:Wikia,项目名称:influxdb,代码行数:53,代码来源:shard.go
示例14: decodeBlockNumTxIndex
func decodeBlockNumTxIndex(bytes []byte) (blockNum uint64, txIndex uint64, err error) {
b := proto.NewBuffer(bytes)
blockNum, err = b.DecodeVarint()
if err != nil {
return
}
txIndex, err = b.DecodeVarint()
if err != nil {
return
}
return
}
开发者ID:masterDev1985,项目名称:obc-peer,代码行数:12,代码来源:blockchain_indexes.go
示例15: Marshal
// Marshal serializes a `TxReadWriteSet`
func (txRW *TxReadWriteSet) Marshal() ([]byte, error) {
buf := proto.NewBuffer(nil)
var err error
if err = buf.EncodeVarint(uint64(len(txRW.NsRWs))); err != nil {
return nil, err
}
for i := 0; i < len(txRW.NsRWs); i++ {
if err = txRW.NsRWs[i].Marshal(buf); err != nil {
return nil, err
}
}
return buf.Bytes(), nil
}
开发者ID:hyperledger,项目名称:fabric,代码行数:14,代码来源:rwset.go
示例16: writeFromPointers
func writeFromPointers(queryid string, f io.Writer, pointers []resultPointer) error {
stateMu.RLock()
s := state[queryid]
stateMu.RUnlock()
firstPathRank := s.FirstPathRank
s.tempFilesMu.Lock()
defer s.tempFilesMu.Unlock()
if _, err := f.Write([]byte("[")); err != nil {
return err
}
var msg pb.SearchReply
buf := proto.NewBuffer(nil)
for idx, pointer := range pointers {
src := s.perBackend[pointer.backendidx].tempFile
if _, err := src.Seek(pointer.offset, os.SEEK_SET); err != nil {
return err
}
// TODO: Avoid the allocations by using a slice and only allocate a new buffer when pointer.length > cap(rdbuf)
rdbuf := make([]byte, pointer.length)
if _, err := src.Read(rdbuf); err != nil {
return err
}
if idx > 0 {
if _, err := f.Write([]byte(",")); err != nil {
return err
}
}
buf.SetBuf(rdbuf)
msg.Reset()
if err := buf.Unmarshal(&msg); err != nil {
return err
}
if msg.Type != pb.SearchReply_MATCH {
return fmt.Errorf("Expected to find a pb.SearchReply_MATCH, instead got %d", msg.Type)
}
match := msg.Match
// We need to fix the ranking here because we persist raw results from
// the dcs-source-backend in queryBackend(), but then modify the
// ranking in storeResult().
match.Ranking = match.Pathrank + ((firstPathRank * 0.1) * match.Ranking)
if err := WriteMatchJSON(match, f); err != nil {
return err
}
}
if _, err := f.Write([]byte("]\n")); err != nil {
return err
}
return nil
}
开发者ID:Debian,项目名称:dcs,代码行数:51,代码来源:querymanager.go
示例17: unmarshalBucketNode
func unmarshalBucketNode(bucketKey *bucketKey, serializedBytes []byte) *bucketNode {
bucketNode := newBucketNode(bucketKey)
buffer := proto.NewBuffer(serializedBytes)
for i := 0; i < conf.getMaxGroupingAtEachLevel(); i++ {
childCryptoHash, err := buffer.DecodeRawBytes(false)
if err != nil {
panic(fmt.Errorf("this error should not occur: %s", err))
}
if !util.IsNil(childCryptoHash) {
bucketNode.childrenCryptoHash[i] = childCryptoHash
}
}
return bucketNode
}
开发者ID:RicHernandez2,项目名称:fabric,代码行数:14,代码来源:bucket_node.go
示例18: marshal
func (i *checkpointInfo) marshal() ([]byte, error) {
buffer := proto.NewBuffer([]byte{})
var err error
if err = buffer.EncodeVarint(uint64(i.latestFileChunkSuffixNum)); err != nil {
return nil, err
}
if err = buffer.EncodeVarint(uint64(i.latestFileChunksize)); err != nil {
return nil, err
}
if err = buffer.EncodeVarint(i.lastBlockNumber); err != nil {
return nil, err
}
return buffer.Bytes(), nil
}
开发者ID:hyperledger,项目名称:fabric,代码行数:14,代码来源:blockfile_mgr.go
示例19: Marshal
// Marshal serializes the StateDelta
func (stateDelta *StateDelta) Marshal() (b []byte) {
buffer := proto.NewBuffer([]byte{})
err := buffer.EncodeVarint(uint64(len(stateDelta.chaincodeStateDeltas)))
if err != nil {
// in protobuf code the error return is always nil
panic(fmt.Errorf("This error should not occure: %s", err))
}
for chaincodeID, chaincodeStateDelta := range stateDelta.chaincodeStateDeltas {
buffer.EncodeStringBytes(chaincodeID)
chaincodeStateDelta.marshal(buffer)
}
b = buffer.Bytes()
return
}
开发者ID:masterDev1985,项目名称:obc-peer,代码行数:15,代码来源:state_delta.go
示例20: processMessage
func processMessage(msg []byte) [][]byte {
buf := pb.NewBuffer(msg)
payloads := make([][]byte, 0)
for {
hbytes, err := buf.DecodeRawBytes(true)
if err != nil {
break
}
payloads = append(payloads, hbytes)
}
return payloads
}
开发者ID:yzl11,项目名称:vessel,代码行数:15,代码来源:conn.go
注:本文中的github.com/golang/protobuf/proto.NewBuffer函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论