feat: Add cache to sthttp

This commit is contained in:
Felicitas Pojtinger
2021-12-19 02:56:13 +01:00
parent bb1f6cce43
commit 0948b69385
2 changed files with 29 additions and 31 deletions

View File

@@ -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())
}

View File

@@ -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),
),
),
),