-
Notifications
You must be signed in to change notification settings - Fork 182
/
memory_cache.go
133 lines (108 loc) · 2.76 KB
/
memory_cache.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package keeper
import (
"github.com/okex/exchain/x/order/types"
"github.com/willf/bitset"
)
// Cache stores some caches that will not be written to disk
type Cache struct {
// Reset at BeginBlock
updatedOrderIDs []string
blockMatchResult *types.BlockMatchResult
handlerTxMsgResult []bitset.BitSet
// for statistic
cancelNum int64 // canceled orders num in this block
expireNum int64 // expired orders num in this block
partialFillNum int64 // partially filled orders num in this block
fullFillNum int64 // fully filled orders num in this block
}
// nolint
func NewCache() *Cache {
return &Cache{
updatedOrderIDs: []string{},
blockMatchResult: nil,
}
}
// reset resets temporary cache, called at BeginBlock
func (c *Cache) reset() {
c.updatedOrderIDs = []string{}
c.blockMatchResult = &types.BlockMatchResult{}
c.handlerTxMsgResult = []bitset.BitSet{}
c.cancelNum = 0
c.expireNum = 0
c.fullFillNum = 0
c.partialFillNum = 0
}
func (c *Cache) addUpdatedOrderID(orderID string) {
c.updatedOrderIDs = append(c.updatedOrderIDs, orderID)
}
func (c *Cache) setBlockMatchResult(result *types.BlockMatchResult) {
c.blockMatchResult = result
}
func (c *Cache) addTxHandlerMsgResult(resultSet bitset.BitSet) {
c.handlerTxMsgResult = append(c.handlerTxMsgResult, resultSet)
}
// nolint
func (c *Cache) IncreaseExpireNum() int64 {
c.expireNum++
return c.expireNum
}
// --------
// nolint
func (c *Cache) DecreaseCancelNum() int64 {
c.cancelNum--
return c.cancelNum
}
// nolint
func (c *Cache) IncreaseCancelNum() int64 {
c.cancelNum++
return c.cancelNum
}
// nolint
func (c *Cache) DecreaseFullFillNum() int64 {
c.fullFillNum--
return c.fullFillNum
}
// nolint
func (c *Cache) IncreaseFullFillNum() int64 {
c.fullFillNum++
return c.fullFillNum
}
// nolint
func (c *Cache) DecreasePartialFillNum() int64 {
c.partialFillNum--
return c.partialFillNum
}
// nolint
func (c *Cache) IncreasePartialFillNum() int64 {
c.partialFillNum++
return c.partialFillNum
}
func (c *Cache) getBlockMatchResult() *types.BlockMatchResult {
return c.blockMatchResult
}
func (c *Cache) getUpdatedOrderIDs() []string {
return c.updatedOrderIDs
}
// toggleCopyTxHandlerMsgResult: copy and reset the handlerTxMsgResult
func (c *Cache) toggleCopyTxHandlerMsgResult() []bitset.BitSet {
txResultCopy := make([]bitset.BitSet, 0, len(c.handlerTxMsgResult))
txResultCopy = append(txResultCopy, c.handlerTxMsgResult...)
c.handlerTxMsgResult = []bitset.BitSet{}
return txResultCopy
}
// nolint
func (c *Cache) GetFullFillNum() int64 {
return c.fullFillNum
}
// nolint
func (c *Cache) GetCancelNum() int64 {
return c.cancelNum
}
// nolint
func (c *Cache) GetExpireNum() int64 {
return c.expireNum
}
// nolint
func (c *Cache) GetPartialFillNum() int64 {
return c.partialFillNum
}