Skip to content

Commit 22bd4ca

Browse files
committed
looprpc: add disqualified channels to suggest swaps response
1 parent 7c4d71b commit 22bd4ca

File tree

5 files changed

+526
-159
lines changed

5 files changed

+526
-159
lines changed

cmd/loop/liquidity.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ func suggestSwap(ctx *cli.Context) error {
415415
context.Background(), &looprpc.SuggestSwapsRequest{},
416416
)
417417
if err == nil {
418-
printJSON(resp)
418+
printRespJSON(resp)
419419
return nil
420420
}
421421

loopd/swapclient_server.go

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,10 @@ func (s *swapClientServer) SuggestSwaps(ctx context.Context,
715715
return nil, err
716716
}
717717

718-
var loopOut []*looprpc.LoopOutRequest
718+
var (
719+
loopOut []*looprpc.LoopOutRequest
720+
disqualified []*looprpc.Disqualified
721+
)
719722

720723
for _, swap := range suggestions.OutSwaps {
721724
loopOut = append(loopOut, &looprpc.LoopOutRequest{
@@ -730,11 +733,71 @@ func (s *swapClientServer) SuggestSwaps(ctx context.Context,
730733
})
731734
}
732735

736+
for id, reason := range suggestions.DisqualifiedChans {
737+
autoloopReason, err := rpcAutoloopReason(reason)
738+
if err != nil {
739+
return nil, err
740+
}
741+
742+
exclChan := &looprpc.Disqualified{
743+
Reason: autoloopReason,
744+
ChannelId: id.ToUint64(),
745+
}
746+
disqualified = append(disqualified, exclChan)
747+
}
748+
733749
return &looprpc.SuggestSwapsResponse{
734-
LoopOut: loopOut,
750+
LoopOut: loopOut,
751+
Disqualified: disqualified,
735752
}, nil
736753
}
737754

755+
func rpcAutoloopReason(reason liquidity.Reason) (looprpc.AutoReason, error) {
756+
switch reason {
757+
case liquidity.ReasonNone:
758+
return looprpc.AutoReason_AUTO_REASON_UNKNOWN, nil
759+
760+
case liquidity.ReasonBudgetNotStarted:
761+
return looprpc.AutoReason_AUTO_REASON_BUDGET_NOT_STARTED, nil
762+
763+
case liquidity.ReasonSweepFees:
764+
return looprpc.AutoReason_AUTO_REASON_SWEEP_FEES, nil
765+
766+
case liquidity.ReasonBudgetElapsed:
767+
return looprpc.AutoReason_AUTO_REASON_BUDGET_ELAPSED, nil
768+
769+
case liquidity.ReasonInFlight:
770+
return looprpc.AutoReason_AUTO_REASON_IN_FLIGHT, nil
771+
772+
case liquidity.ReasonSwapFee:
773+
return looprpc.AutoReason_AUTO_REASON_SWAP_FEE, nil
774+
775+
case liquidity.ReasonMinerFee:
776+
return looprpc.AutoReason_AUTO_REASON_MINER_FEE, nil
777+
778+
case liquidity.ReasonPrepay:
779+
return looprpc.AutoReason_AUTO_REASON_PREPAY, nil
780+
781+
case liquidity.ReasonFailureBackoff:
782+
return looprpc.AutoReason_AUTO_REASON_FAILURE_BACKOFF, nil
783+
784+
case liquidity.ReasonLoopOut:
785+
return looprpc.AutoReason_AUTO_REASON_LOOP_OUT, nil
786+
787+
case liquidity.ReasonLoopIn:
788+
return looprpc.AutoReason_AUTO_REASON_LOOP_IN, nil
789+
790+
case liquidity.ReasonLiquidityOk:
791+
return looprpc.AutoReason_AUTO_REASON_LIQUIDITY_OK, nil
792+
793+
case liquidity.ReasonBudgetInsufficient:
794+
return looprpc.AutoReason_AUTO_REASON_BUDGET_INSUFFICIENT, nil
795+
796+
default:
797+
return 0, fmt.Errorf("unknown autoloop reason: %v", reason)
798+
}
799+
}
800+
738801
// processStatusUpdates reads updates on the status channel and processes them.
739802
//
740803
// NOTE: This must run inside a goroutine as it blocks until the main context

0 commit comments

Comments
 (0)