commit 702c8878d9bc6959e312163086c02052547819f5
parent b292ad05b96626b2ae1bc70e0e926d2c93ccc9a5
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sun, 31 Dec 2023 15:58:30 +0900
update cmd and
 tests
Diffstat:
8 files changed, 45 insertions(+), 56 deletions(-)
diff --git a/client/client_test.go b/client/client_test.go
@@ -44,9 +44,9 @@ func TestTransaction(t *testing.T) {
 func TestClient2(t *testing.T) {
 	cr, sw := io.Pipe()
 	sr, cw := io.Pipe()
-	server := lib9p.NewServer(testfs.Fsys, mSize, sr, sw)
+	server := lib9p.NewServer(testfs.Fsys)
 	//server.Chatty()
-	go server.Serve(context.Background())
+	go server.Serve(context.Background(), sr, sw)
 	fs, err := client.Mount(cr, cw, "kenji", "")
 	if err != nil {
 		t.Errorf("mount: %v", err)
diff --git a/client/file_test.go b/client/file_test.go
@@ -21,9 +21,9 @@ type FS struct {
 func mountTestFS(t *testing.T) *FS {
 	cr, sw := io.Pipe()
 	sr, cw := io.Pipe()
-	s := lib9p.NewServer(testfs.Fsys, 8*1024, sr, sw)
+	s := lib9p.NewServer(testfs.Fsys)
 	ctx, cancel := context.WithCancel(context.Background())
-	go s.Serve(ctx)
+	go s.Serve(ctx, sr, sw)
 	fsys, err := client.Mount(cr, cw, "ken", "")
 	if err != nil {
 		t.Fatal(err)
diff --git a/cmd/diskfs/main.go b/cmd/diskfs/main.go
@@ -60,6 +60,10 @@ func main() {
 	if err != nil {
 		log.Fatalf("open file tree.")
 	}
+	s := lib9p.NewServer(disk)
+	if *dFlag {
+		s.Chatty()
+	}
 L:
 	for {
 		conn, err := listener.Accept()
@@ -73,21 +77,15 @@ L:
 			}
 		}
 		wg.Add(1)
-		go handle(ctx, wg, conn, disk)
+		go func () {
+			defer conn.Close()
+			defer wg.Done()
+			s.Serve(ctx, conn, conn)
+		}()
 	}
 	wg.Wait()
 }
 
-func handle(ctx context.Context, wg *sync.WaitGroup, conn net.Conn, disk *diskfs.FS) {
-	srv := lib9p.NewServer(disk, 8*1024, conn, conn)
-	if *dFlag {
-		srv.Chatty()
-	}
-	srv.Serve(ctx)
-	conn.Close()
-	wg.Done()
-}
-
 func runSignalHandler() context.Context {
 	quit := make(chan os.Signal)
 	signal.Notify(quit, os.Interrupt)
diff --git a/cmd/iofs/main.go b/cmd/iofs/main.go
@@ -31,24 +31,21 @@ func main() {
 	if err != nil {
 		log.Fatalf("listen tcp: %v", err)
 	}
-
+	dir := os.DirFS(flag.Arg(0))
+	fsys := iofs.NewFS(dir)
+	s := lib9p.NewServer(fsys)
+	if *dFlag {
+		s.Chatty()
+	}
 	for {
 		conn, err := listener.Accept()
 		if err != nil {
 			log.Printf("accept connection: %v", err)
 			continue
 		}
-		dir := os.DirFS(flag.Arg(0))
-		fsys := iofs.NewFS(dir)
-		go handle(conn, fsys)
-	}
-}
-
-func handle(conn net.Conn, disk *iofs.FS) {
-	srv := lib9p.NewServer(disk, 8*1024, conn, conn)
-	if *dFlag {
-		srv.Chatty()
+		go func() {
+			defer conn.Close()
+			s.Serve(context.TODO(), conn, conn)
+		}()
 	}
-	srv.Serve(context.Background())
-	conn.Close()
 }
diff --git a/cmd/numfs/main.go b/cmd/numfs/main.go
@@ -198,23 +198,19 @@ func main() {
 	if err != nil {
 		log.Fatalf("listen tcp: %v", err)
 	}
-
+	s := lib9p.NewServer(fsys)
+	if *dFlag {
+		s.Chatty()
+	}
 	for {
 		conn, err := listener.Accept()
 		if err != nil {
 			log.Printf("accept connection: %v", err)
 			continue
 		}
-
-		go handle(conn, fsys)
-	}
-}
-
-func handle(conn net.Conn, fs *numFS) {
-	srv := lib9p.NewServer(fs, 8*1024, conn, conn)
-	if *dFlag {
-		srv.Chatty()
+		go func() {
+			defer conn.Close()
+			s.Serve(context.TODO(), conn, conn)
+		}()
 	}
-	srv.Serve(context.Background())
-	conn.Close()
 }
diff --git a/cmd/semfs/main.go b/cmd/semfs/main.go
@@ -24,21 +24,19 @@ func main() {
 		log.Fatalf("listen tcp: %v", err)
 	}
 	fsys := &semFS{semfiles: make(map[int]*semFile)}
+	s := lib9p.NewServer(fsys)
+	if *dFlag {
+		s.Chatty()
+	}
 	for {
 		conn, err := listener.Accept()
 		if err != nil {
 			log.Printf("accept connection: %v", err)
 			continue
 		}
-		go handle(conn, fsys)
-	}
-}
-
-func handle(conn net.Conn, fsys *semFS) {
-	srv := lib9p.NewServer(fsys, 8*1024, conn, conn)
-	if *dFlag {
-		srv.Chatty()
+		go func() {
+			defer conn.Close()
+			s.Serve(context.TODO(), conn, conn)
+		}()
 	}
-	srv.Serve(context.Background())
-	conn.Close()
 }
diff --git a/diskfs/file_test.go b/diskfs/file_test.go
@@ -23,8 +23,8 @@ func BenchmarkRead(b *testing.B) {
 	if err != nil {
 		b.Fatalf("open dir: %v", err)
 	}
-	s := lib9p.NewServer(disk, 8*1024, sr, sw)
-	go s.Serve(ctx)
+	s := lib9p.NewServer(disk)
+	go s.Serve(ctx, sr, sw)
 	c := client.NewClient(8*1024, "kenji", cr, cw)
 	defer c.Stop()
 	_, err = c.Attach(ctx, ^uint16(0), 0, lib9p.NOFID, "kenji", "")
diff --git a/diskfs/stat_unix_test.go b/diskfs/stat_unix_test.go
@@ -26,8 +26,8 @@ func BenchmarkGID(b *testing.B) {
 	if err != nil {
 		b.Fatalf("open dir: %v", err)
 	}
-	s := lib9p.NewServer(disk, 8*1024, sr, sw)
-	go s.Serve(ctx)
+	s := lib9p.NewServer(disk)
+	go s.Serve(ctx, sr, sw)
 	c := client.NewClient(8*1024, "kenji", cr, cw)
 	defer c.Stop()
 	_, err = c.Attach(ctx, ^uint16(0), 0, lib9p.NOFID, "kenji", "")
@@ -55,8 +55,8 @@ func TestChgrp(t *testing.T) {
 	if err != nil {
 		t.Fatalf("open dir: %v", err)
 	}
-	s := lib9p.NewServer(disk, 8*1024, sr, sw)
-	go s.Serve(ctx)
+	s := lib9p.NewServer(disk)
+	go s.Serve(ctx, sr, sw)
 	c := client.NewClient(8*1024, "kenji", cr, cw)
 	defer c.Stop()
 	_, err = c.Attach(ctx, ^uint16(0), 0, lib9p.NOFID, "kenji", "")