forked from Consensys/quorum
/
services_factory.go
65 lines (49 loc) · 1.91 KB
/
services_factory.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
package extension
import (
"context"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/extension/privacyExtension"
"github.com/ethereum/go-ethereum/node"
"github.com/ethereum/go-ethereum/private"
)
type ServicesFactory interface {
BackendService() *PrivacyService
AccountManager() *accounts.Manager
DataHandler() DataHandler
StateFetcher() *StateFetcher
}
type DefaultServicesFactory struct {
backendService *PrivacyService
accountManager *accounts.Manager
dataHandler *JsonFileDataHandler
stateFetcher *StateFetcher
}
func NewServicesFactory(node *node.Node, ptm private.PrivateTransactionManager, ethService *eth.Ethereum) (*DefaultServicesFactory, error) {
factory := &DefaultServicesFactory{}
factory.accountManager = ethService.AccountManager()
factory.dataHandler = NewJsonFileDataHandler(node.InstanceDir())
factory.stateFetcher = NewStateFetcher(ethService.BlockChain())
backendService, err := New(ptm, factory.AccountManager(), factory.DataHandler(), factory.StateFetcher(), ethService.APIBackend)
if err != nil {
return nil, err
}
factory.backendService = backendService
_, isMultitenant := ethService.BlockChain().SupportsMultitenancy(context.Background())
privacyExtension.DefaultExtensionHandler.SupportMultitenancy(isMultitenant)
ethService.BlockChain().PopulateSetPrivateState(privacyExtension.DefaultExtensionHandler.CheckExtensionAndSetPrivateState)
go backendService.initialise(node)
return factory, nil
}
func (factory *DefaultServicesFactory) BackendService() *PrivacyService {
return factory.backendService
}
func (factory *DefaultServicesFactory) AccountManager() *accounts.Manager {
return factory.accountManager
}
func (factory *DefaultServicesFactory) DataHandler() DataHandler {
return factory.dataHandler
}
func (factory *DefaultServicesFactory) StateFetcher() *StateFetcher {
return factory.stateFetcher
}