(w io.Writer, message interface{})
| 22 | ) |
| 23 | |
| 24 | func WriteMessage(w io.Writer, message interface{}) error { |
| 25 | header := header{ |
| 26 | magic: magic, |
| 27 | } |
| 28 | |
| 29 | var payload []byte |
| 30 | var err error |
| 31 | |
| 32 | switch msg := message.(type) { |
| 33 | case Ping: |
| 34 | payload, err = msg.MarshalXDR() |
| 35 | header.messageType = messageTypePing |
| 36 | case Pong: |
| 37 | payload, err = msg.MarshalXDR() |
| 38 | header.messageType = messageTypePong |
| 39 | case JoinRelayRequest: |
| 40 | payload, err = msg.MarshalXDR() |
| 41 | header.messageType = messageTypeJoinRelayRequest |
| 42 | case JoinSessionRequest: |
| 43 | payload, err = msg.MarshalXDR() |
| 44 | header.messageType = messageTypeJoinSessionRequest |
| 45 | case Response: |
| 46 | payload, err = msg.MarshalXDR() |
| 47 | header.messageType = messageTypeResponse |
| 48 | case ConnectRequest: |
| 49 | payload, err = msg.MarshalXDR() |
| 50 | header.messageType = messageTypeConnectRequest |
| 51 | case SessionInvitation: |
| 52 | payload, err = msg.MarshalXDR() |
| 53 | header.messageType = messageTypeSessionInvitation |
| 54 | case RelayFull: |
| 55 | payload, err = msg.MarshalXDR() |
| 56 | header.messageType = messageTypeRelayFull |
| 57 | default: |
| 58 | err = errors.New("unknown message type") |
| 59 | } |
| 60 | |
| 61 | if err != nil { |
| 62 | return err |
| 63 | } |
| 64 | |
| 65 | header.messageLength = int32(len(payload)) |
| 66 | |
| 67 | headerpayload, err := header.MarshalXDR() |
| 68 | if err != nil { |
| 69 | return err |
| 70 | } |
| 71 | |
| 72 | _, err = w.Write(append(headerpayload, payload...)) |
| 73 | return err |
| 74 | } |
| 75 | |
| 76 | func ReadMessage(r io.Reader) (interface{}, error) { |
| 77 | var header header |
no test coverage detected