func (cfg *BuildCfg) fillDefaults() error { if cfg.Repo != nil && cfg.NilRepo { return errors.New("cannot set a repo and specify nilrepo at the same time") } if cfg.Repo == nil { var d ds.Datastore d = ds.NewMapDatastore() if cfg.NilRepo { d = ds.NewNullDatastore() } r, err := defaultRepo(dsync.MutexWrap(d)) if err != nil { return err } cfg.Repo = r } if cfg.Routing == nil { cfg.Routing = DHTOption } if cfg.Host == nil { cfg.Host = DefaultHostOption } return nil }
func (nb *NodeBuilder) Build(ctx context.Context) (*IpfsNode, error) { if nb.built { return nil, ErrAlreadyBuilt } nb.built = true if nb.repo == nil { var d ds.Datastore d = ds.NewMapDatastore() if nb.nilrepo { d = ds.NewNullDatastore() } r, err := defaultRepo(dsync.MutexWrap(d)) if err != nil { return nil, err } nb.repo = r } conf := standardWithRouting(nb.repo, nb.online, nb.routing, nb.peerhost) return NewIPFSNode(ctx, conf) }