log.WithField("err", err).Panic("initialize mysql db error")
}
- assetKeeper := database.NewAssetKeeper(db)
- go synchron.NewMainchainKeeper(db, assetKeeper, cfg).Run()
- go synchron.NewSidechainKeeper(db, assetKeeper, cfg).Run()
- go federation.NewWarder(db, assetKeeper, cfg).Run()
+ assetStore := database.NewAssetStore(db)
+ go synchron.NewMainchainKeeper(db, assetStore, cfg).Run()
+ go synchron.NewSidechainKeeper(db, assetStore, cfg).Run()
+ go federation.NewWarder(db, assetStore, cfg).Run()
// keep the main func running in case of terminating goroutines
var wg sync.WaitGroup
const maxAssetCached = 1024
-type AssetKeeper struct {
+type AssetStore struct {
cache *lru.Cache
db *gorm.DB
}
-func NewAssetKeeper(db *gorm.DB) *AssetKeeper {
- return &AssetKeeper{
+func NewAssetStore(db *gorm.DB) *AssetStore {
+ return &AssetStore{
cache: lru.New(maxAssetCached),
db: db,
}
}
-func (a *AssetKeeper) GetByOrmID(id uint64) (*orm.Asset, error) {
+func (a *AssetStore) GetByOrmID(id uint64) (*orm.Asset, error) {
asset := &orm.Asset{ID: id}
if err := a.db.Where(asset).First(asset).Error; err != nil {
return nil, errors.Wrap(err, "asset not found by orm id")
return asset, nil
}
-func (a *AssetKeeper) Get(assetID string) (*orm.Asset, error) {
+func (a *AssetStore) Get(assetID string) (*orm.Asset, error) {
if v, ok := a.cache.Get(assetID); ok {
return v.(*orm.Asset), nil
}
return asset, nil
}
-func (a *AssetKeeper) Add(asset *orm.Asset) error {
+func (a *AssetStore) Add(asset *orm.Asset) error {
if err := a.db.Create(asset).Error; err != nil {
return err
}
)
type mainchainKeeper struct {
- cfg *config.Chain
- db *gorm.DB
- node *service.Node
- chainName string
- assetKeeper *database.AssetKeeper
- fedProg []byte
+ cfg *config.Chain
+ db *gorm.DB
+ node *service.Node
+ chainName string
+ assetStore *database.AssetStore
+ fedProg []byte
}
-func NewMainchainKeeper(db *gorm.DB, assetKeeper *database.AssetKeeper, cfg *config.Config) *mainchainKeeper {
+func NewMainchainKeeper(db *gorm.DB, assetStore *database.AssetStore, cfg *config.Config) *mainchainKeeper {
return &mainchainKeeper{
- cfg: &cfg.Mainchain,
- db: db,
- node: service.NewNode(cfg.Mainchain.Upstream),
- chainName: cfg.Mainchain.Name,
- assetKeeper: assetKeeper,
- fedProg: federation.ParseFedProg(cfg.Warders, cfg.Quorum),
+ cfg: &cfg.Mainchain,
+ db: db,
+ node: service.NewNode(cfg.Mainchain.Upstream),
+ chainName: cfg.Mainchain.Name,
+ assetStore: assetStore,
+ fedProg: federation.ParseFedProg(cfg.Warders, cfg.Quorum),
}
}
continue
}
- asset, err := m.assetKeeper.Get(rawOutput.OutputCommitment.AssetAmount.AssetId.String())
+ asset, err := m.assetStore.Get(rawOutput.OutputCommitment.AssetAmount.AssetId.String())
if err != nil {
return nil, err
}
switch inp := input.TypedInput.(type) {
case *types.IssuanceInput:
assetID := inp.AssetID()
- if _, err := m.assetKeeper.Get(assetID.String()); err == nil {
+ if _, err := m.assetStore.Get(assetID.String()); err == nil {
continue
}
- m.assetKeeper.Add(&orm.Asset{
+ m.assetStore.Add(&orm.Asset{
AssetID: assetID.String(),
IssuanceProgram: hex.EncodeToString(inp.IssuanceProgram),
VMVersion: inp.VMVersion,
)
type sidechainKeeper struct {
- cfg *config.Chain
- db *gorm.DB
- node *service.Node
- chainName string
- assetKeeper *database.AssetKeeper
+ cfg *config.Chain
+ db *gorm.DB
+ node *service.Node
+ chainName string
+ assetStore *database.AssetStore
}
-func NewSidechainKeeper(db *gorm.DB, assetKeeper *database.AssetKeeper, cfg *config.Config) *sidechainKeeper {
+func NewSidechainKeeper(db *gorm.DB, assetStore *database.AssetStore, cfg *config.Config) *sidechainKeeper {
return &sidechainKeeper{
- cfg: &cfg.Sidechain,
- db: db,
- node: service.NewNode(cfg.Sidechain.Upstream),
- chainName: cfg.Sidechain.Name,
- assetKeeper: assetKeeper,
+ cfg: &cfg.Sidechain,
+ db: db,
+ node: service.NewNode(cfg.Sidechain.Upstream),
+ chainName: cfg.Sidechain.Name,
+ assetStore: assetStore,
}
}
continue
}
- asset, err := s.assetKeeper.Get(rawOutput.OutputCommitment().AssetAmount.AssetId.String())
+ asset, err := s.assetStore.Get(rawOutput.OutputCommitment().AssetAmount.AssetId.String())
if err != nil {
return nil, err
}
type warder struct {
db *gorm.DB
- assetKeeper *database.AssetKeeper
+ assetStore *database.AssetStore
txCh chan *orm.CrossTransaction
fedProg []byte
position uint8
remotes []*service.Warder
}
-func NewWarder(db *gorm.DB, assetKeeper *database.AssetKeeper, cfg *config.Config) *warder {
+func NewWarder(db *gorm.DB, assetStore *database.AssetStore, cfg *config.Config) *warder {
local, remotes := parseWarders(cfg)
return &warder{
db: db,
- assetKeeper: assetKeeper,
+ assetStore: assetStore,
txCh: make(chan *orm.CrossTransaction),
fedProg: ParseFedProg(cfg.Warders, cfg.Quorum),
position: local.Position,
}
for _, req := range ormTx.Reqs {
- // getAsset from assetKeeper instead of preload asset, in order to save db query overload
- asset, err := w.assetKeeper.GetByOrmID(req.AssetID)
+ // getAsset from assetStore instead of preload asset, in order to save db query overload
+ asset, err := w.assetStore.GetByOrmID(req.AssetID)
if err != nil {
return nil, "", errors.Wrap(err, "get asset by ormAsset ID")
}