42 lines
935 B
Go
42 lines
935 B
Go
//go:build ignore
|
|
|
|
package main
|
|
|
|
func ListenAndServe(addr string, filesystem fs.FS) error {
|
|
styx.HandlerFunc(func(s *styx.Session) {
|
|
for s.Next() {
|
|
switch msg := s.Request.(type) {
|
|
case styx.Twalk:
|
|
msg.Rwalk(fs.Stat(filesystem, msg.Path()))
|
|
case styx.Topen:
|
|
msg.Ropen(filesystem.Open(msg.Path()))
|
|
case styx.Tstat:
|
|
msg.Rstat(fs.Stat(filesystem, msg.Path()))
|
|
}
|
|
}
|
|
},
|
|
)
|
|
}
|
|
|
|
type FS struct {
|
|
meshFile
|
|
}
|
|
|
|
type meshFile struct {
|
|
}
|
|
|
|
type meshFileInfo struct {
|
|
bufio.Reader
|
|
time.Time
|
|
}
|
|
|
|
func (f meshFileInfo) Name() string { return "mesh" }
|
|
func (f meshFileInfo) Size() int64 { return f.Reader.Size() }
|
|
func (f meshFileInfo) Mode() fs.FileMode { return fs.ModePerm }
|
|
func (f meshFileInfo) ModTime() time.Time { return f.Time }
|
|
func (f meshFileInfo) IsDir() bool { return false }
|
|
func (f meshFileInfo) Sys() any { return nil }
|
|
|
|
func (f meshFile) Stat() (fs.FileInfo, error) {
|
|
}
|