Documentation ¶
Index ¶
- Constants
- Variables
- type Batch
- type Database
- type Deleter
- type DummyDatabase
- type FakeIpfsAdapter
- type IpfsAdapter
- type IpfsDatabase
- type LDBDatabase
- func (db *LDBDatabase) Close()
- func (db *LDBDatabase) Delete(key []byte) error
- func (db *LDBDatabase) Get(key []byte) ([]byte, error)
- func (db *LDBDatabase) Has(key []byte) (bool, error)
- func (db *LDBDatabase) LDB() *leveldb.DB
- func (db *LDBDatabase) NewBatch() Batch
- func (db *LDBDatabase) NewIterator() iterator.Iterator
- func (db *LDBDatabase) NewIteratorWithPrefix(prefix []byte) iterator.Iterator
- func (db *LDBDatabase) Path() string
- func (db *LDBDatabase) Put(key []byte, value []byte) error
- type MemDatabase
- func (db *MemDatabase) Close()
- func (db *MemDatabase) Delete(key []byte) error
- func (db *MemDatabase) Get(key []byte) ([]byte, error)
- func (db *MemDatabase) Has(key []byte) (bool, error)
- func (db *MemDatabase) Keys() [][]byte
- func (db *MemDatabase) Len() int
- func (db *MemDatabase) NewBatch() Batch
- func (db *MemDatabase) Put(key []byte, value []byte) error
- type Putter
- type RemoteDatabase
Constants ¶
const IdealBatchSize = 100 * 1024
Code using batches should try to add this much data to the batch. The value was determined empirically.
Variables ¶
var ErrKeyNotFound = errors.New("not found")
var ErrPathNotFound = errors.New("path not found")
Functions ¶
This section is empty.
Types ¶
type Batch ¶
type Batch interface { Putter Deleter ValueSize() int // amount of data in the batch Write() error // Reset resets the batch for reuse Reset() }
Batch is a write-only database that commits changes to its host database when Write is called. Batch cannot be used concurrently.
type Database ¶
type Database interface { Putter Deleter Get(key []byte) ([]byte, error) Has(key []byte) (bool, error) Close() NewBatch() Batch }
Database wraps all database operations. All methods are safe for concurrent use.
type Deleter ¶
Deleter wraps the database delete operation supported by both batches and regular databases.
type DummyDatabase ¶
type DummyDatabase struct { }
DummyDatabase is a dummy "remote database" which actually save all data to key, i.e. key is data, data is key. It does not save data to any store, but to the returned key. It is used to serve as an extremely stable remote database. For example, PrivateTx could use it as an option of its "remote database" to ensure that it does not depend on any "single point" database.
func (*DummyDatabase) Discard ¶
func (d *DummyDatabase) Discard(key []byte) error
func (*DummyDatabase) Has ¶
func (d *DummyDatabase) Has(key []byte) bool
type FakeIpfsAdapter ¶
type FakeIpfsAdapter struct {
// contains filtered or unexported fields
}
FakeIpfsAdapter is a fake IPFS for unit test.
func NewFakeIpfsAdapter ¶
func NewFakeIpfsAdapter() *FakeIpfsAdapter
NewFakeIpfsAdapter creates a new FakeIpfsAdapter instance.
func (*FakeIpfsAdapter) Cat ¶
func (adapter *FakeIpfsAdapter) Cat(path string) (io.ReadCloser, error)
func (*FakeIpfsAdapter) Unpin ¶
func (adapter *FakeIpfsAdapter) Unpin(path string) error
type IpfsAdapter ¶
type IpfsAdapter interface { // Cat reads data from IPFS. Cat(path string) (io.ReadCloser, error) // Add adds and pin data to IPFS. Add(r io.Reader) (string, error) // Unpin unpins the data from IPFS, unpinned data may be removed by GC in future. Unpin(path string) error }
IpfsAdapter represents an adapter for IPFS access. It also makes a room for weaving fake IPFS in unit test.
type IpfsDatabase ¶
type IpfsDatabase struct {
// contains filtered or unexported fields
}
IpfsDatabase is a IPFS-based database.
func NewIpfsDB ¶
func NewIpfsDB(url string) *IpfsDatabase
NewIpfsDB creates a new IpfsDatabase instance with given url which is the IPFS node's API url.
func NewIpfsDbWithAdapter ¶
func NewIpfsDbWithAdapter(adapter IpfsAdapter) *IpfsDatabase
NewIpfsDbWithAdapter creates a new IpfsDatabase instance with given IPFS adapter.
func (*IpfsDatabase) Discard ¶
func (db *IpfsDatabase) Discard(key []byte) error
Discard data from IPFS network.
func (*IpfsDatabase) Get ¶
func (db *IpfsDatabase) Get(key []byte) ([]byte, error)
Get retrieves data from IPFS with given key.
func (*IpfsDatabase) Has ¶
func (db *IpfsDatabase) Has(key []byte) bool
Has checks if the data specified by given key can be retrieved.
type LDBDatabase ¶
type LDBDatabase struct {
// contains filtered or unexported fields
}
func NewLDBDatabase ¶
func NewLDBDatabase(file string, cache int, handles int) (*LDBDatabase, error)
NewLDBDatabase returns a LevelDB wrapped object.
func (*LDBDatabase) Close ¶
func (db *LDBDatabase) Close()
func (*LDBDatabase) Delete ¶
func (db *LDBDatabase) Delete(key []byte) error
Delete deletes the key from the queue and database
func (*LDBDatabase) Get ¶
func (db *LDBDatabase) Get(key []byte) ([]byte, error)
Get returns the given key if it's present.
func (*LDBDatabase) LDB ¶
func (db *LDBDatabase) LDB() *leveldb.DB
func (*LDBDatabase) NewBatch ¶
func (db *LDBDatabase) NewBatch() Batch
func (*LDBDatabase) NewIterator ¶
func (db *LDBDatabase) NewIterator() iterator.Iterator
func (*LDBDatabase) NewIteratorWithPrefix ¶
func (db *LDBDatabase) NewIteratorWithPrefix(prefix []byte) iterator.Iterator
NewIteratorWithPrefix returns a iterator to iterate over subset of database content with a particular prefix.
func (*LDBDatabase) Path ¶
func (db *LDBDatabase) Path() string
Path returns the path to the database directory.
type MemDatabase ¶
type MemDatabase struct {
// contains filtered or unexported fields
}
func NewMemDatabase ¶
func NewMemDatabase() *MemDatabase
func (*MemDatabase) Close ¶
func (db *MemDatabase) Close()
func (*MemDatabase) Delete ¶
func (db *MemDatabase) Delete(key []byte) error
func (*MemDatabase) Keys ¶
func (db *MemDatabase) Keys() [][]byte
func (*MemDatabase) Len ¶
func (db *MemDatabase) Len() int
func (*MemDatabase) NewBatch ¶
func (db *MemDatabase) NewBatch() Batch
type Putter ¶
Putter wraps the database write operation supported by both batches and regular databases.
type RemoteDatabase ¶
type RemoteDatabase interface { // Get gets data from database with given key. Get(key []byte) ([]byte, error) // Put puts data to database and returns an address(key/identifier). Put(value []byte) ([]byte, error) // Discard discards data from database with given key. As remote database system such as ipfs doesn't have explicit // data deleting function as its own implementation mechanism, we adopt 'discard' instead of 'delete'. Discard(key []byte) error // Has checks if the given address/key points to an existent data. Has(key []byte) bool }
RemoteDatabase represents the database interface that offloads data to distributed storage such as ipfs.