github.com/MikyChow/arbitrum-go-ethereum@v0.0.0-20230306102812-078da49636de/ethdb/leveldb/fake_leveldb.go (about)

     1  // Copyright 2021 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  //go:build js
    18  // +build js
    19  
    20  // Package leveldb implements the key-value database layer based on LevelDB.
    21  package leveldb
    22  
    23  import (
    24  	"errors"
    25  
    26  	"github.com/MikyChow/arbitrum-go-ethereum/ethdb"
    27  )
    28  
    29  type Database struct {
    30  	unconstructable struct{}
    31  }
    32  
    33  // New returns a wrapped LevelDB object. The namespace is the prefix that the
    34  // metrics reporting should use for surfacing internal stats.
    35  func New(file string, cache int, handles int, namespace string, readonly bool) (*Database, error) {
    36  	return nil, errors.New("leveldb is unavailable on JS platforms")
    37  }
    38  
    39  /*
    40  // NewCustom returns a wrapped LevelDB object. The namespace is the prefix that the
    41  // metrics reporting should use for surfacing internal stats.
    42  // The customize function allows the caller to modify the leveldb options.
    43  func NewCustom(file string, namespace string, customize func(options *opt.Options)) (*Database, error) {
    44  	return nil, errors.New("leveldb is unavailable on JS platforms")
    45  }
    46  
    47  // configureOptions sets some default options, then runs the provided setter.
    48  func configureOptions(customizeFn func(*opt.Options)) *opt.Options {
    49  	// Set default options
    50  	options := &opt.Options{
    51  		Filter:                 filter.NewBloomFilter(10),
    52  		DisableSeeksCompaction: true,
    53  	}
    54  	// Allow caller to make custom modifications to the options
    55  	if customizeFn != nil {
    56  		customizeFn(options)
    57  	}
    58  	return options
    59  }
    60  */
    61  
    62  // Close stops the metrics collection, flushes any pending data to disk and closes
    63  // all io accesses to the underlying key-value store.
    64  func (db *Database) Close() error {
    65  	panic("Method called on unconstructable leveldb database")
    66  }
    67  
    68  // Has retrieves if a key is present in the key-value store.
    69  func (db *Database) Has(key []byte) (bool, error) {
    70  	panic("Method called on unconstructable leveldb database")
    71  }
    72  
    73  // Get retrieves the given key if it's present in the key-value store.
    74  func (db *Database) Get(key []byte) ([]byte, error) {
    75  	panic("Method called on unconstructable leveldb database")
    76  }
    77  
    78  // Put inserts the given value into the key-value store.
    79  func (db *Database) Put(key []byte, value []byte) error {
    80  	panic("Method called on unconstructable leveldb database")
    81  }
    82  
    83  // Delete removes the key from the key-value store.
    84  func (db *Database) Delete(key []byte) error {
    85  	panic("Method called on unconstructable leveldb database")
    86  }
    87  
    88  // NewBatch creates a write-only key-value store that buffers changes to its host
    89  // database until a final write is called.
    90  func (db *Database) NewBatch() ethdb.Batch {
    91  	panic("Method called on unconstructable leveldb database")
    92  }
    93  
    94  func (db *Database) NewBatchWithSize(size int) ethdb.Batch {
    95  	panic("Method called on unconstructable leveldb database")
    96  }
    97  
    98  // NewIterator creates a binary-alphabetical iterator over a subset
    99  // of database content with a particular key prefix, starting at a particular
   100  // initial key (or after, if it does not exist).
   101  func (db *Database) NewIterator(prefix []byte, start []byte) ethdb.Iterator {
   102  	panic("Method called on unconstructable leveldb database")
   103  }
   104  
   105  func (db *Database) NewSnapshot() (ethdb.Snapshot, error) {
   106  	panic("Method called on unconstructable leveldb database")
   107  }
   108  
   109  // Stat returns a particular internal stat of the database.
   110  func (db *Database) Stat(property string) (string, error) {
   111  	panic("Method called on unconstructable leveldb database")
   112  }
   113  
   114  // Compact flattens the underlying data store for the given key range. In essence,
   115  // deleted and overwritten versions are discarded, and the data is rearranged to
   116  // reduce the cost of operations needed to access them.
   117  //
   118  // A nil start is treated as a key before all keys in the data store; a nil limit
   119  // is treated as a key after all keys in the data store. If both is nil then it
   120  // will compact entire data store.
   121  func (db *Database) Compact(start []byte, limit []byte) error {
   122  	panic("Method called on unconstructable leveldb database")
   123  }
   124  
   125  // Path returns the path to the database directory.
   126  func (db *Database) Path() string {
   127  	panic("Method called on unconstructable leveldb database")
   128  }