Initial commit (code only without large binaries)
This commit is contained in:
58
EdgeNode/internal/caches/storage_file_plus.go
Normal file
58
EdgeNode/internal/caches/storage_file_plus.go
Normal file
@@ -0,0 +1,58 @@
|
||||
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
//go:build plus
|
||||
|
||||
package caches
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeNode/internal/utils/mmap"
|
||||
"os"
|
||||
)
|
||||
|
||||
func (this *FileStorage) tryMMAPReader(isPartial bool, estimatedSize int64, path string) (Reader, error) {
|
||||
// TODO 因为在实践中MMAP耗费了太多CPU,在未解决之前先暂停支持
|
||||
return nil, nil
|
||||
var options = this.options // copy
|
||||
if estimatedSize > 0 &&
|
||||
!isPartial &&
|
||||
(options != nil && options.EnableMMAP) &&
|
||||
IsValidForMMAPSize(estimatedSize) {
|
||||
var isOk bool
|
||||
defer func() {
|
||||
if !isOk {
|
||||
_ = this.removeCacheFile(path)
|
||||
}
|
||||
}()
|
||||
|
||||
sharedMMAP, err := mmap.OpenSharedMMAP(path)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
isOk = true
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reader, err := NewMMAPFileReader(sharedMMAP)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
isOk = true
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = reader.Init()
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
isOk = true
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
isOk = true
|
||||
return reader, nil
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
Reference in New Issue
Block a user