123456789101112131415161718192021222324252627282930313233343536373839 |
- package libbox
- import (
- "encoding/binary"
- "io"
- E "github.com/sagernet/sing/common/exceptions"
- "github.com/sagernet/sing/common/rw"
- )
- func readError(reader io.Reader) error {
- var hasError bool
- err := binary.Read(reader, binary.BigEndian, &hasError)
- if err != nil {
- return err
- }
- if hasError {
- errorMessage, err := rw.ReadVString(reader)
- if err != nil {
- return err
- }
- return E.New(errorMessage)
- }
- return nil
- }
- func writeError(writer io.Writer, wErr error) error {
- err := binary.Write(writer, binary.BigEndian, wErr != nil)
- if err != nil {
- return err
- }
- if wErr != nil {
- err = rw.WriteVString(writer, wErr.Error())
- if err != nil {
- return err
- }
- }
- return nil
- }
|