X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=asset%2Fimage.go;fp=asset%2Fimage.go;h=0000000000000000000000000000000000000000;hp=838bf5786d1a9c58e67c09fa5daef68b6f3de2fb;hb=d09b7a78d44dc259725902b8141cdba0d716b121;hpb=ee01d543fdfe1fd0a4d548965c66f7923ea7b062 diff --git a/asset/image.go b/asset/image.go deleted file mode 100644 index 838bf578..00000000 --- a/asset/image.go +++ /dev/null @@ -1,65 +0,0 @@ -package asset - -import ( - "encoding/json" - - log "github.com/sirupsen/logrus" - - "github.com/vapor/common" -) - -// Image is the struct for hold export asset data -type Image struct { - Assets []*Asset `json:"assets"` -} - -// Backup export all the asset info into image -func (reg *Registry) Backup() (*Image, error) { - assetImage := &Image{ - Assets: []*Asset{}, - } - - assetIter := reg.db.IteratorPrefix([]byte(assetPrefix)) - defer assetIter.Release() - for assetIter.Next() { - asset := &Asset{} - if err := json.Unmarshal(assetIter.Value(), asset); err != nil { - return nil, err - } - assetImage.Assets = append(assetImage.Assets, asset) - } - - return assetImage, nil -} - -// Restore load the image data into asset manage -func (reg *Registry) Restore(image *Image) error { - maxAssetIndex := uint64(0) - storeBatch := reg.db.NewBatch() - for _, asset := range image.Assets { - if existed := reg.db.Get(Key(&asset.AssetID)); existed != nil { - log.WithFields(log.Fields{"alias": asset.Alias, "id": asset.AssetID}).Warning("skip restore asset due to already existed") - continue - } - if existed := reg.db.Get(aliasKey(*asset.Alias)); existed != nil { - return ErrDuplicateAlias - } - - rawAsset, err := json.Marshal(asset) - if err != nil { - return err - } - - if asset.Signer.KeyIndex > maxAssetIndex { - maxAssetIndex = asset.Signer.KeyIndex - } - storeBatch.Set(aliasKey(*asset.Alias), []byte(asset.AssetID.String())) - storeBatch.Set(Key(&asset.AssetID), rawAsset) - } - - if localIndex := reg.getNextAssetIndex(); localIndex < maxAssetIndex { - storeBatch.Set(assetIndexKey, common.Unit64ToBytes(maxAssetIndex)) - } - storeBatch.Write() - return nil -}