Skip to content

Commit

Permalink
read message from io
Browse files Browse the repository at this point in the history
  • Loading branch information
baarayy committed May 16, 2024
1 parent 3ade3c0 commit 64a70d9
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion message/message.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package message

import "encoding/binary"
import (
"encoding/binary"
"io"
)

type messageID uint8

Expand Down Expand Up @@ -32,3 +35,26 @@ func (m *Message) Serialize() []byte {
copy(buf[5:], m.payload)
return buf
}

func Read(r io.Reader) (*Message, error) {
lengthBuf := make([]byte, 4)
_, err := io.ReadFull(r, lengthBuf)
if err != nil {
return nil, err
}
length := binary.BigEndian.Uint32(lengthBuf)

if length == 0 {
return nil, nil
}
messageBuf := make([]byte, length)
_, err = io.ReadFull(r, messageBuf)
if err != nil {
return nil, err
}
m := &Message{
ID: messageID(messageBuf[0]),
payload: messageBuf[1:],
}
return m, nil
}

0 comments on commit 64a70d9

Please sign in to comment.