lib9p

Go 9P library.
Log | Files | Refs

commit 1af9ed9209e9b57bd6ba0d5a9898d2a0160d751f
parent 6791fa78b62100d2477e904f0c6d9002b3a1d961
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sat, 21 Oct 2023 08:40:03 +0900

update client2 and file

Diffstat:
Mclient2.go | 23+++++++++++++++++++----
Mfile.go | 21++++++++++++++++++---
2 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/client2.go b/client2.go @@ -14,7 +14,12 @@ func (c *Client) OpenFile(name string, omode OpenMode, perm fs.FileMode) (File, if err != nil { return nil, fmt.Errorf("walkFile: %v", err) } - qid, iounit, err := c.Open(context.TODO(), f.fid.fid, omode) + tag, err := 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) if err != nil { f.Close() return nil, fmt.Errorf("open: %v", err) @@ -34,7 +39,12 @@ func (c *Client) walkFile(name string) (*ClientFile, error) { if name != "." { wname = strings.Split(path.Clean(name), "/") } - wqid, err := c.Walk(context.TODO(), c.rootFid.fid, fid.fid, wname) + tag, err := 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) if err != nil { return nil, fmt.Errorf("walk: %v", err) } @@ -69,7 +79,7 @@ func Mount(r io.Reader, w io.Writer, uname, aname string) (fs *Client, err error c.Stop() } }() - rmSize, rver, err := c.Version(ctx, 0, mSize, version) + rmSize, rver, err := c.Version(ctx, NOTAG, mSize, version) if err != nil { return nil, fmt.Errorf("version: %v", err) } @@ -85,7 +95,12 @@ func Mount(r io.Reader, w io.Writer, uname, aname string) (fs *Client, err error if err != nil { return nil, fmt.Errorf("add fid: %v", err) } - _, err = c.Attach(ctx, fid.fid, NOFID, uname, aname) + tag, err := c.tPool.add() + if err != nil { + return nil, err + } + _, err = c.Attach(ctx, tag, fid.fid, NOFID, uname, aname) + c.tPool.delete(tag) if err != nil { return nil, fmt.Errorf("attach: %v", err) } diff --git a/file.go b/file.go @@ -56,7 +56,12 @@ type ClientFile struct { } func (cf *ClientFile) Stat() (*FileInfo, error) { - st, err := cf.client.Stat(context.TODO(), cf.fid.fid) + tag, err := cf.client.tPool.add() + if err != nil { + return nil, err + } + st, err := cf.client.Stat(context.TODO(), tag, cf.fid.fid) + cf.client.tPool.delete(tag) if err != nil { return nil, err } @@ -65,7 +70,12 @@ func (cf *ClientFile) Stat() (*FileInfo, error) { // Don't use closed file. func (cf *ClientFile) Close() error { - err := cf.client.Clunk(context.TODO(), cf.fid.fid) + tag, err := cf.client.tPool.add() + if err != nil { + return err + } + err = cf.client.Clunk(context.TODO(), tag, cf.fid.fid) + cf.client.tPool.delete(tag) cf.client.fPool.delete(cf.fid.fid) cf.fid = nil return err @@ -90,7 +100,12 @@ func (cf *ClientFile) Read(b []byte) (int, error) { } else { c = count } - buf, err := cf.client.Read(context.TODO(), cf.fid.fid, cf.fid.offset, c) + tag, err := cf.client.tPool.add() + if err != nil { + return 0, err + } + buf, err := cf.client.Read(context.TODO(), tag, cf.fid.fid, cf.fid.offset, c) + cf.client.tPool.delete(tag) var i int for i = 0; i < len(buf); i++ { b[cur+i] = buf[i]