@@ -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