feat: Add cache to sthttp
This commit is contained in:
@@ -94,34 +94,25 @@ func main() {
|
||||
logger.PrintHeader,
|
||||
)
|
||||
|
||||
var srv *ftpserver.FtpServer
|
||||
var fs afero.Fs
|
||||
if *enableCache {
|
||||
|
||||
cache := afero.NewMemMapFs()
|
||||
|
||||
srv = ftpserver.NewFtpServer(
|
||||
&FTPServer{
|
||||
Settings: &ftpserver.Settings{
|
||||
ListenAddr: *laddr,
|
||||
},
|
||||
FileSystem: afero.NewCacheOnReadFs(afero.NewBasePathFs(stfs, *dir), cache, time.Hour),
|
||||
},
|
||||
)
|
||||
fs = afero.NewCacheOnReadFs(afero.NewBasePathFs(stfs, *dir), afero.NewMemMapFs(), time.Hour)
|
||||
} else {
|
||||
srv = ftpserver.NewFtpServer(
|
||||
&FTPServer{
|
||||
Settings: &ftpserver.Settings{
|
||||
ListenAddr: *laddr,
|
||||
},
|
||||
FileSystem: afero.NewBasePathFs(stfs, *dir),
|
||||
},
|
||||
)
|
||||
fs = afero.NewBasePathFs(stfs, *dir)
|
||||
}
|
||||
|
||||
log.Println("Listening on", *laddr)
|
||||
|
||||
srv := ftpserver.NewFtpServer(
|
||||
&FTPServer{
|
||||
Settings: &ftpserver.Settings{
|
||||
ListenAddr: *laddr,
|
||||
},
|
||||
FileSystem: fs,
|
||||
},
|
||||
)
|
||||
srv.Logger = &Logger{}
|
||||
|
||||
log.Println("Listening on", *laddr)
|
||||
|
||||
panic(srv.ListenAndServe())
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/pojntfx/stfs/internal/fs"
|
||||
"github.com/pojntfx/stfs/internal/handlers"
|
||||
@@ -28,6 +29,7 @@ func main() {
|
||||
drive := flag.String("drive", "/dev/nst0", "Tape or tar file to use")
|
||||
metadata := flag.String("metadata", filepath.Join(home, ".local", "share", "stbak", "var", "lib", "stbak", "metadata.sqlite"), "Metadata database to use")
|
||||
recordSize := flag.Int("recordSize", 20, "Amount of 512-bit blocks per record")
|
||||
enableCache := flag.Bool("cache", true, "Enable in-memory caching")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
@@ -74,18 +76,23 @@ func main() {
|
||||
logger.PrintHeaderEvent,
|
||||
)
|
||||
|
||||
stfs := afero.NewHttpFs(
|
||||
fs.NewFileSystem(
|
||||
ops,
|
||||
stfs := fs.NewFileSystem(
|
||||
ops,
|
||||
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
config.MetadataConfig{
|
||||
Metadata: metadataPersister,
|
||||
},
|
||||
|
||||
logger.PrintHeader,
|
||||
),
|
||||
logger.PrintHeader,
|
||||
)
|
||||
|
||||
var fs afero.Fs
|
||||
if *enableCache {
|
||||
fs = afero.NewCacheOnReadFs(afero.NewBasePathFs(stfs, *dir), afero.NewMemMapFs(), time.Hour)
|
||||
} else {
|
||||
fs = afero.NewBasePathFs(stfs, *dir)
|
||||
}
|
||||
|
||||
log.Println("Listening on", *laddr)
|
||||
|
||||
panic(
|
||||
@@ -93,7 +100,7 @@ func main() {
|
||||
*laddr,
|
||||
handlers.PanicHandler(
|
||||
http.FileServer(
|
||||
stfs.Dir(*dir),
|
||||
afero.NewHttpFs(fs),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user