-
Notifications
You must be signed in to change notification settings - Fork 7
/
store.go
67 lines (60 loc) · 2.84 KB
/
store.go
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
/*
* Copyright (C) 2018 The ontology Authors
* This file is part of The ontology library.
*
* The ontology is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The ontology is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with The ontology. If not, see <http://www.gnu.org/licenses/>.
*/
package common
import (
"errors"
"github.com/ontio/layer2/node/common"
"github.com/ontio/layer2/node/smartcontract/event"
)
var ErrNotFound = errors.New("not found")
//Store iterator for iterate store
type StoreIterator interface {
Next() bool //Next item. If item available return true, otherwise return false
//Prev() bool //previous item. If item available return true, otherwise return false
First() bool //First item. If item available return true, otherwise return false
//Last() bool //Last item. If item available return true, otherwise return false
//Seek(key []byte) bool //Seek key. If item available return true, otherwise return false
Key() []byte //Return the current item key
Value() []byte //Return the current item value
Release() //Close iterator
Error() error // Error returns any accumulated error.
}
//PersistStore of ledger
type PersistStore interface {
Put(key []byte, value []byte) error //Put the key-value pair to store
Get(key []byte) ([]byte, error) //Get the value if key in store
Has(key []byte) (bool, error) //Whether the key is exist in store
Delete(key []byte) error //Delete the key in store
NewBatch() //Start commit batch
BatchPut(key []byte, value []byte) //Put a key-value pair to batch
BatchDelete(key []byte) //Delete the key in batch
BatchCommit() error //Commit batch to store
Close() error //Close store
NewIterator(prefix []byte) StoreIterator //Return the iterator of store
}
//EventStore save event notify
type EventStore interface {
//SaveEventNotifyByTx save event notify gen by smart contract execution
SaveEventNotifyByTx(txHash common.Uint256, notify *event.ExecuteNotify) error
//Save transaction hashes which have event notify gen
SaveEventNotifyByBlock(height uint32, txHashs []common.Uint256)
//GetEventNotifyByTx return event notify by transaction hash
GetEventNotifyByTx(txHash common.Uint256) (*event.ExecuteNotify, error)
//Commit event notify to store
CommitTo() error
}