5
5
"encoding/hex"
6
6
"fmt"
7
7
8
+ "github.com/cosmos/gogoproto/proto"
9
+
8
10
sdk "github.com/cosmos/cosmos-sdk/types"
9
11
10
12
"github.com/cosmos/ibc-go/v9/modules/core/04-channel/v2/types"
@@ -14,99 +16,131 @@ import (
14
16
func emitSendPacketEvents (ctx context.Context , packet types.Packet ) {
15
17
sdkCtx := sdk .UnwrapSDKContext (ctx )
16
18
19
+ encodedPacket , err := proto .Marshal (& packet )
20
+ if err != nil {
21
+ panic (err )
22
+ }
23
+
17
24
sdkCtx .EventManager ().EmitEvents (sdk.Events {
18
25
sdk .NewEvent (
19
26
types .EventTypeSendPacket ,
20
27
sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
21
28
sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
22
29
sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
23
30
sdk .NewAttribute (types .AttributeKeyTimeoutTimestamp , fmt .Sprintf ("%d" , packet .TimeoutTimestamp )),
24
- sdk .NewAttribute (types .AttributeKeyPayloadLength , fmt .Sprintf ("%d" , len (packet .Payloads ))),
25
- sdk .NewAttribute (types .AttributeKeyVersion , packet .Payloads [0 ].Version ),
26
- sdk .NewAttribute (types .AttributeKeyEncoding , packet .Payloads [0 ].Encoding ),
27
- sdk .NewAttribute (types .AttributeKeyData , hex .EncodeToString (packet .Payloads [0 ].Value )),
31
+ sdk .NewAttribute (types .AttributeKeyPacketDataHex , hex .EncodeToString (encodedPacket )),
28
32
),
29
33
sdk .NewEvent (
30
34
sdk .EventTypeMessage ,
31
35
sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
32
36
),
33
37
})
34
-
35
- for i , payload := range packet .Payloads {
36
- sdkCtx .EventManager ().EmitEvents (sdk.Events {
37
- sdk .NewEvent (
38
- types .EventTypeSendPayload ,
39
- sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
40
- sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
41
- sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
42
- sdk .NewAttribute (types .AttributeKeyPayloadSequence , fmt .Sprintf ("%d" , i )),
43
- sdk .NewAttribute (types .AttributeKeyVersion , payload .Version ),
44
- sdk .NewAttribute (types .AttributeKeyEncoding , payload .Encoding ),
45
- sdk .NewAttribute (types .AttributeKeyData , hex .EncodeToString (payload .Value )),
46
- ),
47
- sdk .NewEvent (
48
- sdk .EventTypeMessage ,
49
- sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
50
- ),
51
- })
52
- }
53
38
}
54
39
55
40
// emitRecvPacketEvents emits events for the RecvPacket handler.
56
41
func emitRecvPacketEvents (ctx context.Context , packet types.Packet ) {
57
42
sdkCtx := sdk .UnwrapSDKContext (ctx )
58
43
44
+ encodedPacket , err := proto .Marshal (& packet )
45
+ if err != nil {
46
+ panic (err )
47
+ }
48
+
59
49
sdkCtx .EventManager ().EmitEvents (sdk.Events {
60
50
sdk .NewEvent (
61
51
types .EventTypeRecvPacket ,
62
52
sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
63
53
sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
64
54
sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
65
55
sdk .NewAttribute (types .AttributeKeyTimeoutTimestamp , fmt .Sprintf ("%d" , packet .TimeoutTimestamp )),
66
- sdk .NewAttribute (types .AttributeKeyPayloadLength , fmt .Sprintf ("%d" , len (packet .Payloads ))),
67
- sdk .NewAttribute (types .AttributeKeyVersion , packet .Payloads [0 ].Version ),
68
- sdk .NewAttribute (types .AttributeKeyEncoding , packet .Payloads [0 ].Encoding ),
69
- sdk .NewAttribute (types .AttributeKeyData , hex .EncodeToString (packet .Payloads [0 ].Value )),
56
+ sdk .NewAttribute (types .AttributeKeyPacketDataHex , hex .EncodeToString (encodedPacket )),
70
57
),
71
58
sdk .NewEvent (
72
59
sdk .EventTypeMessage ,
73
60
sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
74
61
),
75
62
})
63
+ }
76
64
77
- for i , payload := range packet .Payloads {
78
- sdkCtx .EventManager ().EmitEvents (sdk.Events {
79
- sdk .NewEvent (
80
- types .EventTypeRecvPayload ,
81
- sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
82
- sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
83
- sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
84
- sdk .NewAttribute (types .AttributeKeyPayloadSequence , fmt .Sprintf ("%d" , i )),
85
- sdk .NewAttribute (types .AttributeKeyVersion , payload .Version ),
86
- sdk .NewAttribute (types .AttributeKeyEncoding , payload .Encoding ),
87
- sdk .NewAttribute (types .AttributeKeyData , hex .EncodeToString (payload .Value )),
88
- ),
89
- sdk .NewEvent (
90
- sdk .EventTypeMessage ,
91
- sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
92
- ),
93
- })
65
+ // emitWriteAcknowledgementEvents emits events for WriteAcknowledgement.
66
+ func emitWriteAcknowledgementEvents (ctx context.Context , packet types.Packet , ack types.Acknowledgement ) {
67
+ sdkCtx := sdk .UnwrapSDKContext (ctx )
68
+
69
+ encodedPacket , err := proto .Marshal (& packet )
70
+ if err != nil {
71
+ panic (err )
94
72
}
95
- }
96
73
97
- // EmitWriteAcknowledgementEvents emits events for WriteAcknowledgement.
98
- func EmitWriteAcknowledgementEvents (ctx context.Context , packet types.Packet , ack types.Acknowledgement ) {
99
- // TODO: https://github.com/cosmos/ibc-go/issues/7386
74
+ encodedAck , err := proto .Marshal (& ack )
75
+ if err != nil {
76
+ panic (err )
77
+ }
78
+
79
+ sdkCtx .EventManager ().EmitEvents (sdk.Events {
80
+ sdk .NewEvent (
81
+ types .EventTypeWriteAck ,
82
+ sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
83
+ sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
84
+ sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
85
+ sdk .NewAttribute (types .AttributeKeyTimeoutTimestamp , fmt .Sprintf ("%d" , packet .TimeoutTimestamp )),
86
+ sdk .NewAttribute (types .AttributeKeyPacketDataHex , hex .EncodeToString (encodedPacket )),
87
+ sdk .NewAttribute (types .AttributeKeyAckDataHex , hex .EncodeToString (encodedAck )),
88
+ ),
89
+ sdk .NewEvent (
90
+ sdk .EventTypeMessage ,
91
+ sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
92
+ ),
93
+ })
100
94
}
101
95
102
- // EmitAcknowledgePacketEvents emits events for the AcknowledgePacket handler.
103
- func EmitAcknowledgePacketEvents (ctx context.Context , packet types.Packet ) {
104
- // TODO: https://github.com/cosmos/ibc-go/issues/7386
96
+ // emitAcknowledgePacketEvents emits events for the AcknowledgePacket handler.
97
+ func emitAcknowledgePacketEvents (ctx context.Context , packet types.Packet ) {
98
+ sdkCtx := sdk .UnwrapSDKContext (ctx )
99
+
100
+ encodedPacket , err := proto .Marshal (& packet )
101
+ if err != nil {
102
+ panic (err )
103
+ }
104
+
105
+ sdkCtx .EventManager ().EmitEvents (sdk.Events {
106
+ sdk .NewEvent (
107
+ types .EventTypeAcknowledgePacket ,
108
+ sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
109
+ sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
110
+ sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
111
+ sdk .NewAttribute (types .AttributeKeyTimeoutTimestamp , fmt .Sprintf ("%d" , packet .TimeoutTimestamp )),
112
+ sdk .NewAttribute (types .AttributeKeyPacketDataHex , hex .EncodeToString (encodedPacket )),
113
+ ),
114
+ sdk .NewEvent (
115
+ sdk .EventTypeMessage ,
116
+ sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
117
+ ),
118
+ })
105
119
}
106
120
107
- // EmitTimeoutPacketEvents emits events for the TimeoutPacket handler.
108
- func EmitTimeoutPacketEvents (ctx context.Context , packet types.Packet ) {
109
- // TODO: https://github.com/cosmos/ibc-go/issues/7386
121
+ // emitTimeoutPacketEvents emits events for the TimeoutPacket handler.
122
+ func emitTimeoutPacketEvents (ctx context.Context , packet types.Packet ) {
123
+ sdkCtx := sdk .UnwrapSDKContext (ctx )
124
+
125
+ encodedPacket , err := proto .Marshal (& packet )
126
+ if err != nil {
127
+ panic (err )
128
+ }
129
+
130
+ sdkCtx .EventManager ().EmitEvents (sdk.Events {
131
+ sdk .NewEvent (
132
+ types .EventTypeTimeoutPacket ,
133
+ sdk .NewAttribute (types .AttributeKeySrcChannel , packet .SourceChannel ),
134
+ sdk .NewAttribute (types .AttributeKeyDstChannel , packet .DestinationChannel ),
135
+ sdk .NewAttribute (types .AttributeKeySequence , fmt .Sprintf ("%d" , packet .Sequence )),
136
+ sdk .NewAttribute (types .AttributeKeyTimeoutTimestamp , fmt .Sprintf ("%d" , packet .TimeoutTimestamp )),
137
+ sdk .NewAttribute (types .AttributeKeyPacketDataHex , hex .EncodeToString (encodedPacket )),
138
+ ),
139
+ sdk .NewEvent (
140
+ sdk .EventTypeMessage ,
141
+ sdk .NewAttribute (sdk .AttributeKeyModule , types .AttributeValueCategory ),
142
+ ),
143
+ })
110
144
}
111
145
112
146
// emitCreateChannelEvent emits a channel create event.
0 commit comments