From b5fd9492d70527dddc49482a2ff536d22403b6e2 Mon Sep 17 00:00:00 2001 From: Jeromy <jeromyj@gmail.com> Date: Wed, 10 Sep 2014 20:56:29 +0000 Subject: [PATCH] fixes to make interface more usable --- core/commands/add.go | 10 ++++++++++ core/commands/commands.go | 4 ++++ core/core.go | 1 + fuse/readonly/readonly_unix.go | 31 ++++++++++++++++++++++++------- merkledag/merkledag.go | 8 ++++++-- routing/dht/routing.go | 1 + 6 files changed, 46 insertions(+), 9 deletions(-) diff --git a/core/commands/add.go b/core/commands/add.go index 48a6ccae..c98ee145 100644 --- a/core/commands/add.go +++ b/core/commands/add.go @@ -103,6 +103,16 @@ func addFile(n *core.IpfsNode, fpath string, depth int) (*dag.Node, error) { return nil, err } + k, err := root.Key() + if err != nil { + return nil, err + } + + log.Info("Adding file: %s = %s\n", fpath, k.Pretty()) + for _, l := range root.Links { + log.Info("SubBlock: %s\n", l.Hash.B58String()) + } + return root, addNode(n, root, fpath) } diff --git a/core/commands/commands.go b/core/commands/commands.go index 5bef54a7..b356d9bb 100644 --- a/core/commands/commands.go +++ b/core/commands/commands.go @@ -4,6 +4,10 @@ import ( "io" "github.com/jbenet/go-ipfs/core" + + logging "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/op/go-logging" ) +var log = logging.MustGetLogger("commands") + type CmdFunc func(*core.IpfsNode, []string, map[string]interface{}, io.Writer) error diff --git a/core/core.go b/core/core.go index 459a32aa..005b6e62 100644 --- a/core/core.go +++ b/core/core.go @@ -16,6 +16,7 @@ import ( exchange "github.com/jbenet/go-ipfs/exchange" bitswap "github.com/jbenet/go-ipfs/exchange/bitswap" merkledag "github.com/jbenet/go-ipfs/merkledag" + namesys "github.com/jbenet/go-ipfs/namesys" inet "github.com/jbenet/go-ipfs/net" mux "github.com/jbenet/go-ipfs/net/mux" netservice "github.com/jbenet/go-ipfs/net/service" diff --git a/fuse/readonly/readonly_unix.go b/fuse/readonly/readonly_unix.go index 897c90d7..03dba781 100644 --- a/fuse/readonly/readonly_unix.go +++ b/fuse/readonly/readonly_unix.go @@ -14,6 +14,8 @@ import ( "syscall" "time" + "code.google.com/p/goprotobuf/proto" + "github.com/jbenet/go-ipfs/Godeps/_workspace/src/bazil.org/fuse" "github.com/jbenet/go-ipfs/Godeps/_workspace/src/bazil.org/fuse/fs" core "github.com/jbenet/go-ipfs/core" @@ -72,20 +74,35 @@ func (*Root) ReadDir(intr fs.Intr) ([]fuse.Dirent, fuse.Error) { // Node is the core object representing a filesystem tree node. type Node struct { - Ipfs *core.IpfsNode - Nd *mdag.Node - fd *mdag.DagReader + Ipfs *core.IpfsNode + Nd *mdag.Node + fd *mdag.DagReader + cached *mdag.PBData +} + +func (s *Node) loadData() error { + s.cached = new(mdag.PBData) + return proto.Unmarshal(s.Nd.Data, s.cached) } // Attr returns the attributes of a given node. func (s *Node) Attr() fuse.Attr { u.DOut("Node attr.\n") - if len(s.Nd.Links) > 0 { + if s.cached == nil { + s.loadData() + } + switch s.cached.GetType() { + case mdag.PBData_Directory: + u.DOut("this is a directory.\n") return fuse.Attr{Mode: os.ModeDir | 0555} + case mdag.PBData_File, mdag.PBData_Raw: + u.DOut("this is a file.\n") + size, _ := s.Nd.Size() + return fuse.Attr{Mode: 0444, Size: uint64(size)} + default: + u.PErr("Invalid data type.") + return fuse.Attr{} } - - size, _ := s.Nd.Size() - return fuse.Attr{Mode: 0444, Size: uint64(size)} } // Lookup performs a lookup under this node. diff --git a/merkledag/merkledag.go b/merkledag/merkledag.go index 1ec5f3c5..1cc26278 100644 --- a/merkledag/merkledag.go +++ b/merkledag/merkledag.go @@ -3,7 +3,8 @@ package merkledag import ( "fmt" - "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto" + proto "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto" + logging "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/op/go-logging" mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash" blocks "github.com/jbenet/go-ipfs/blocks" @@ -11,6 +12,8 @@ import ( u "github.com/jbenet/go-ipfs/util" ) +var log = logging.MustGetLogger("commands") + // NodeMap maps u.Keys to Nodes. // We cannot use []byte/Multihash for keys :( // so have to convert Multihash bytes to string (u.Key) @@ -105,7 +108,7 @@ type DAGService struct { // Add adds a node to the DAGService, storing the block in the BlockService func (n *DAGService) Add(nd *Node) (u.Key, error) { k, _ := nd.Key() - u.DOut("DagService Add [%s]\n", k.Pretty()) + log.Debug("DagService Add [%s]\n", k.Pretty()) if n == nil { return "", fmt.Errorf("DAGService is nil") } @@ -126,6 +129,7 @@ func (n *DAGService) Add(nd *Node) (u.Key, error) { func (n *DAGService) AddRecursive(nd *Node) error { _, err := n.Add(nd) if err != nil { + log.Info("AddRecursive Error: %s\n", err) return err } diff --git a/routing/dht/routing.go b/routing/dht/routing.go index 66ae0984..16f74380 100644 --- a/routing/dht/routing.go +++ b/routing/dht/routing.go @@ -101,6 +101,7 @@ func (dht *IpfsDHT) Provide(ctx context.Context, key u.Key) error { dht.providers.AddProvider(key, dht.self) peers := dht.routingTables[0].NearestPeers(kb.ConvertKey(key), PoolSize) if len(peers) == 0 { + // Early out for no targets return nil } -- GitLab