commit 9841e7d35d1bc34b2d515a86a9bb086aa8f794cb
parent d5ed46010c01c045ca6f35aba4b81ef019337e0a
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 22 Jan 2024 08:56:01 +0900
delete fPool from client.Client and move it to client.FS
Diffstat:
4 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/client/client.go b/client/client.go
@@ -21,18 +21,12 @@ type Client struct {
 	// Uname is used to communicate with a server.
 	uname string
 
-	// FPool is the filePool which hold the list of outstanding files.
-	fPool *filePool
-
 	// RPool is the set of all outstanding requests.
 	rPool *reqPool
 
 	// Txc is used to send a reqest to the multiplexer goroutine
 	txc chan<- *req
 
-	// Root is the root file of the file system.
-	root *File
-
 	// Wg is the WaitGroup of all goroutines evoked by this client and its
 	// descendants.
 	wg *sync.WaitGroup
@@ -52,7 +46,6 @@ func NewClient(ctx context.Context, mSize uint32, uname string, r io.Reader, w i
 		msize:     mSize,
 		mSizeLock: new(sync.Mutex),
 		uname:     uname,
-		fPool:     newFilePool(),
 		rPool:     newReqPool(),
 		wg:        new(sync.WaitGroup),
 		done:      ctx.Done(),
diff --git a/client/client_test.go b/client/client_test.go
@@ -59,7 +59,6 @@ func newClientForTest(ctx context.Context, msize uint32, uname string) (*Client,
 		msize:     msize,
 		mSizeLock: new(sync.Mutex),
 		uname:     uname,
-		fPool:     newFilePool(),
 		rPool:     newReqPool(),
 		wg:        new(sync.WaitGroup),
 	}
diff --git a/client/file.go b/client/file.go
@@ -53,7 +53,7 @@ func (cf *File) Close() error {
 	}
 	err = cf.fs.c.Clunk(tag, cf.fid)
 	cf.fs.tPool.delete(tag)
-	cf.fs.c.fPool.delete(cf.fid)
+	cf.fs.fPool.delete(cf.fid)
 	cf.fid = lib9p.NOFID
 	return err
 }
diff --git a/client/fs.go b/client/fs.go
@@ -13,7 +13,9 @@ import (
 // FS represents the file system the client imports.
 type FS struct {
 	c     *Client
+	root  *File
 	tPool *tagPool
+	fPool *filePool
 }
 
 // OpenFile opens the file named name in fsys with omode.
@@ -66,7 +68,7 @@ func CleanPath(name string) string {
 // returns the corresponding file.
 // returned file is not open.
 func (fsys *FS) walkFile(name string) (*File, error) {
-	f, err := fsys.c.fPool.add()
+	f, err := fsys.fPool.add()
 	if err != nil {
 		return nil, fmt.Errorf("add file: %v", err)
 	}
@@ -78,13 +80,13 @@ func (fsys *FS) walkFile(name string) (*File, error) {
 	if err != nil {
 		return nil, err
 	}
-	wqid, err := fsys.c.Walk(tag, fsys.c.root.fid, f.fid, wname)
+	wqid, err := fsys.c.Walk(tag, fsys.root.fid, f.fid, wname)
 	fsys.tPool.delete(tag)
 	if err != nil {
 		return nil, fmt.Errorf("walk: %v", err)
 	}
 	if len(wqid) < len(wname) {
-		fsys.c.fPool.delete(f.fid)
+		fsys.fPool.delete(f.fid)
 		return nil, fmt.Errorf("not found")
 	}
 	var qid lib9p.Qid
@@ -117,6 +119,7 @@ func Mount(ctx context.Context, r io.Reader, w io.Writer, uname, aname string) (
 	cfs := &FS{
 		c:     NewClient(ctx0, mSize, uname, r, w),
 		tPool: newTagPool(),
+		fPool: newFilePool(),
 	}
 	defer func() {
 		if err != nil {
@@ -134,7 +137,7 @@ func Mount(ctx context.Context, r io.Reader, w io.Writer, uname, aname string) (
 		cfs.c.setMSize(rmSize)
 	}
 	// TODO: auth
-	f, err := cfs.c.fPool.add()
+	f, err := cfs.fPool.add()
 	if err != nil {
 		return nil, fmt.Errorf("add file: %v", err)
 	}
@@ -151,6 +154,6 @@ func Mount(ctx context.Context, r io.Reader, w io.Writer, uname, aname string) (
 	f.path = "."
 	f.qid = qid
 	f.fs = cfs
-	cfs.c.root = f
+	cfs.root = f
 	return cfs, nil
 }