本文整理汇总了Golang中github.com/FactomProject/FactomCode/common.DirectoryBlock.UnmarshalBinary方法的典型用法代码示例。如果您正苦于以下问题:Golang DirectoryBlock.UnmarshalBinary方法的具体用法?Golang DirectoryBlock.UnmarshalBinary怎么用?Golang DirectoryBlock.UnmarshalBinary使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/FactomProject/FactomCode/common.DirectoryBlock
的用法示例。
在下文中一共展示了DirectoryBlock.UnmarshalBinary方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getAll
func getAll() error {
dbs := make([]*common.DirectoryBlock, 0, 100)
next := DBHeadStr
for {
blk, err := factom.GetRaw(next)
if err != nil {
panic(err.Error())
}
db := new(common.DirectoryBlock)
err = db.UnmarshalBinary(blk)
if err != nil {
panic(err.Error())
}
dbs = append(dbs, db)
if bytes.Equal(db.Header.PrevKeyMR.Bytes(), DBHeadLast) {
break
}
next = hex.EncodeToString(db.Header.PrevKeyMR.Bytes())
}
DBHeadLast = DBHead
for i := len(dbs) - 1; i >= 0; i-- {
DirectoryBlocks = append(DirectoryBlocks, dbs[i])
fb := new(block.FBlock)
var fcnt int
for _, dbe := range dbs[i].DBEntries {
if bytes.Equal(dbe.ChainID.Bytes(), common.FACTOID_CHAINID) {
fcnt++
hashstr := hex.EncodeToString(dbe.KeyMR.Bytes())
fdata, err := factom.GetRaw(hashstr)
if err != nil {
panic(err.Error())
}
err = fb.UnmarshalBinary(fdata)
if err != nil {
panic(err.Error())
}
FactoidBlocks = append(FactoidBlocks, fb)
break
}
}
if fb == nil {
panic("Missing Factoid Block from a directory block")
}
if fcnt > 1 {
panic("More than one Factom Block found in a directory block.")
}
if err := ProcessFB(fb); err != nil {
return err
}
}
return nil
}
示例2: getAll
func getAll() error {
dbs := make([]*common.DirectoryBlock, 0, 100)
next := DBHeadStr
for {
blk, err := factom.GetRaw(next)
if err != nil {
panic(err.Error())
}
db := new(common.DirectoryBlock)
err = db.UnmarshalBinary(blk)
if err != nil {
panic(err.Error())
}
dbs = append(dbs, db)
if bytes.Equal(db.Header.PrevKeyMR.Bytes(), common.ZERO_HASH[:]) {
break
}
next = hex.EncodeToString(db.Header.PrevKeyMR.Bytes())
}
for i := len(dbs) - 1; i >= 0; i-- {
DirectoryBlocks = append(DirectoryBlocks, dbs[i])
fb := new(block.FBlock)
for _, dbe := range dbs[i].DBEntries {
if bytes.Equal(dbe.ChainID.Bytes(), common.FACTOID_CHAINID) {
hashstr := hex.EncodeToString(dbe.KeyMR.Bytes())
fdata, err := factom.GetRaw(hashstr)
if err != nil {
panic(err.Error())
}
err = fb.UnmarshalBinary(fdata)
if err != nil {
panic(err.Error())
}
FactoidBlocks = append(FactoidBlocks, fb)
break
}
}
if fb == nil {
fmt.Println("Missing Factoid Block")
}
}
return nil
}