-
Notifications
You must be signed in to change notification settings - Fork 4
/
message.go
53 lines (43 loc) · 1.39 KB
/
message.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
package utils
import (
"github.com/ThreeDotsLabs/watermill/message"
"github.com/insolar/assured-ledger/ledger-core/insolar/defaults"
"github.com/insolar/assured-ledger/ledger-core/instrumentation/trace"
"github.com/insolar/assured-ledger/ledger-core/pulse"
"github.com/insolar/assured-ledger/ledger-core/reference"
"github.com/insolar/assured-ledger/ledger-core/rms"
"github.com/insolar/assured-ledger/ledger-core/rms/rmsreg"
"github.com/insolar/assured-ledger/ledger-core/vanilla/throw"
)
type RequestWrapper struct {
pulseNumber pulse.Number
payload rmsreg.GoGoSerializable
sender reference.Global
receiver reference.Global
}
func NewRequestWrapper(pulseNumber pulse.Number, payload rmsreg.GoGoSerializable) *RequestWrapper {
return &RequestWrapper{
pulseNumber: pulseNumber,
payload: payload,
}
}
func (w *RequestWrapper) SetSender(sender reference.Global) *RequestWrapper {
w.sender = sender
return w
}
func (w *RequestWrapper) SetReceiver(receiver reference.Global) *RequestWrapper {
w.receiver = receiver
return w
}
func (w *RequestWrapper) Finalize() *message.Message {
meta := rms.Meta{Pulse: w.pulseNumber}
meta.Sender.Set(w.sender)
meta.Receiver.Set(w.receiver)
meta.Payload.Set(w.payload)
msg, err := rms.NewMessage(&meta)
if err != nil {
panic(throw.W(err, "failed to create watermill message"))
}
msg.Metadata.Set(defaults.TraceID, trace.RandID())
return msg
}