commit 37625511b5c1e1df78a7b66e0ce5299e0a5ae486
parent 4997613a667a192c3c1646974aac63b29dd88485
Author: Matsuda Kenji <info@mtkn.jp>
Date: Fri, 28 Jul 2023 17:06:04 +0900
change RAuth to struct
Diffstat:
3 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/fcall.go b/fcall.go
@@ -244,13 +244,35 @@ func (msg TAuth) String() string {
msg.Tag(), afid, msg.UName(), msg.AName())
}
-type RAuth []byte
+type RAuth struct {
+ tag uint16
+ aqid *Qid
+}
-func (msg RAuth) Size() uint32 { return gbit32(msg[0:4]) }
-func (msg RAuth) Type() MsgType { return MsgType(msg[4]) }
-func (msg RAuth) Tag() uint16 { return gbit16(msg[5:7]) }
-func (msg RAuth) AQid() *Qid { return newQid(msg[7:20]) }
-func (msg RAuth) conv2M() []byte { return []byte(msg)[:msg.Size()] }
+func newRAuth(buf []byte) *RAuth { panic("not implemented") }
+func (msg RAuth) Size() uint32 { return 4+1+2+13 }
+func (msg RAuth) Type() MsgType { return Rauth }
+func (msg RAuth) Tag() uint16 { return msg.tag }
+func (msg RAuth) AQid() *Qid { return msg.aqid }
+func (msg RAuth) conv2M() []byte {
+ cur := 0
+ buf := make([]byte, msg.Size())
+ pbit32(buf[cur:cur+4], msg.Size())
+ cur += 4
+ buf[cur] = uint8(Rauth)
+ cur += 1
+ pbit16(buf[cur:cur+2], msg.Tag())
+ cur += 2
+ qid := msg.AQid().conv2M()
+ for i := 0; i < len(qid); i++ {
+ buf[cur+i] = qid[i]
+ }
+ cur += len(qid)
+ if cur != len(buf) {
+ panic("length of buf and cursor position don't match")
+ }
+ return buf
+}
func (msg RAuth) String() string {
return fmt.Sprintf("Tauth tag %d aqid %v",
msg.Tag(), msg.AQid())
diff --git a/parse.go b/parse.go
@@ -41,7 +41,7 @@ func unmarshal(buf []byte) (Msg, error) {
case Tauth:
return newTAuth(buf), nil
case Rauth:
- return RAuth(buf), nil
+ return newRAuth(buf), nil
case Tattach:
return TAttach(buf), nil
case Rattach:
diff --git a/server.go b/server.go
@@ -262,7 +262,7 @@ func respond(r *Req, err error) {
}
case *RVersion:
rVersion(r, err)
- case RAuth:
+ case *RAuth:
rAuth(r, err)
case RAttach:
rAttach(r, err)