-
Notifications
You must be signed in to change notification settings - Fork 33
[P2P] refactor: peerstore provider (part 1) #804
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 14 commits
34d42bf
142071d
bcf3f65
00730d4
41d18ae
507d8af
e74fea4
6128d84
4bc605a
094a95e
2a5b300
1d03f38
c1318da
8d1f62a
08bcafd
5a54400
5000ad8
c587afa
e70b99c
b3ce271
8a476a4
650d432
59fffb5
a1e22c4
ccd9fb7
6e1a5b8
60302a4
1ac2e00
3a8e138
0cbca43
9cee9dd
2489b92
c98e8d1
84ce1bd
341d982
a9ffa56
0d92a09
024d88b
22ff0fd
044f6f1
b273e87
2e4d60d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| package persistence | ||
|
|
||
| import ( | ||
| "fmt" | ||
|
|
||
| "github.com/pokt-network/pocket/p2p/providers/peerstore_provider" | ||
| typesP2P "github.com/pokt-network/pocket/p2p/types" | ||
| "github.com/pokt-network/pocket/shared/modules" | ||
| "github.com/pokt-network/pocket/shared/modules/base_modules" | ||
| ) | ||
|
|
||
| var ( | ||
| _ peerstore_provider.PeerstoreProvider = &p2pPeerstoreProvider{} | ||
| _ p2pPStoreProviderFactory = &p2pPeerstoreProvider{} | ||
| ) | ||
|
|
||
| // unstakedPeerstoreProvider is an interface which the p2p module supports in | ||
| // order to allow access to the unstaked-actor-router's peerstore | ||
bryanchriswhite marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| // | ||
| // TECHDEBT(#xxx): will become unnecessary after `modules.P2PModule#GetUnstakedPeerstore` is added.` | ||
| // CONSIDERATION: split `PeerstoreProvider` into `StakedPeerstoreProvider` and `UnstakedPeerstoreProvider`. | ||
bryanchriswhite marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| // (see: https://github.com/pokt-network/pocket/pull/804#issuecomment-1576531916) | ||
| type unstakedPeerstoreProvider interface { | ||
| GetUnstakedPeerstore() (typesP2P.Peerstore, error) | ||
| } | ||
|
|
||
| type p2pPStoreProviderFactory = modules.Factory[peerstore_provider.PeerstoreProvider] | ||
Olshansk marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| type p2pPeerstoreProvider struct { | ||
| base_modules.IntegratableModule | ||
| persistencePeerstoreProvider | ||
|
|
||
| p2pModule modules.P2PModule | ||
bryanchriswhite marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
|
|
||
| func NewP2PPeerstoreProvider( | ||
bryanchriswhite marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| bus modules.Bus, | ||
| ) (peerstore_provider.PeerstoreProvider, error) { | ||
| return new(p2pPeerstoreProvider).Create(bus) | ||
| } | ||
|
|
||
| func (*p2pPeerstoreProvider) Create( | ||
| bus modules.Bus, | ||
| ) (peerstore_provider.PeerstoreProvider, error) { | ||
| if bus == nil { | ||
| return nil, fmt.Errorf("bus is required") | ||
| } | ||
|
|
||
| p2pModule := bus.GetP2PModule() | ||
| if p2pModule == nil { | ||
| return nil, fmt.Errorf("p2p module is not registered to bus and is required") | ||
|
||
| } | ||
|
|
||
| p2pPSP := &p2pPeerstoreProvider{ | ||
| IntegratableModule: *base_modules.NewIntegratableModule(bus), | ||
| p2pModule: p2pModule, | ||
bryanchriswhite marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| } | ||
|
|
||
| return p2pPSP, nil | ||
| } | ||
|
|
||
| func (*p2pPeerstoreProvider) GetModuleName() string { | ||
| return peerstore_provider.ModuleName | ||
| } | ||
|
|
||
| func (p2pPSP *p2pPeerstoreProvider) GetUnstakedPeerstore() (typesP2P.Peerstore, error) { | ||
| unstakedPSP, ok := p2pPSP.p2pModule.(unstakedPeerstoreProvider) | ||
| if !ok { | ||
| return nil, fmt.Errorf("p2p module does not implement unstakedPeerstoreProvider") | ||
| } | ||
| return unstakedPSP.GetUnstakedPeerstore() | ||
| } | ||
Uh oh!
There was an error while loading. Please reload this page.