htlcswitch: add final htlc event to notifier

This commit is contained in:
Joost Jager committed 2022-10-27 16:42:36 +02:00
1 parent 28256b7ea8
commit 511fb00777
21 files changed
+729 -404

No files matched your search

File diff suppressed because it is too large. Load diff
+6
View File
@@ -619,6 +619,7 @@ message HtlcEvent {
SettleEvent settle_event = 9;
LinkFailEvent link_fail_event = 10;
SubscribedEvent subscribed_event = 11;
FinalHtlcEvent final_htlc_event = 12;
}
}
@@ -649,6 +650,11 @@ message SettleEvent {
bytes preimage = 1;
}
message FinalHtlcEvent {
bool settled = 1;
bool offchain = 2;
}
message SubscribedEvent {
}
+14
View File
@@ -1168,6 +1168,17 @@
],
"default": "UNKNOWN"
},
"routerrpcFinalHtlcEvent": {
"type": "object",
"properties": {
"settled": {
"type": "boolean"
},
"offchain": {
"type": "boolean"
}
}
},
"routerrpcForwardEvent": {
"type": "object",
"properties": {
@@ -1320,6 +1331,9 @@
},
"subscribed_event": {
"$ref": "#/definitions/routerrpcSubscribedEvent"
},
"final_htlc_event": {
"$ref": "#/definitions/routerrpcFinalHtlcEvent"
}
},
"title": "HtlcEvent contains the htlc event that was processed. These are served on a\nbest-effort basis; events are not persisted, delivery is not guaranteed\n(in the event of a crash in the switch, forward events may be lost) and\nsome events may be replayed upon restart. Events consumed from this package\nshould be de-duplicated by the htlc's unique combination of incoming and\noutgoing channel id and htlc id. [EXPERIMENTAL]"
+30 -14
View File
@@ -14,7 +14,7 @@ func rpcHtlcEvent(htlcEvent interface{}) (*HtlcEvent, error) {
var (
key htlcswitch.HtlcKey
timestamp time.Time
eventType htlcswitch.HtlcEventType
eventType *htlcswitch.HtlcEventType
event isHtlcEvent_Event
)
@@ -27,7 +27,7 @@ func rpcHtlcEvent(htlcEvent interface{}) (*HtlcEvent, error) {
}
key = e.HtlcKey
eventType = e.HtlcEventType
eventType = &e.HtlcEventType
timestamp = e.Timestamp
case *htlcswitch.ForwardingFailEvent:
@@ -36,7 +36,7 @@ func rpcHtlcEvent(htlcEvent interface{}) (*HtlcEvent, error) {
}
key = e.HtlcKey
eventType = e.HtlcEventType
eventType = &e.HtlcEventType
timestamp = e.Timestamp
case *htlcswitch.LinkFailEvent:
@@ -57,7 +57,7 @@ func rpcHtlcEvent(htlcEvent interface{}) (*HtlcEvent, error) {
}
key = e.HtlcKey
eventType = e.HtlcEventType
eventType = &e.HtlcEventType
timestamp = e.Timestamp
case *htlcswitch.SettleEvent:
@@ -68,7 +68,20 @@ func rpcHtlcEvent(htlcEvent interface{}) (*HtlcEvent, error) {
}
key = e.HtlcKey
eventType = e.HtlcEventType
eventType = &e.HtlcEventType
timestamp = e.Timestamp
case *htlcswitch.FinalHtlcEvent:
event = &HtlcEvent_FinalHtlcEvent{
FinalHtlcEvent: &FinalHtlcEvent{
Settled: e.Settled,
Offchain: e.Offchain,
},
}
key = htlcswitch.HtlcKey{
IncomingCircuit: e.CircuitKey,
}
timestamp = e.Timestamp
default:
@@ -85,18 +98,21 @@ func rpcHtlcEvent(htlcEvent interface{}) (*HtlcEvent, error) {
}
// Convert the htlc event type to a rpc event.
switch eventType {
case htlcswitch.HtlcEventTypeSend:
rpcEvent.EventType = HtlcEvent_SEND
if eventType != nil {
switch *eventType {
case htlcswitch.HtlcEventTypeSend:
rpcEvent.EventType = HtlcEvent_SEND
case htlcswitch.HtlcEventTypeReceive:
rpcEvent.EventType = HtlcEvent_RECEIVE
case htlcswitch.HtlcEventTypeReceive:
rpcEvent.EventType = HtlcEvent_RECEIVE
case htlcswitch.HtlcEventTypeForward:
rpcEvent.EventType = HtlcEvent_FORWARD
case htlcswitch.HtlcEventTypeForward:
rpcEvent.EventType = HtlcEvent_FORWARD
default:
return nil, fmt.Errorf("unknown event type: %v", eventType)
default:
return nil, fmt.Errorf("unknown event type: %v",
eventType)
}
}
return rpcEvent, nil