commit 1af9ed9209e9b57bd6ba0d5a9898d2a0160d751f
parent 6791fa78b62100d2477e904f0c6d9002b3a1d961
Author: Matsuda Kenji <info@mtkn.jp>
Date: Sat, 21 Oct 2023 08:40:03 +0900
update client2 and file
Diffstat:
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]