/
sqs_pool_tracker.go
81 lines (68 loc) · 2.84 KB
/
sqs_pool_tracker.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
package service
import (
"github.com/osmosis-labs/osmosis/v23/ingest/sqs/domain"
poolmanagertypes "github.com/osmosis-labs/osmosis/v23/x/poolmanager/types"
)
// poolBlockUpdateTracker is a struct that tracks the pools that were updated in a block.
type poolBlockUpdateTracker struct {
concentratedPools map[uint64]poolmanagertypes.PoolI
concentratedPoolIDTickChange map[uint64]struct{}
cfmmPools map[uint64]poolmanagertypes.PoolI
cosmwasmPools map[uint64]poolmanagertypes.PoolI
}
// NewPoolTracker creates a new poolBlockUpdateTracker.
func NewPoolTracker() domain.BlockPoolUpdateTracker {
return &poolBlockUpdateTracker{
concentratedPools: map[uint64]poolmanagertypes.PoolI{},
concentratedPoolIDTickChange: map[uint64]struct{}{},
cfmmPools: map[uint64]poolmanagertypes.PoolI{},
cosmwasmPools: map[uint64]poolmanagertypes.PoolI{},
}
}
// TrackConcentrated implements PoolTracker.
func (pt *poolBlockUpdateTracker) TrackConcentrated(pool poolmanagertypes.PoolI) {
pt.concentratedPools[pool.GetId()] = pool
}
// TrackCFMM implements PoolTracker.
func (pt *poolBlockUpdateTracker) TrackCFMM(pool poolmanagertypes.PoolI) {
pt.cfmmPools[pool.GetId()] = pool
}
// TrackCosmWasm implements PoolTracker.
func (pt *poolBlockUpdateTracker) TrackCosmWasm(pool poolmanagertypes.PoolI) {
pt.cosmwasmPools[pool.GetId()] = pool
}
// TrackConcentratedPoolIDTickChange implements PoolTracker.
func (pt *poolBlockUpdateTracker) TrackConcentratedPoolIDTickChange(poolID uint64) {
pt.concentratedPoolIDTickChange[poolID] = struct{}{}
}
// GetConcentratedPools implements PoolTracker.
func (pt *poolBlockUpdateTracker) GetConcentratedPools() []poolmanagertypes.PoolI {
return poolMapToSlice(pt.concentratedPools)
}
// GetConcentratedPoolIDTickChange implements PoolTracker.
func (pt *poolBlockUpdateTracker) GetConcentratedPoolIDTickChange() map[uint64]struct{} {
return pt.concentratedPoolIDTickChange
}
// GetCFMMPools implements PoolTracker.
func (pt *poolBlockUpdateTracker) GetCFMMPools() []poolmanagertypes.PoolI {
return poolMapToSlice(pt.cfmmPools)
}
// GetCosmWasmPools implements PoolTracker.
func (pt *poolBlockUpdateTracker) GetCosmWasmPools() []poolmanagertypes.PoolI {
return poolMapToSlice(pt.cosmwasmPools)
}
// Reset implements PoolTracker.
func (pt *poolBlockUpdateTracker) Reset() {
pt.concentratedPools = map[uint64]poolmanagertypes.PoolI{}
pt.cfmmPools = map[uint64]poolmanagertypes.PoolI{}
pt.cosmwasmPools = map[uint64]poolmanagertypes.PoolI{}
pt.concentratedPoolIDTickChange = map[uint64]struct{}{}
}
// poolMapToSlice converts a map of pools to a slice of pools.
func poolMapToSlice(m map[uint64]poolmanagertypes.PoolI) []poolmanagertypes.PoolI {
result := make([]poolmanagertypes.PoolI, 0, len(m))
for _, pool := range m {
result = append(result, pool)
}
return result
}