mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-03 13:10:42 +00:00
30 lines
712 B
Go
30 lines
712 B
Go
package pb
|
|
|
|
import (
|
|
"ehang.io/nps/lib/common"
|
|
"github.com/golang/protobuf/proto"
|
|
"github.com/pkg/errors"
|
|
"io"
|
|
)
|
|
|
|
// WriteMessage is used to write a message to writer
|
|
func WriteMessage(w io.Writer, message proto.Message) (int, error) {
|
|
b, err := proto.Marshal(message)
|
|
if err != nil {
|
|
return 0, errors.Wrap(err, "proto Marshal")
|
|
}
|
|
n, err := common.WriteLenBytes(w, b)
|
|
return n, err
|
|
}
|
|
|
|
// ReadMessage is used to read a message from reader
|
|
func ReadMessage(r io.Reader, message proto.Message) (int, error) {
|
|
message.Reset()
|
|
b := make([]byte, 4096)
|
|
n, err := common.ReadLenBytes(r, b)
|
|
if err != nil {
|
|
return 0, errors.Wrap(err, "read proto message")
|
|
}
|
|
return n, proto.Unmarshal(b[:n], message)
|
|
}
|