lib9p

Go 9P library.
Log | Files | Refs | LICENSE

commit e866fb189a99f3d9b45449bc436f7fa5453d8a8c
parent 25d431a6c23ee49bd0d0fe11748caa3a5e8e72ed
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Thu, 26 Oct 2023 07:43:41 +0900

move functions

Diffstat:
Mfcall.go | 22++++------------------
Mparse.go | 19+++++++++++++++++++
Mserver.go | 2+-
3 files changed, 24 insertions(+), 19 deletions(-)

diff --git a/fcall.go b/fcall.go @@ -2,9 +2,9 @@ package lib9p import ( "fmt" - "io" ) +// Message types defined by 9P. type MsgType uint8 const ( @@ -45,6 +45,9 @@ const ( // In Plan9, this const is 24. const IOHDRSZ = 23 +// The tag used by version messages. +// The client can use it, when establishing a connection, to +// override tag matching in version messages. const NOTAG = ^uint16(0) // Msg represents any kind of message of 9P. @@ -63,23 +66,6 @@ type Msg interface { String() string } -func send(msg Msg, w io.Writer) error { - if _, err := w.Write(msg.marshal()); err != nil { - return fmt.Errorf("write: %v", err) - } - return nil -} - -func recv(r io.Reader) (Msg, error) { - b, err := read9PMsg(r) - if err == io.EOF { - return nil, err - } else if err != nil { - return nil, fmt.Errorf("read9PMsg: %v", err) - } - return unmarshal(b) -} - // bufMsg is Msg with just an array of bytes. type bufMsg []byte diff --git a/parse.go b/parse.go @@ -94,6 +94,25 @@ func unmarshal(buf []byte) (Msg, error) { } } +// send send msg to w +func send(msg Msg, w io.Writer) error { + if _, err := w.Write(msg.marshal()); err != nil { + return fmt.Errorf("write: %v", err) + } + return nil +} + +// recv recievs 9P messages from r. +func recv(r io.Reader) (Msg, error) { + b, err := read9PMsg(r) + if err == io.EOF { + return nil, err + } else if err != nil { + return nil, fmt.Errorf("read9PMsg: %v", err) + } + return unmarshal(b) +} + // Gbit16 reads b as 2-byte long little endian unsigned integer and // returns the result func gbit16(b []byte) uint16 { return binary.LittleEndian.Uint16(b[0:2]) } diff --git a/server.go b/server.go @@ -738,7 +738,7 @@ func sClunk(ctx context.Context, s *Server, r *Req) { func rClunk(r *Req, err error) { if err != nil { - panic("err in clunk: %v", err) + panic(fmt.Errorf("err in clunk: %v", err)) } }