github.com/ConsenSys/Quorum@v20.10.0+incompatible/extension/services_factory.go (about) 1 package extension 2 3 import ( 4 "github.com/ethereum/go-ethereum/accounts" 5 "github.com/ethereum/go-ethereum/eth" 6 "github.com/ethereum/go-ethereum/extension/privacyExtension" 7 "github.com/ethereum/go-ethereum/node" 8 "github.com/ethereum/go-ethereum/private" 9 ) 10 11 type ServicesFactory interface { 12 BackendService() *PrivacyService 13 14 AccountManager() *accounts.Manager 15 DataHandler() DataHandler 16 StateFetcher() *StateFetcher 17 } 18 19 type DefaultServicesFactory struct { 20 backendService *PrivacyService 21 accountManager *accounts.Manager 22 dataHandler *JsonFileDataHandler 23 stateFetcher *StateFetcher 24 } 25 26 func NewServicesFactory(node *node.Node, ptm private.PrivateTransactionManager, ethService *eth.Ethereum) (*DefaultServicesFactory, error) { 27 factory := &DefaultServicesFactory{} 28 29 factory.accountManager = ethService.AccountManager() 30 factory.dataHandler = NewJsonFileDataHandler(node.InstanceDir()) 31 factory.stateFetcher = NewStateFetcher(ethService.BlockChain()) 32 33 backendService, err := New(ptm, factory.AccountManager(), factory.DataHandler(), factory.StateFetcher()) 34 if err != nil { 35 return nil, err 36 } 37 factory.backendService = backendService 38 39 ethService.BlockChain().PopulateSetPrivateState(privacyExtension.DefaultExtensionHandler.CheckExtensionAndSetPrivateState) 40 41 go backendService.initialise(node) 42 43 return factory, nil 44 } 45 46 func (factory *DefaultServicesFactory) BackendService() *PrivacyService { 47 return factory.backendService 48 } 49 50 func (factory *DefaultServicesFactory) AccountManager() *accounts.Manager { 51 return factory.accountManager 52 } 53 54 func (factory *DefaultServicesFactory) DataHandler() DataHandler { 55 return factory.dataHandler 56 } 57 58 func (factory *DefaultServicesFactory) StateFetcher() *StateFetcher { 59 return factory.stateFetcher 60 }