MCPcopy
hub / github.com/syncthing/syncthing / WriteMessage

Function WriteMessage

lib/relay/protocol/protocol.go:24–74  ·  view source on GitHub ↗
(w io.Writer, message interface{})

Source from the content-addressed store, hash-verified

22)
23
24func 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
76func ReadMessage(r io.Reader) (interface{}, error) {
77 var header header

Callers 6

GetInvitationFromRelayFunction · 0.92
JoinSessionFunction · 0.92
serveMethod · 0.92
joinMethod · 0.92
sessionConnectionHandlerFunction · 0.92

Calls 4

MarshalXDRMethod · 0.95
NewMethod · 0.65
MarshalXDRMethod · 0.45
WriteMethod · 0.45

Tested by

no test coverage detected