fusego/samples/memfs/inode.go

38 lines
889 B
Go

// Copyright 2015 Google Inc. All Rights Reserved.
// Author: jacobsa@google.com (Aaron Jacobs)
package memfs
import (
"fmt"
"reflect"
"github.com/jacobsa/fuse"
)
// Common attributes for files and directories.
//
// TODO(jacobsa): Add tests for interacting with a file/directory after it has
// been unlinked, including creating a new file. Make sure we don't screw up
// and reuse the inode while it is still in use.
type inode struct {
// The *memFile or *memDir for this inode, or nil if the inode is available
// for reuse.
//
// INVARIANT: impl is nil, or of type *memFile or *memDir
impl interface{}
}
func (inode *inode) checkInvariants() {
switch inode.impl.(type) {
case nil:
case *memFile:
case *memDir:
default:
panic(
fmt.Sprintf("Unexpected inode impl type: %v", reflect.TypeOf(inode.impl)))
}
}
func (inode *inode) Attributes() fuse.InodeAttributes