-
Notifications
You must be signed in to change notification settings - Fork 4
/
legacy_packet.go
96 lines (84 loc) · 2.34 KB
/
legacy_packet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package rms
import (
"strconv"
"github.com/insolar/assured-ledger/ledger-core/network/hostnetwork/packet/types"
"github.com/insolar/assured-ledger/ledger-core/reference"
"github.com/insolar/assured-ledger/ledger-core/rms/legacyhost"
)
type LegacyHost = legacyhost.Host
func (p *Packet) SetRequest(request interface{}) {
var r isRequest_Request
switch t := request.(type) {
case *RPCRequest:
r = &Request_RPC{t}
case *PulseRequest:
r = &Request_Pulse{t}
case *BootstrapRequest:
r = &Request_Bootstrap{t}
case *AuthorizeRequest:
r = &Request_Authorize{t}
case *SignCertRequest:
r = &Request_SignCert{t}
case *UpdateScheduleRequest:
r = &Request_UpdateSchedule{t}
case *ReconnectRequest:
r = &Request_Reconnect{t}
default:
panic("Request payload is not a valid protobuf struct!")
}
p.Payload = &Packet_Request{Request: &Request{Request: r}}
}
func (p *Packet) SetResponse(response interface{}) {
var r isResponse_Response
switch t := response.(type) {
case *RPCResponse:
r = &Response_RPC{t}
case *BasicResponse:
r = &Response_Basic{t}
case *BootstrapResponse:
r = &Response_Bootstrap{t}
case *AuthorizeResponse:
r = &Response_Authorize{t}
case *SignCertResponse:
r = &Response_SignCert{t}
case *ErrorResponse:
r = &Response_Error{t}
case *UpdateScheduleResponse:
r = &Response_UpdateSchedule{t}
case *ReconnectResponse:
r = &Response_Reconnect{t}
default:
panic("Response payload is not a valid protobuf struct!")
}
p.Payload = &Packet_Response{Response: &Response{Response: r}}
}
func (p *Packet) GetType() types.PacketType {
// TODO: make p.Type of type PacketType instead of uint32
return types.PacketType(p.Type)
}
func (p *Packet) GetSender() reference.Global {
return p.Sender.NodeID
}
func (p *Packet) GetSenderHost() *legacyhost.Host {
return p.Sender
}
func (p *Packet) GetRequestID() types.RequestID {
return types.RequestID(p.RequestID)
}
func (p *Packet) IsResponse() bool {
return p.GetResponse() != nil
}
//nolint:goconst
func (p *Packet) DebugString() string {
if p == nil {
return "nil"
}
return `&Packet{` +
`Sender:` + p.Sender.String() + `,` +
`Receiver:` + p.Receiver.String() + `,` +
`RequestID:` + strconv.FormatUint(p.RequestID, 10) + `,` +
`TraceID:` + p.TraceID + `,` +
`Type:` + p.GetType().String() + `,` +
`IsResponse:` + strconv.FormatBool(p.IsResponse()) + `,` +
`}`
}