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?