forked from tronprotocol/java-tron
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTronDatabase.java
More file actions
75 lines (59 loc) · 1.75 KB
/
TronDatabase.java
File metadata and controls
75 lines (59 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package org.tron.core.db;
import com.google.protobuf.InvalidProtocolBufferException;
import java.util.Iterator;
import java.util.Map.Entry;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.tron.common.storage.leveldb.LevelDbDataSourceImpl;
import org.tron.core.config.args.Args;
import org.tron.core.db.api.IndexHelper;
import org.tron.core.db2.core.ITronChainBase;
import org.tron.core.exception.BadItemException;
import org.tron.core.exception.ItemNotFoundException;
@Slf4j
public abstract class TronDatabase<T> implements ITronChainBase<T> {
protected LevelDbDataSourceImpl dbSource;
@Getter
private String dbName;
@Autowired(required = false)
protected IndexHelper indexHelper;
protected TronDatabase(String dbName) {
this.dbName = dbName;
dbSource = new LevelDbDataSourceImpl(Args.getInstance().getOutputDirectoryByDbName(dbName), dbName);
dbSource.initDB();
}
protected TronDatabase() {
}
public LevelDbDataSourceImpl getDbSource() {
return dbSource;
}
/**
* reset the database.
*/
public void reset() {
dbSource.resetDb();
}
/**
* close the database.
*/
@Override
public void close() {
dbSource.closeDB();
}
public abstract void put(byte[] key, T item);
public abstract void delete(byte[] key);
public abstract T get(byte[] key)
throws InvalidProtocolBufferException, ItemNotFoundException, BadItemException;
public T getUnchecked(byte[] key) {
return null;
}
public abstract boolean has(byte[] key);
public String getName() {
return this.getClass().getSimpleName();
}
@Override
public Iterator<Entry<byte[], T>> iterator() {
throw new UnsupportedOperationException();
}
}