lib9p

Go 9P library.
Log | Files | Refs

commit 37625511b5c1e1df78a7b66e0ce5299e0a5ae486
parent 4997613a667a192c3c1646974aac63b29dd88485
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Fri, 28 Jul 2023 17:06:04 +0900

change RAuth to struct

Diffstat:
Mfcall.go | 34++++++++++++++++++++++++++++------
Mparse.go | 2+-
Mserver.go | 2+-
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)