github.com/gobitfly/go-ethereum@v1.8.12/swarm/storage/dbapi.go (about)

     1  // Copyright 2018 The go-ethereum Authors
     2  // This file is part of the go-ethereum library.
     3  //
     4  // The go-ethereum library is free software: you can redistribute it and/or modify
     5  // it under the terms of the GNU Lesser General Public License as published by
     6  // the Free Software Foundation, either version 3 of the License, or
     7  // (at your option) any later version.
     8  //
     9  // The go-ethereum library is distributed in the hope that it will be useful,
    10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    12  // GNU Lesser General Public License for more details.
    13  //
    14  // You should have received a copy of the GNU Lesser General Public License
    15  // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
    16  
    17  package storage
    18  
    19  // wrapper of db-s to provide mockable custom local chunk store access to syncer
    20  type DBAPI struct {
    21  	db  *LDBStore
    22  	loc *LocalStore
    23  }
    24  
    25  func NewDBAPI(loc *LocalStore) *DBAPI {
    26  	return &DBAPI{loc.DbStore, loc}
    27  }
    28  
    29  // to obtain the chunks from address or request db entry only
    30  func (d *DBAPI) Get(addr Address) (*Chunk, error) {
    31  	return d.loc.Get(addr)
    32  }
    33  
    34  // current storage counter of chunk db
    35  func (d *DBAPI) CurrentBucketStorageIndex(po uint8) uint64 {
    36  	return d.db.CurrentBucketStorageIndex(po)
    37  }
    38  
    39  // iteration storage counter and proximity order
    40  func (d *DBAPI) Iterator(from uint64, to uint64, po uint8, f func(Address, uint64) bool) error {
    41  	return d.db.SyncIterator(from, to, po, f)
    42  }
    43  
    44  // to obtain the chunks from address or request db entry only
    45  func (d *DBAPI) GetOrCreateRequest(addr Address) (*Chunk, bool) {
    46  	return d.loc.GetOrCreateRequest(addr)
    47  }
    48  
    49  // to obtain the chunks from key or request db entry only
    50  func (d *DBAPI) Put(chunk *Chunk) {
    51  	d.loc.Put(chunk)
    52  }