本文整理匯總了Golang中github.com/mortdeus/go9p/srv.Req.Respond方法的典型用法代碼示例。如果您正苦於以下問題:Golang Req.Respond方法的具體用法?Golang Req.Respond怎麽用?Golang Req.Respond使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/mortdeus/go9p/srv.Req
的用法示例。
在下文中一共展示了Req.Respond方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Read
func (*Ufs) Read(req *srv.Req) {
fid := req.Fid.Aux.(*Fid)
tc := req.Tc
rc := req.Rc
err := fid.stat()
if err != nil {
req.RespondError(err)
return
}
go9p.InitRread(rc, tc.Count)
var count int
var e error
if fid.st.IsDir() {
b := rc.Data
if tc.Offset == 0 {
fid.file.Close()
fid.file, e = os.OpenFile(fid.path, omode2uflags(req.Fid.Omode), 0)
if e != nil {
req.RespondError(toError(e))
return
}
}
for len(b) > 0 {
if fid.dirs == nil {
fid.dirs, e = fid.file.Readdir(16)
if e != nil && e != io.EOF {
req.RespondError(toError(e))
return
}
if len(fid.dirs) == 0 {
break
}
}
var i int
for i = 0; i < len(fid.dirs); i++ {
path := fid.path + "/" + fid.dirs[i].Name()
st := dir2Dir(path, fid.dirs[i], req.Conn.Dotu, req.Conn.Srv.Upool)
sz := go9p.PackDir(st, b, req.Conn.Dotu)
if sz == 0 {
break
}
b = b[sz:]
count += sz
}
if i < len(fid.dirs) {
fid.dirs = fid.dirs[i:]
break
} else {
fid.dirs = nil
}
}
} else {
count, e = fid.file.ReadAt(rc.Data, int64(tc.Offset))
if e != nil && e != io.EOF {
req.RespondError(toError(e))
return
}
}
go9p.SetRreadCount(rc, uint32(count))
req.Respond()
}