本文整理汇总了Golang中github.com/FactomProject/factomd/common/interfaces.DBOverlay.ExecuteMultiBatch方法的典型用法代码示例。如果您正苦于以下问题:Golang DBOverlay.ExecuteMultiBatch方法的具体用法?Golang DBOverlay.ExecuteMultiBatch怎么用?Golang DBOverlay.ExecuteMultiBatch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/FactomProject/factomd/common/interfaces.DBOverlay
的用法示例。
在下文中一共展示了DBOverlay.ExecuteMultiBatch方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: CopyDB
func CopyDB(dbase1, dbase2 interfaces.DBOverlay) {
processing := ""
defer func() {
if r := recover(); r != nil {
err := fmt.Errorf("Error processing: %v", processing)
panic(err)
}
}()
dBlocks, err := dbase1.FetchAllDBlocks()
if err != nil {
panic(err)
}
prevECHash := primitives.NewZeroHash()
for _, dBlock := range dBlocks {
dbase2.StartMultiBatch()
err := dbase2.ProcessDBlockMultiBatch(dBlock)
if err != nil {
panic(err)
}
for _, dbEntry := range dBlock.GetDBEntries() {
switch dbEntry.GetChainID().String() {
case "000000000000000000000000000000000000000000000000000000000000000a":
aBlock, err := dbase1.FetchABlock(dbEntry.GetKeyMR())
if err != nil {
panic(err)
}
err = dbase2.ProcessABlockMultiBatch(aBlock)
if err != nil {
panic(err)
}
break
case "000000000000000000000000000000000000000000000000000000000000000c":
ecBlock, err := dbase1.FetchECBlock(dbEntry.GetKeyMR())
if err != nil {
panic(err)
}
if ecBlock.GetHeader().GetPrevHeaderHash().IsSameAs(prevECHash) == false {
prev, err := dbase1.FetchECBlock(ecBlock.GetHeader().GetPrevHeaderHash())
if err != nil {
panic(err)
}
err = dbase2.ProcessECBlockMultiBatch(prev, true)
if err != nil {
panic(err)
}
}
err = dbase2.ProcessECBlockMultiBatch(ecBlock, true)
if err != nil {
panic(err)
}
prevECHash = dbEntry.GetKeyMR()
break
case "000000000000000000000000000000000000000000000000000000000000000f":
fBlock, err := dbase1.FetchFBlock(dbEntry.GetKeyMR())
if err != nil {
panic(err)
}
err = dbase2.ProcessFBlockMultiBatch(fBlock)
if err != nil {
panic(err)
}
break
default:
processing = fmt.Sprintf("%v - %v - %v", dBlock.GetKeyMR().String(), dbEntry.GetChainID().String(), dbEntry.GetKeyMR().String())
eBlock, err := dbase1.FetchEBlock(dbEntry.GetKeyMR())
if err != nil {
panic(err)
}
err = dbase2.ProcessEBlockMultiBatch(eBlock, true)
if err != nil {
panic(err)
}
for _, h := range eBlock.GetEntryHashes() {
entry, err := dbase1.FetchEntry(h)
if err != nil {
panic(err)
}
err = dbase2.InsertEntryMultiBatch(entry)
if err != nil {
panic(err)
}
}
break
}
}
if err := dbase2.ExecuteMultiBatch(); err != nil {
panic(err)
}
if dBlock.GetDatabaseHeight()%1000 == 0 {
fmt.Printf("Processed block #%v\n", dBlock.GetDatabaseHeight())
}
}
}