lib9p

Go 9P library.
Log | Files | Refs

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:
Mclient2.go | 30+++++++++++++++++-------------
Mreq_test.go | 2+-
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)