mirror of https://github.com/poanetwork/gecko.git
Added shared memory to the context
This commit is contained in:
parent
bb93cc3eee
commit
29282f07ac
|
@ -9,6 +9,7 @@ import (
|
||||||
|
|
||||||
"github.com/ava-labs/gecko/api"
|
"github.com/ava-labs/gecko/api"
|
||||||
"github.com/ava-labs/gecko/api/keystore"
|
"github.com/ava-labs/gecko/api/keystore"
|
||||||
|
"github.com/ava-labs/gecko/chains/atomic"
|
||||||
"github.com/ava-labs/gecko/database"
|
"github.com/ava-labs/gecko/database"
|
||||||
"github.com/ava-labs/gecko/database/prefixdb"
|
"github.com/ava-labs/gecko/database/prefixdb"
|
||||||
"github.com/ava-labs/gecko/ids"
|
"github.com/ava-labs/gecko/ids"
|
||||||
|
@ -109,6 +110,7 @@ type manager struct {
|
||||||
awaiter Awaiter // Waits for required connections before running bootstrapping
|
awaiter Awaiter // Waits for required connections before running bootstrapping
|
||||||
server *api.Server // Handles HTTP API calls
|
server *api.Server // Handles HTTP API calls
|
||||||
keystore *keystore.Keystore
|
keystore *keystore.Keystore
|
||||||
|
sharedMemory *atomic.SharedMemory
|
||||||
|
|
||||||
unblocked bool
|
unblocked bool
|
||||||
blockedChains []ChainParameters
|
blockedChains []ChainParameters
|
||||||
|
@ -135,6 +137,7 @@ func New(
|
||||||
awaiter Awaiter,
|
awaiter Awaiter,
|
||||||
server *api.Server,
|
server *api.Server,
|
||||||
keystore *keystore.Keystore,
|
keystore *keystore.Keystore,
|
||||||
|
sharedMemory *atomic.SharedMemory,
|
||||||
) Manager {
|
) Manager {
|
||||||
timeoutManager := timeout.Manager{}
|
timeoutManager := timeout.Manager{}
|
||||||
timeoutManager.Initialize(requestTimeout)
|
timeoutManager.Initialize(requestTimeout)
|
||||||
|
@ -159,6 +162,7 @@ func New(
|
||||||
awaiter: awaiter,
|
awaiter: awaiter,
|
||||||
server: server,
|
server: server,
|
||||||
keystore: keystore,
|
keystore: keystore,
|
||||||
|
sharedMemory: sharedMemory,
|
||||||
}
|
}
|
||||||
m.Initialize()
|
m.Initialize()
|
||||||
return m
|
return m
|
||||||
|
@ -246,6 +250,7 @@ func (m *manager) ForceCreateChain(chain ChainParameters) {
|
||||||
NodeID: m.nodeID,
|
NodeID: m.nodeID,
|
||||||
HTTP: m.server,
|
HTTP: m.server,
|
||||||
Keystore: m.keystore.NewBlockchainKeyStore(chain.ID),
|
Keystore: m.keystore.NewBlockchainKeyStore(chain.ID),
|
||||||
|
SharedMemory: m.sharedMemory.NewBlockchainSharedMemory(chain.ID),
|
||||||
BCLookup: m,
|
BCLookup: m,
|
||||||
}
|
}
|
||||||
consensusParams := m.consensusParams
|
consensusParams := m.consensusParams
|
||||||
|
|
17
node/node.go
17
node/node.go
|
@ -25,6 +25,7 @@ import (
|
||||||
"github.com/ava-labs/gecko/api/keystore"
|
"github.com/ava-labs/gecko/api/keystore"
|
||||||
"github.com/ava-labs/gecko/api/metrics"
|
"github.com/ava-labs/gecko/api/metrics"
|
||||||
"github.com/ava-labs/gecko/chains"
|
"github.com/ava-labs/gecko/chains"
|
||||||
|
"github.com/ava-labs/gecko/chains/atomic"
|
||||||
"github.com/ava-labs/gecko/database"
|
"github.com/ava-labs/gecko/database"
|
||||||
"github.com/ava-labs/gecko/database/prefixdb"
|
"github.com/ava-labs/gecko/database/prefixdb"
|
||||||
"github.com/ava-labs/gecko/genesis"
|
"github.com/ava-labs/gecko/genesis"
|
||||||
|
@ -68,6 +69,9 @@ type Node struct {
|
||||||
// Handles calls to Keystore API
|
// Handles calls to Keystore API
|
||||||
keystoreServer keystore.Keystore
|
keystoreServer keystore.Keystore
|
||||||
|
|
||||||
|
// Manages shared memory
|
||||||
|
sharedMemory atomic.SharedMemory
|
||||||
|
|
||||||
// Manages creation of blockchains and routing messages to them
|
// Manages creation of blockchains and routing messages to them
|
||||||
chainManager chains.Manager
|
chainManager chains.Manager
|
||||||
|
|
||||||
|
@ -415,12 +419,20 @@ func (n *Node) initChainManager() {
|
||||||
n.ValidatorAPI,
|
n.ValidatorAPI,
|
||||||
&n.APIServer,
|
&n.APIServer,
|
||||||
&n.keystoreServer,
|
&n.keystoreServer,
|
||||||
|
&n.sharedMemory,
|
||||||
)
|
)
|
||||||
|
|
||||||
n.chainManager.AddRegistrant(&n.APIServer)
|
n.chainManager.AddRegistrant(&n.APIServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// initWallet initializes the Wallet service
|
// initSharedMemory initializes the shared memory for cross chain interation
|
||||||
|
func (n *Node) initSharedMemory() {
|
||||||
|
n.Log.Info("initializing SharedMemory")
|
||||||
|
sharedMemoryDB := prefixdb.New([]byte("shared memory"), n.DB)
|
||||||
|
n.sharedMemory.Initialize(n.Log, sharedMemoryDB)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initKeystoreAPI initializes the keystore service
|
||||||
// Assumes n.APIServer is already set
|
// Assumes n.APIServer is already set
|
||||||
func (n *Node) initKeystoreAPI() {
|
func (n *Node) initKeystoreAPI() {
|
||||||
n.Log.Info("initializing Keystore API")
|
n.Log.Info("initializing Keystore API")
|
||||||
|
@ -502,6 +514,9 @@ func (n *Node) Initialize(Config *Config, logger logging.Logger, logFactory logg
|
||||||
return fmt.Errorf("problem initializing staker ID: %w", err)
|
return fmt.Errorf("problem initializing staker ID: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// initialize shared memory
|
||||||
|
n.initSharedMemory()
|
||||||
|
|
||||||
// Start HTTP APIs
|
// Start HTTP APIs
|
||||||
n.initAPIServer() // Start the API Server
|
n.initAPIServer() // Start the API Server
|
||||||
n.initKeystoreAPI() // Start the Keystore API
|
n.initKeystoreAPI() // Start the Keystore API
|
||||||
|
|
|
@ -24,6 +24,12 @@ type Keystore interface {
|
||||||
GetDatabase(username, password string) (database.Database, error)
|
GetDatabase(username, password string) (database.Database, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SharedMemory ...
|
||||||
|
type SharedMemory interface {
|
||||||
|
GetDatabase(id ids.ID) database.Database
|
||||||
|
ReleaseDatabase(id ids.ID)
|
||||||
|
}
|
||||||
|
|
||||||
// AliasLookup ...
|
// AliasLookup ...
|
||||||
type AliasLookup interface {
|
type AliasLookup interface {
|
||||||
Lookup(alias string) (ids.ID, error)
|
Lookup(alias string) (ids.ID, error)
|
||||||
|
@ -44,6 +50,7 @@ type Context struct {
|
||||||
Lock sync.RWMutex
|
Lock sync.RWMutex
|
||||||
HTTP Callable
|
HTTP Callable
|
||||||
Keystore Keystore
|
Keystore Keystore
|
||||||
|
SharedMemory SharedMemory
|
||||||
BCLookup AliasLookup
|
BCLookup AliasLookup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue