Browse Source

node: add InstanceDir method

Felix Lange 9 years ago
parent
commit
cc0064b267
2 changed files with 15 additions and 2 deletions
  1. 9 2
      node/config.go
  2. 6 0
      node/node.go

+ 9 - 2
node/config.go

@@ -268,7 +268,7 @@ func (c *Config) name() string {
 	return c.Name
 }
 
-// These resources are resolved differently for the "geth" and "geth-testnet" instances.
+// These resources are resolved differently for "geth" instances.
 var isOldGethResource = map[string]bool{
 	"chaindata":          true,
 	"nodes":              true,
@@ -297,7 +297,14 @@ func (c *Config) resolvePath(path string) string {
 			return oldpath
 		}
 	}
-	return filepath.Join(c.DataDir, c.name(), path)
+	return filepath.Join(c.instanceDir(), path)
+}
+
+func (c *Config) instanceDir() string {
+	if c.DataDir == "" {
+		return ""
+	}
+	return filepath.Join(c.DataDir, c.name())
 }
 
 // NodeKey retrieves the currently configured private key of the node, checking

+ 6 - 0
node/node.go

@@ -601,10 +601,16 @@ func (n *Node) Service(service interface{}) error {
 }
 
 // DataDir retrieves the current datadir used by the protocol stack.
+// Deprecated: No files should be stored in this directory, use InstanceDir instead.
 func (n *Node) DataDir() string {
 	return n.config.DataDir
 }
 
+// InstanceDir retrieves the instance directory used by the protocol stack.
+func (n *Node) InstanceDir() string {
+	return n.config.instanceDir()
+}
+
 // AccountManager retrieves the account manager used by the protocol stack.
 func (n *Node) AccountManager() *accounts.Manager {
 	return n.accman