@cryptotaxi247 / kubo / commits / bf8021302

Distinguish between Offline and Local Mode.

License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>

Kevin Atkinson committed Sep 2, 2016 at 16:13 UTC bf8021302c1cbca2719763fabec41d1c0dc3461c
3 files changed +24
cmd/ipfs/daemon.go
+1
@@ -304,6 +304,7 @@ func daemonFunc(req cmds.Request, res cmds.Response) {
304 res.SetError(err, cmds.ErrNormal)
305 return
306 }
307 + node.SetLocal(false)
308
309 printSwarmAddrs(node)
310
cmd/ipfs/main.go
+1
@@ -227,6 +227,7 @@ func (i *cmdInvocation) constructNodeFunc(ctx context.Context) func() (*core.Ipf
227 if err != nil {
228 return nil, err
229 }
230 + n.SetLocal(true)
231 i.node = n
232 return i.node, nil
233 }
core/core.go
+22
@@ -74,6 +74,7 @@ type mode int
74 const (
75 // zero value is not a valid mode, must be explicitly set
76 invalidMode mode = iota
77 + localMode
78 offlineMode
79 onlineMode
80 )
@@ -116,6 +117,7 @@ type IpfsNode struct {
117 ctx context.Context
118
119 mode mode
120 + localModeSet bool
121 }
122
123 // Mounts defines what the node's mount state is. This should
@@ -396,6 +398,26 @@ func (n *IpfsNode) OnlineMode() bool {
398 }
399 }
400
401 +func (n *IpfsNode) SetLocal(isLocal bool) {
402 + if isLocal {
403 + n.mode = localMode
404 + }
405 + n.localModeSet = true
406 +}
407 +
408 +func (n *IpfsNode) LocalMode() bool {
409 + if !n.localModeSet {
410 + // programmer error should not happen
411 + panic("local mode not set")
412 + }
413 + switch n.mode {
414 + case localMode:
415 + return true
416 + default:
417 + return false
418 + }
419 +}
420 +
421 func (n *IpfsNode) Bootstrap(cfg BootstrapConfig) error {
422
423 // TODO what should return value be when in offlineMode?