commit c23d5dff3f7930f2c989529400bc973a4bdd7ce7
parent 5ba298f03360d8dcb1ad234b4c396aa481a6a3ea
Author: Matsuda Kenji <info@mtkn.jp>
Date: Mon, 23 Oct 2023 15:39:31 +0900
divide Client into Client and ClientFS
Diffstat:
2 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/client2.go b/client2.go
@@ -9,17 +9,21 @@ import (
"strings"
)
-func (c *Client) OpenFile(name string, omode OpenMode, perm fs.FileMode) (File, error) {
- f, err := c.walkFile(name)
+type ClientFS struct {
+ c *Client
+}
+
+func (fsys *ClientFS) OpenFile(name string, omode OpenMode, perm fs.FileMode) (File, error) {
+ f, err := fsys.walkFile(name)
if err != nil {
return nil, fmt.Errorf("walkFile: %v", err)
}
- tag, err := c.tPool.add()
+ tag, err := fsys.c.tPool.add()
if err != nil {
return nil, err
}
- qid, iounit, err := c.Open(context.TODO(), tag, f.fid.fid, omode)
- c.tPool.delete(tag)
+ qid, iounit, err := fsys.c.Open(context.TODO(), tag, f.fid.fid, omode)
+ fsys.c.tPool.delete(tag)
if err != nil {
f.Close()
return nil, fmt.Errorf("open: %v", err)
@@ -30,8 +34,8 @@ func (c *Client) OpenFile(name string, omode OpenMode, perm fs.FileMode) (File,
return f, nil
}
-func (c *Client) walkFile(name string) (*ClientFile, error) {
- fid, err := c.fPool.add()
+func (fsys *ClientFS) walkFile(name string) (*ClientFile, error) {
+ fid, err := fsys.c.fPool.add()
if err != nil {
return nil, fmt.Errorf("add fid: %v", err)
}
@@ -39,12 +43,12 @@ func (c *Client) walkFile(name string) (*ClientFile, error) {
if name != "." {
wname = strings.Split(path.Clean(name), "/")
}
- tag, err := c.tPool.add()
+ tag, err := fsys.c.tPool.add()
if err != nil {
return nil, err
}
- wqid, err := c.Walk(context.TODO(), tag, c.rootFid.fid, fid.fid, wname)
- c.tPool.delete(tag)
+ wqid, err := fsys.c.Walk(context.TODO(), tag, fsys.c.rootFid.fid, fid.fid, wname)
+ fsys.c.tPool.delete(tag)
if err != nil {
return nil, fmt.Errorf("walk: %v", err)
}
@@ -61,13 +65,13 @@ func (c *Client) walkFile(name string) (*ClientFile, error) {
path: name,
fid: fid,
qid: qid,
- client: c,
+ client: fsys.c,
}
fid.file = f
return f, nil
}
-func Mount(r io.Reader, w io.Writer, uname, aname string) (fs *Client, err error) {
+func Mount(r io.Reader, w io.Writer, uname, aname string) (fs *ClientFS, err error) {
var (
mSize uint32 = 8192
version = "9P2000"
@@ -106,5 +110,5 @@ func Mount(r io.Reader, w io.Writer, uname, aname string) (fs *Client, err error
}
c.rootFid = fid
- return c, nil
+ return &ClientFS{c: c}, nil
}
diff --git a/req_test.go b/req_test.go
@@ -21,7 +21,7 @@ func TestFlush(t *testing.T) {
defer cr.Close()
defer sw.Close()
s := NewServer(fsys, mSize, sr, sw)
- s.Chatty()
+ //s.Chatty()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
go s.Serve(ctx)