mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
node: expose config in service context
This commit is contained in:
parent
976a0f5558
commit
9368368b87
2 changed files with 11 additions and 11 deletions
|
|
@ -194,7 +194,7 @@ func (n *Node) Start() error {
|
||||||
for _, constructor := range n.serviceFuncs {
|
for _, constructor := range n.serviceFuncs {
|
||||||
// Create a new context for the particular service
|
// Create a new context for the particular service
|
||||||
ctx := &ServiceContext{
|
ctx := &ServiceContext{
|
||||||
config: n.config,
|
Config: *n.config,
|
||||||
services: make(map[reflect.Type]Service),
|
services: make(map[reflect.Type]Service),
|
||||||
EventMux: n.eventmux,
|
EventMux: n.eventmux,
|
||||||
AccountManager: n.accman,
|
AccountManager: n.accman,
|
||||||
|
|
|
||||||
|
|
@ -32,20 +32,20 @@ import (
|
||||||
// the protocol stack, that is passed to all constructors to be optionally used;
|
// the protocol stack, that is passed to all constructors to be optionally used;
|
||||||
// as well as utility methods to operate on the service environment.
|
// as well as utility methods to operate on the service environment.
|
||||||
type ServiceContext struct {
|
type ServiceContext struct {
|
||||||
config *Config
|
|
||||||
services map[reflect.Type]Service // Index of the already constructed services
|
services map[reflect.Type]Service // Index of the already constructed services
|
||||||
EventMux *event.TypeMux // Event multiplexer used for decoupled notifications
|
Config Config
|
||||||
AccountManager *accounts.Manager // Account manager created by the node.
|
EventMux *event.TypeMux // Event multiplexer used for decoupled notifications
|
||||||
|
AccountManager *accounts.Manager // Account manager created by the node.
|
||||||
}
|
}
|
||||||
|
|
||||||
// OpenDatabase opens an existing database with the given name (or creates one
|
// OpenDatabase opens an existing database with the given name (or creates one
|
||||||
// if no previous can be found) from within the node's data directory. If the
|
// if no previous can be found) from within the node's data directory. If the
|
||||||
// node is an ephemeral one, a memory database is returned.
|
// node is an ephemeral one, a memory database is returned.
|
||||||
func (ctx *ServiceContext) OpenDatabase(name string, cache int, handles int, namespace string) (ethdb.Database, error) {
|
func (ctx *ServiceContext) OpenDatabase(name string, cache int, handles int, namespace string) (ethdb.Database, error) {
|
||||||
if ctx.config.DataDir == "" {
|
if ctx.Config.DataDir == "" {
|
||||||
return rawdb.NewMemoryDatabase(), nil
|
return rawdb.NewMemoryDatabase(), nil
|
||||||
}
|
}
|
||||||
return rawdb.NewLevelDBDatabase(ctx.config.ResolvePath(name), cache, handles, namespace)
|
return rawdb.NewLevelDBDatabase(ctx.Config.ResolvePath(name), cache, handles, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
// OpenDatabaseWithFreezer opens an existing database with the given name (or
|
// OpenDatabaseWithFreezer opens an existing database with the given name (or
|
||||||
|
|
@ -54,16 +54,16 @@ func (ctx *ServiceContext) OpenDatabase(name string, cache int, handles int, nam
|
||||||
// database to immutable append-only files. If the node is an ephemeral one, a
|
// database to immutable append-only files. If the node is an ephemeral one, a
|
||||||
// memory database is returned.
|
// memory database is returned.
|
||||||
func (ctx *ServiceContext) OpenDatabaseWithFreezer(name string, cache int, handles int, freezer string, namespace string) (ethdb.Database, error) {
|
func (ctx *ServiceContext) OpenDatabaseWithFreezer(name string, cache int, handles int, freezer string, namespace string) (ethdb.Database, error) {
|
||||||
if ctx.config.DataDir == "" {
|
if ctx.Config.DataDir == "" {
|
||||||
return rawdb.NewMemoryDatabase(), nil
|
return rawdb.NewMemoryDatabase(), nil
|
||||||
}
|
}
|
||||||
root := ctx.config.ResolvePath(name)
|
root := ctx.Config.ResolvePath(name)
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case freezer == "":
|
case freezer == "":
|
||||||
freezer = filepath.Join(root, "ancient")
|
freezer = filepath.Join(root, "ancient")
|
||||||
case !filepath.IsAbs(freezer):
|
case !filepath.IsAbs(freezer):
|
||||||
freezer = ctx.config.ResolvePath(freezer)
|
freezer = ctx.Config.ResolvePath(freezer)
|
||||||
}
|
}
|
||||||
return rawdb.NewLevelDBDatabaseWithFreezer(root, cache, handles, freezer, namespace)
|
return rawdb.NewLevelDBDatabaseWithFreezer(root, cache, handles, freezer, namespace)
|
||||||
}
|
}
|
||||||
|
|
@ -72,7 +72,7 @@ func (ctx *ServiceContext) OpenDatabaseWithFreezer(name string, cache int, handl
|
||||||
// and if the user actually uses persistent storage. It will return an empty string
|
// and if the user actually uses persistent storage. It will return an empty string
|
||||||
// for emphemeral storage and the user's own input for absolute paths.
|
// for emphemeral storage and the user's own input for absolute paths.
|
||||||
func (ctx *ServiceContext) ResolvePath(path string) string {
|
func (ctx *ServiceContext) ResolvePath(path string) string {
|
||||||
return ctx.config.ResolvePath(path)
|
return ctx.Config.ResolvePath(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Service retrieves a currently running service registered of a specific type.
|
// Service retrieves a currently running service registered of a specific type.
|
||||||
|
|
@ -88,7 +88,7 @@ func (ctx *ServiceContext) Service(service interface{}) error {
|
||||||
// ExtRPCEnabled returns the indicator whether node enables the external
|
// ExtRPCEnabled returns the indicator whether node enables the external
|
||||||
// RPC(http, ws or graphql).
|
// RPC(http, ws or graphql).
|
||||||
func (ctx *ServiceContext) ExtRPCEnabled() bool {
|
func (ctx *ServiceContext) ExtRPCEnabled() bool {
|
||||||
return ctx.config.ExtRPCEnabled()
|
return ctx.Config.ExtRPCEnabled()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceConstructor is the function signature of the constructors needed to be
|
// ServiceConstructor is the function signature of the constructors needed to be
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue