43 lines
821 B
Go
43 lines
821 B
Go
package kubelwagen
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"time"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func Serve(hostport string, dir string, opts *WsFsOpts) {
|
|
closer := make(chan bool)
|
|
|
|
signalChan := make(chan os.Signal, 1)
|
|
signal.Notify(signalChan, os.Interrupt)
|
|
|
|
go func() {
|
|
for range signalChan {
|
|
fmt.Println("\nReceived an interrupt, disconnecting...")
|
|
close(closer)
|
|
}
|
|
}()
|
|
|
|
req := make(chan RequestCallback, 5)
|
|
|
|
go func(dir string, closer chan bool) {
|
|
err := serveFuse(dir, req, *opts, closer)
|
|
if err != nil {
|
|
logrus.Fatalf("Error serving FUSE: %s", err)
|
|
}
|
|
}(dir, closer)
|
|
|
|
go func(hostport string, closer chan bool) {
|
|
err := serveHTTP(hostport, req, closer)
|
|
if err != nil {
|
|
logrus.Fatalf("Error serving HTTP: %s", err)
|
|
}
|
|
}(hostport, closer)
|
|
|
|
<-closer
|
|
time.Sleep(2 * time.Second)
|
|
}
|