本文整理汇总了Golang中github.com/hanwen/go-fuse/fuse/nodefs.Node类的典型用法代码示例。如果您正苦于以下问题:Golang Node类的具体用法?Golang Node怎么用?Golang Node使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Node类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Link
func (me *memNode) Link(name string, existing nodefs.Node, context *fuse.Context) (*nodefs.Inode, fuse.Status) {
me.Inode().AddChild(name, existing.Inode())
me.mutex.Lock()
defer me.mutex.Unlock()
me.touch()
return existing.Inode(), fuse.OK
}
示例2: Link
func (node *inMemNode) Link(name string, existing nodefs.Node, context *fuse.Context) (newNode *nodefs.Inode, code fuse.Status) {
if node.Inode().GetChild(name) != nil {
return nil, fuse.Status(syscall.EEXIST)
}
node.Inode().AddChild(name, existing.Inode())
if inMemChild, ok := existing.(*inMemNode); ok {
inMemChild.incrementLinks()
}
return existing.Inode(), fuse.OK
}
示例3: Rename
func (parent *inMemNode) Rename(oldName string, newParent nodefs.Node, newName string, context *fuse.Context) (code fuse.Status) {
child := parent.Inode().GetChild(oldName)
if child == nil {
return fuse.ENOENT
}
parent.Inode().RmChild(oldName)
parent.decrementLinks()
newParent.Inode().RmChild(newName)
newParent.Inode().AddChild(newName, child)
if inMemNewParent, ok := newParent.(*inMemNode); ok {
inMemNewParent.incrementLinks()
}
return fuse.OK
}
示例4: Lookup
func (f *p4Folder) Lookup(out *fuse.Attr, name string, context *fuse.Context) (*nodefs.Inode, fuse.Status) {
f.fetch()
var node nodefs.Node
if st := f.files[name]; st != nil {
node = f.fs.newFile(st)
} else if f.folders[name] {
node = f.fs.newFolder(filepath.Join(f.path, name), f.change)
} else {
return nil, fuse.ENOENT
}
node.GetAttr(out, nil, context)
return f.Inode().NewChild(name, true, node), fuse.OK
}
示例5: recurse
func (t *treeFS) recurse(tree *git.Tree, n nodefs.Node) error {
for i := uint64(0); ; i++ {
e := tree.EntryByIndex(i)
if e == nil {
break
}
isdir := e.Filemode&syscall.S_IFDIR != 0
var chNode nodefs.Node
if isdir {
chNode = t.newDirNode(e.Id)
} else if e.Filemode&^07777 == syscall.S_IFLNK {
l, err := t.newLinkNode(e.Id)
if err != nil {
return err
}
chNode = l
} else if e.Filemode&^07777 == syscall.S_IFREG {
b, err := t.newBlobNode(e.Id, e.Filemode)
if err != nil {
return err
}
chNode = b
} else {
panic(e)
}
n.Inode().NewChild(e.Name, isdir, chNode)
if isdir {
tree, err := t.repo.LookupTree(e.Id)
if err != nil {
return err
}
if err := t.recurse(tree, chNode); err != nil {
return nil
}
}
}
return nil
}
示例6: Rename
func (me *memNode) Rename(oldName string, newParent nodefs.Node, newName string, context *fuse.Context) (code fuse.Status) {
me.mutex.Lock()
defer me.mutex.Unlock()
ch := me.Inode().RmChild(oldName)
if ch == nil {
return fuse.ENOENT
}
if me.original != "" || me == me.fs.root {
me.fs.deleted[fastpath.Join(me.original, oldName)] = true
}
childNode := ch.Node().(*memNode)
if childNode.original != "" || childNode == me.fs.root {
childNode.materialize()
childNode.markChanged()
}
newParent.Inode().RmChild(newName)
newParent.Inode().AddChild(newName, ch)
me.touch()
return fuse.OK
}