diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-mmap/open.go')
| -rw-r--r-- | vendor/codeberg.org/gruf/go-mmap/open.go | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/vendor/codeberg.org/gruf/go-mmap/open.go b/vendor/codeberg.org/gruf/go-mmap/open.go deleted file mode 100644 index c12a091d3..000000000 --- a/vendor/codeberg.org/gruf/go-mmap/open.go +++ /dev/null @@ -1,62 +0,0 @@ -package mmap - -import ( - "io" - "io/fs" - "os" - "runtime" - "syscall" -) - -// MmapThreshold defines the threshold file size (in bytes) for which -// a call to OpenRead() will deem as big enough for a file to be worth -// opening using an `mmap` syscall. This is a runtime initialized number -// based on the number of available CPUs as in concurrent conditions Go -// can make optimizations for blocking `read` syscalls which scales with -// the number of available goroutines it can have running at once. -var MmapThreshold = int64(runtime.NumCPU() * syscall.Getpagesize()) - -// FileReader defines the base interface -// of a readable file, whether accessed -// via `read` or `mmap` syscalls. -type FileReader interface { - fs.File - io.ReaderAt - io.WriterTo - io.Seeker - Name() string -} - -// Threshold is a receiving type for OpenRead() -// that allows defining a custom MmapThreshold. -type Threshold struct{ At int64 } - -// OpenRead: see mmap.OpenRead(). -func (t Threshold) OpenRead(path string) (FileReader, error) { - stat, err := stat(path) - if err != nil { - return nil, err - } - if stat.Size() >= t.At { - return openMmap(path, stat) - } else { - return os.OpenFile(path, syscall.O_RDONLY, 0) - } -} - -// OpenRead will open the file as read only (erroring if it does -// not already exist). If the file at path is beyond 'MmapThreshold' -// it will be opened for reads using an `mmap` syscall, by calling -// MmappedRead(path). Else, it will be opened using os.OpenFile(). -// -// Please note that the reader returned by this function is not -// guaranteed to be concurrency-safe. Calls returned by os.OpenFile() -// follow the usual standard library concurrency guarantees, but the -// reader returned by MmappedRead() provides no concurrent protection. -// -// Also note that this may not always be faster! If the file you need -// to open will be immediately drained to another file, TCP or Unix -// connection, then the standard library will used optimized syscalls. -func OpenRead(path string) (FileReader, error) { - return Threshold{MmapThreshold}.OpenRead(path) -} |
