diff options
Diffstat (limited to 'weed/pb/filer_pb/filer_pb_helper.go')
| -rw-r--r-- | weed/pb/filer_pb/filer_pb_helper.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/weed/pb/filer_pb/filer_pb_helper.go b/weed/pb/filer_pb/filer_pb_helper.go index 5e5d1d1ae..0ec31420c 100644 --- a/weed/pb/filer_pb/filer_pb_helper.go +++ b/weed/pb/filer_pb/filer_pb_helper.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "strings" + "time" "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/storage/needle" @@ -13,6 +14,8 @@ import ( "google.golang.org/protobuf/proto" ) +const cutoffTimeNewEmptyDir = 3 + func (entry *Entry) IsInRemoteOnly() bool { return len(entry.GetChunks()) == 0 && entry.RemoteEntry != nil && entry.RemoteEntry.RemoteSize > 0 } @@ -28,6 +31,10 @@ func (entry *Entry) FileMode() (fileMode os.FileMode) { return } +func (entry *Entry) IsOlderDir() bool { + return entry.IsDirectory && entry.Attributes != nil && entry.Attributes.Mime == "" && entry.Attributes.GetCrtime() <= time.Now().Unix()-cutoffTimeNewEmptyDir +} + func ToFileIdObject(fileIdStr string) (*FileId, error) { t, err := needle.ParseFileIdFromString(fileIdStr) if err != nil { @@ -143,18 +150,22 @@ var ErrNotFound = errors.New("filer: no entry is found in filer store") func IsEmpty(event *SubscribeMetadataResponse) bool { return event.EventNotification.NewEntry == nil && event.EventNotification.OldEntry == nil } + func IsCreate(event *SubscribeMetadataResponse) bool { return event.EventNotification.NewEntry != nil && event.EventNotification.OldEntry == nil } + func IsUpdate(event *SubscribeMetadataResponse) bool { return event.EventNotification.NewEntry != nil && event.EventNotification.OldEntry != nil && event.Directory == event.EventNotification.NewParentPath && event.EventNotification.NewEntry.Name == event.EventNotification.OldEntry.Name } + func IsDelete(event *SubscribeMetadataResponse) bool { return event.EventNotification.NewEntry == nil && event.EventNotification.OldEntry != nil } + func IsRename(event *SubscribeMetadataResponse) bool { return event.EventNotification.NewEntry != nil && event.EventNotification.OldEntry != nil && |
