You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							54 lines
						
					
					
						
							2.0 KiB
						
					
					
				
								package filer
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"context"
							 | 
						|
									"errors"
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/util"
							 | 
						|
									"io"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								const CountEntryChunksForGzip = 50
							 | 
						|
								
							 | 
						|
								var (
							 | 
						|
									ErrUnsupportedListDirectoryPrefixed      = errors.New("unsupported directory prefix listing")
							 | 
						|
									ErrUnsupportedSuperLargeDirectoryListing = errors.New("unsupported super large directory listing")
							 | 
						|
									ErrKvNotImplemented                      = errors.New("kv not implemented yet")
							 | 
						|
									ErrKvNotFound                            = errors.New("kv: not found")
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								type ListEachEntryFunc func(entry *Entry) bool
							 | 
						|
								
							 | 
						|
								type FilerStore interface {
							 | 
						|
									// GetName gets the name to locate the configuration in filer.toml file
							 | 
						|
									GetName() string
							 | 
						|
									// Initialize initializes the file store
							 | 
						|
									Initialize(configuration util.Configuration, prefix string) error
							 | 
						|
									InsertEntry(context.Context, *Entry) error
							 | 
						|
									UpdateEntry(context.Context, *Entry) (err error)
							 | 
						|
									// err == filer_pb.ErrNotFound if not found
							 | 
						|
									FindEntry(context.Context, util.FullPath) (entry *Entry, err error)
							 | 
						|
									DeleteEntry(context.Context, util.FullPath) (err error)
							 | 
						|
									DeleteFolderChildren(context.Context, util.FullPath) (err error)
							 | 
						|
									ListDirectoryEntries(ctx context.Context, dirPath util.FullPath, startFileName string, includeStartFile bool, limit int64, eachEntryFunc ListEachEntryFunc) (lastFileName string, err error)
							 | 
						|
									ListDirectoryPrefixedEntries(ctx context.Context, dirPath util.FullPath, startFileName string, includeStartFile bool, limit int64, prefix string, eachEntryFunc ListEachEntryFunc) (lastFileName string, err error)
							 | 
						|
								
							 | 
						|
									BeginTransaction(ctx context.Context) (context.Context, error)
							 | 
						|
									CommitTransaction(ctx context.Context) error
							 | 
						|
									RollbackTransaction(ctx context.Context) error
							 | 
						|
								
							 | 
						|
									KvPut(ctx context.Context, key []byte, value []byte) (err error)
							 | 
						|
									KvGet(ctx context.Context, key []byte) (value []byte, err error)
							 | 
						|
									KvDelete(ctx context.Context, key []byte) (err error)
							 | 
						|
								
							 | 
						|
									Shutdown()
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								type BucketAware interface {
							 | 
						|
									OnBucketCreation(bucket string)
							 | 
						|
									OnBucketDeletion(bucket string)
							 | 
						|
									CanDropWholeBucket() bool
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								type Debuggable interface {
							 | 
						|
									Debug(writer io.Writer)
							 | 
						|
								}
							 |