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  }