Merge pull request #86 from guggero/external-loop-in-fee-est

loopd: don't fail external loop in on fee estimation failure
pull/92/head
Alex Bosworth 5 years ago committed by GitHub
commit 0e0967716c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -470,6 +470,15 @@ func (s *Client) LoopInQuote(ctx context.Context,
request.Amount*btcutil.Amount(terms.SwapFeeRate)/
btcutil.Amount(swap.FeeRateTotalParts)
// We don't calculate the on-chain fee if the HTLC is going to be
// published externally.
if request.ExternalHtlc {
return &LoopInQuote{
SwapFee: swapFee,
MinerFee: 0,
}, nil
}
// Get estimate for miner fee.
minerFee, err := s.lndServices.Client.EstimateFeeToP2WSH(
ctx, request.Amount, request.HtlcConfTarget,

@ -56,10 +56,12 @@ func loopIn(ctx *cli.Context) error {
}
defer cleanup()
external := ctx.Bool("external")
quote, err := client.GetLoopInQuote(
context.Background(),
&looprpc.QuoteRequest{
Amt: int64(amt),
Amt: int64(amt),
ExternalHtlc: external,
},
)
if err != nil {
@ -67,8 +69,8 @@ func loopIn(ctx *cli.Context) error {
}
limits := getInLimits(amt, quote)
if err := displayLimits(loop.TypeIn, amt, limits); err != nil {
err = displayLimits(loop.TypeIn, amt, limits, external)
if err != nil {
return err
}
@ -76,7 +78,7 @@ func loopIn(ctx *cli.Context) error {
Amt: int64(amt),
MaxMinerFee: int64(limits.maxMinerFee),
MaxSwapFee: int64(limits.maxSwapFee),
ExternalHtlc: ctx.Bool("external"),
ExternalHtlc: external,
})
if err != nil {
return err

@ -94,7 +94,7 @@ func loopOut(ctx *cli.Context) error {
limits := getLimits(amt, quote)
if err := displayLimits(loop.TypeOut, amt, limits); err != nil {
if err := displayLimits(loop.TypeOut, amt, limits, false); err != nil {
return err
}

@ -116,7 +116,9 @@ func getLimits(amt btcutil.Amount, quote *looprpc.QuoteResponse) *limits {
}
}
func displayLimits(swapType loop.Type, amt btcutil.Amount, l *limits) error {
func displayLimits(swapType loop.Type, amt btcutil.Amount, l *limits,
externalHtlc bool) error {
totalSuccessMax := l.maxMinerFee + l.maxSwapFee
if l.maxSwapRoutingFee != nil {
totalSuccessMax += *l.maxSwapRoutingFee
@ -124,6 +126,13 @@ func displayLimits(swapType loop.Type, amt btcutil.Amount, l *limits) error {
if l.maxPrepayRoutingFee != nil {
totalSuccessMax += *l.maxPrepayRoutingFee
}
if swapType == loop.TypeIn && externalHtlc {
fmt.Printf("On-chain fee for external loop in is not " +
"included.\nSufficient fees will need to be paid " +
"when constructing the transaction in the external " +
"wallet.\n\n")
}
fmt.Printf("Max swap fees for %d Loop %v: %d\n",
btcutil.Amount(amt), swapType, totalSuccessMax,
@ -139,7 +148,10 @@ func displayLimits(swapType loop.Type, amt btcutil.Amount, l *limits) error {
return nil
case "x":
fmt.Println()
fmt.Printf("Max on-chain fee: %d\n", l.maxMinerFee)
if swapType != loop.TypeIn || !externalHtlc {
fmt.Printf("Max on-chain fee: %d\n",
l.maxMinerFee)
}
if l.maxSwapRoutingFee != nil {
fmt.Printf("Max off-chain swap routing fee: %d\n",

@ -306,6 +306,7 @@ func (s *swapClientServer) GetLoopInQuote(ctx context.Context,
quote, err := s.impl.LoopInQuote(ctx, &loop.LoopInQuoteRequest{
Amount: btcutil.Amount(req.Amt),
HtlcConfTarget: defaultConfTarget,
ExternalHtlc: req.ExternalHtlc,
})
if err != nil {
return nil, err

@ -224,6 +224,10 @@ type LoopInQuoteRequest struct {
// HtlcConfTarget specifies the targeted confirmation target for the
// client sweep tx.
HtlcConfTarget int32
// ExternalHtlc specifies whether the htlc is published by an external
// source.
ExternalHtlc bool
}
// LoopInQuote contains estimates for the fees making up the total swap cost

@ -9,8 +9,6 @@ import (
proto "github.com/golang/protobuf/proto"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
math "math"
)
@ -702,7 +700,11 @@ type QuoteRequest struct {
//on-chain HTLC broadcast by the swap server in the case of a Loop Out, or for
//the confirmation of the on-chain HTLC broadcast by the swap client in the
//case of a Loop In.
ConfTarget int32 `protobuf:"varint,2,opt,name=conf_target,json=confTarget,proto3" json:"conf_target,omitempty"`
ConfTarget int32 `protobuf:"varint,2,opt,name=conf_target,json=confTarget,proto3" json:"conf_target,omitempty"`
//*
//If external_htlc is true, we expect the htlc to be published by an external
//actor.
ExternalHtlc bool `protobuf:"varint,3,opt,name=external_htlc,json=externalHtlc,proto3" json:"external_htlc,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -747,6 +749,13 @@ func (m *QuoteRequest) GetConfTarget() int32 {
return 0
}
func (m *QuoteRequest) GetExternalHtlc() bool {
if m != nil {
return m.ExternalHtlc
}
return false
}
type QuoteResponse struct {
//*
//The fee that the swap server is charging for the swap.
@ -825,74 +834,74 @@ func init() {
func init() { proto.RegisterFile("client.proto", fileDescriptor_014de31d7ac8c57c) }
var fileDescriptor_014de31d7ac8c57c = []byte{
// 1057 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5d, 0x73, 0xda, 0x46,
0x14, 0x0d, 0x02, 0x1b, 0xb8, 0x80, 0x80, 0x75, 0xe2, 0x10, 0xda, 0x4c, 0xa8, 0xda, 0xa4, 0x8c,
0x1f, 0x4c, 0xeb, 0x3c, 0xb5, 0x6f, 0x04, 0x93, 0x98, 0x19, 0xdb, 0xb8, 0x02, 0x67, 0xa6, 0x7d,
0xd9, 0x6e, 0x60, 0xb1, 0x35, 0x23, 0xed, 0x2a, 0xd2, 0xe2, 0x8f, 0xe9, 0xf4, 0xa5, 0xff, 0xa0,
0xd3, 0xbf, 0xd2, 0x7f, 0xd2, 0xf7, 0x3e, 0x75, 0xfa, 0x3b, 0x3a, 0x7b, 0x57, 0xc8, 0x02, 0xd7,
0x2f, 0x79, 0xc3, 0x67, 0xcf, 0x9e, 0xbd, 0x7b, 0xef, 0x39, 0x2b, 0x43, 0x75, 0xe6, 0x7b, 0x5c,
0xa8, 0xfd, 0x30, 0x92, 0x4a, 0x92, 0xa2, 0x2f, 0x65, 0x18, 0x85, 0xb3, 0xf6, 0xe7, 0x17, 0x52,
0x5e, 0xf8, 0xbc, 0xc7, 0x42, 0xaf, 0xc7, 0x84, 0x90, 0x8a, 0x29, 0x4f, 0x8a, 0xd8, 0xd0, 0x9c,
0xbf, 0x2d, 0xb0, 0x8f, 0xa5, 0x0c, 0xc7, 0x4b, 0xe5, 0xf2, 0x8f, 0x4b, 0x1e, 0x2b, 0xd2, 0x80,
0x3c, 0x0b, 0x54, 0x2b, 0xd7, 0xc9, 0x75, 0xf3, 0xae, 0xfe, 0x49, 0x08, 0x14, 0xe6, 0x3c, 0x56,
0x2d, 0xab, 0x93, 0xeb, 0x96, 0x5d, 0xfc, 0x4d, 0x7a, 0xf0, 0x38, 0x60, 0x37, 0x34, 0xbe, 0x66,
0x21, 0x8d, 0xe4, 0x52, 0x79, 0xe2, 0x82, 0x2e, 0x38, 0x6f, 0xe5, 0x71, 0x5b, 0x33, 0x60, 0x37,
0x93, 0x6b, 0x16, 0xba, 0x66, 0xe5, 0x2d, 0xe7, 0xe4, 0x35, 0xec, 0xea, 0x0d, 0x61, 0xc4, 0x43,
0x76, 0xbb, 0xb6, 0xa5, 0x80, 0x5b, 0x76, 0x02, 0x76, 0x73, 0x86, 0x8b, 0x99, 0x4d, 0x1d, 0xa8,
0xa6, 0xa7, 0x68, 0xea, 0x16, 0x52, 0x21, 0x51, 0xd7, 0x8c, 0xaf, 0xc0, 0xce, 0xc8, 0xea, 0xc2,
0xb7, 0x91, 0x53, 0x4d, 0xe5, 0xfa, 0x81, 0x22, 0x0e, 0xd4, 0x34, 0x2b, 0xf0, 0x04, 0x8f, 0x50,
0xa8, 0x88, 0xa4, 0x4a, 0xc0, 0x6e, 0x4e, 0x34, 0xa6, 0x95, 0xba, 0xd0, 0xd0, 0x3d, 0xa3, 0x72,
0xa9, 0xe8, 0xec, 0x92, 0x09, 0xc1, 0xfd, 0x56, 0xa9, 0x93, 0xeb, 0x16, 0x5c, 0xdb, 0x37, 0x1d,
0x1a, 0x18, 0x94, 0xec, 0x41, 0x33, 0xbe, 0xe6, 0x3c, 0xa4, 0x33, 0x29, 0x16, 0x54, 0xb1, 0xe8,
0x82, 0xab, 0x56, 0xb9, 0x93, 0xeb, 0x6e, 0xb9, 0x75, 0x5c, 0x18, 0x48, 0xb1, 0x98, 0x22, 0xec,
0xfc, 0x99, 0x83, 0x9a, 0x6e, 0xf0, 0x48, 0x3c, 0xdc, 0xdf, 0xcd, 0x5b, 0x5a, 0xf7, 0x6e, 0x79,
0xaf, 0xfe, 0xfc, 0xfd, 0xfa, 0x5f, 0x41, 0x1d, 0xeb, 0xf7, 0x44, 0x5a, 0x7e, 0x01, 0xcb, 0xaf,
0xf9, 0x78, 0xfe, 0xaa, 0xfa, 0x2f, 0xa1, 0xc6, 0x6f, 0x14, 0x8f, 0x04, 0xf3, 0xe9, 0xa5, 0xf2,
0x67, 0xd8, 0xd4, 0x92, 0x5b, 0x5d, 0x81, 0x47, 0xca, 0x9f, 0x39, 0x7d, 0xa8, 0xe2, 0xfc, 0x78,
0x1c, 0x4a, 0x11, 0x73, 0x62, 0x83, 0xe5, 0xcd, 0xb1, 0xe6, 0xb2, 0x6b, 0x79, 0x73, 0xf2, 0x05,
0x54, 0xf5, 0x5e, 0xca, 0xe6, 0xf3, 0x88, 0xc7, 0x71, 0x62, 0x8d, 0x8a, 0xc6, 0xfa, 0x06, 0x72,
0x1a, 0x60, 0x9f, 0x48, 0xe1, 0x29, 0x19, 0x25, 0x37, 0xd7, 0x66, 0x03, 0xad, 0x3a, 0x51, 0x4c,
0x2d, 0xe3, 0xff, 0x69, 0x84, 0x39, 0xc5, 0x4a, 0x4f, 0x79, 0x09, 0x05, 0x75, 0x1b, 0x9a, 0xdb,
0xda, 0x07, 0xcd, 0xfd, 0xc4, 0xd3, 0xfb, 0x5a, 0x64, 0x7a, 0x1b, 0x72, 0x17, 0x97, 0x49, 0x17,
0xb6, 0x62, 0xc5, 0x94, 0x71, 0x92, 0x7d, 0x40, 0xd6, 0x78, 0xfa, 0x30, 0xee, 0x1a, 0x02, 0xf9,
0x1a, 0xea, 0x9e, 0xf0, 0x94, 0x87, 0x19, 0xa0, 0xca, 0x0b, 0x56, 0x96, 0xb2, 0xef, 0xe0, 0xa9,
0x17, 0x18, 0x33, 0xb0, 0x58, 0xd1, 0x65, 0x38, 0x67, 0x8a, 0x1b, 0xa6, 0x31, 0x96, 0xad, 0xf1,
0x73, 0x84, 0x91, 0xb9, 0xd9, 0x89, 0xe2, 0xbd, 0x4e, 0x90, 0x17, 0x50, 0x99, 0xc9, 0x58, 0xd1,
0x98, 0x47, 0x57, 0x3c, 0x42, 0x53, 0xe5, 0x5d, 0xd0, 0xd0, 0x04, 0x11, 0xad, 0x81, 0x04, 0x29,
0x66, 0x97, 0xcc, 0x13, 0xe8, 0xa5, 0xbc, 0x8b, 0x9b, 0xc6, 0x06, 0xd2, 0x53, 0x33, 0x94, 0xc5,
0xc2, 0x70, 0xc0, 0xd8, 0x1c, 0x39, 0x09, 0xe6, 0xd8, 0x50, 0x9d, 0xf2, 0x28, 0x88, 0x57, 0x0d,
0xff, 0xdd, 0x82, 0x5a, 0x02, 0x24, 0x73, 0x44, 0xeb, 0xb2, 0x90, 0x86, 0xec, 0x36, 0xe0, 0x42,
0x51, 0xcc, 0xb5, 0x19, 0x6b, 0x5d, 0x2f, 0x9c, 0x19, 0xfc, 0x50, 0x1b, 0xd5, 0x81, 0xda, 0xca,
0x92, 0xf4, 0x03, 0x8b, 0x57, 0xbe, 0xac, 0xc4, 0xc6, 0x94, 0x6f, 0x58, 0xcc, 0xd7, 0x38, 0x91,
0x1e, 0x41, 0x7e, 0x8d, 0xe3, 0xea, 0xa6, 0x3f, 0x07, 0xc8, 0xc4, 0xd3, 0xa4, 0xbd, 0x1c, 0xa6,
0xd9, 0x7c, 0x05, 0xf5, 0xc0, 0x13, 0xc6, 0xfd, 0x2c, 0x90, 0x4b, 0xa1, 0x92, 0x99, 0xd4, 0x02,
0x4f, 0xe8, 0x09, 0xf6, 0x11, 0x44, 0xde, 0x2a, 0x25, 0x09, 0x6f, 0x3b, 0xe1, 0x99, 0xa0, 0x24,
0xbc, 0xe7, 0x00, 0x33, 0x5f, 0x5d, 0xd1, 0x39, 0xf7, 0x15, 0xc3, 0x71, 0x6c, 0xb9, 0x65, 0x8d,
0x1c, 0x6a, 0x40, 0x3b, 0xfb, 0x87, 0xa5, 0x54, 0xfc, 0xe1, 0x38, 0xe2, 0xb8, 0xee, 0x82, 0x6d,
0xa1, 0x02, 0xcc, 0xee, 0x32, 0xbd, 0x80, 0x5a, 0x22, 0x91, 0x74, 0xf5, 0x19, 0x94, 0xd2, 0xf0,
0x1a, 0xa1, 0x62, 0xd2, 0x80, 0x8d, 0xcb, 0x5b, 0x9b, 0x97, 0xff, 0x0c, 0xca, 0x9b, 0xa1, 0x2e,
0x05, 0x49, 0xa2, 0xf7, 0x5e, 0x42, 0x69, 0xe5, 0x74, 0x52, 0x85, 0xd2, 0xf1, 0x78, 0x7c, 0x46,
0xc7, 0xe7, 0xd3, 0xc6, 0x23, 0x52, 0x81, 0x22, 0xfe, 0x35, 0x3a, 0x6d, 0xe4, 0xf6, 0x62, 0x28,
0xa7, 0x46, 0x27, 0x35, 0x28, 0x8f, 0x4e, 0x47, 0xd3, 0x51, 0x7f, 0x3a, 0x3c, 0x6c, 0x3c, 0x22,
0x4f, 0xa0, 0x79, 0xe6, 0x0e, 0x47, 0x27, 0xfd, 0x77, 0x43, 0xea, 0x0e, 0xdf, 0x0f, 0xfb, 0xc7,
0xc3, 0xc3, 0x46, 0x8e, 0x10, 0xb0, 0x8f, 0xa6, 0xc7, 0x03, 0x7a, 0x76, 0xfe, 0xe6, 0x78, 0x34,
0x39, 0x1a, 0x1e, 0x36, 0x2c, 0xad, 0x39, 0x39, 0x1f, 0x0c, 0x86, 0x93, 0x49, 0x23, 0x4f, 0x00,
0xb6, 0xdf, 0xf6, 0x47, 0x9a, 0x5c, 0x20, 0x3b, 0x50, 0x1f, 0x9d, 0xbe, 0x1f, 0x8f, 0x06, 0x43,
0x3a, 0x19, 0x4e, 0xa7, 0x1a, 0xdc, 0x3a, 0xf8, 0xb7, 0x60, 0xb2, 0x3c, 0xc0, 0x8f, 0x0e, 0x71,
0xa1, 0x98, 0x7c, 0x46, 0xc8, 0xd3, 0x34, 0x7e, 0xeb, 0x1f, 0x96, 0xf6, 0x93, 0xb5, 0x5c, 0xae,
0x9a, 0xe7, 0x3c, 0xfd, 0xed, 0xaf, 0x7f, 0xfe, 0xb0, 0x9a, 0x4e, 0xb5, 0x77, 0xf5, 0x6d, 0x4f,
0x33, 0x7a, 0x72, 0xa9, 0xbe, 0xcf, 0xed, 0x91, 0x31, 0x6c, 0x9b, 0x97, 0x93, 0xec, 0xae, 0x49,
0xa6, 0x4f, 0xe9, 0x43, 0x8a, 0xbb, 0xa8, 0xd8, 0x70, 0x2a, 0xa9, 0xa2, 0x27, 0xb4, 0xe0, 0x77,
0x50, 0x4c, 0x5e, 0xa4, 0x4c, 0x91, 0xeb, 0x6f, 0x54, 0x7b, 0xe7, 0xde, 0xe3, 0xb1, 0x8c, 0xbf,
0xc9, 0x91, 0x1f, 0xa1, 0x9a, 0xdc, 0x06, 0xf3, 0x44, 0xee, 0x4e, 0xce, 0x06, 0xae, 0xbd, 0xbb,
0x09, 0x27, 0x15, 0xb5, 0xb1, 0xa2, 0xc7, 0x84, 0x64, 0xef, 0xd8, 0x53, 0x28, 0x45, 0x53, 0x69,
0x34, 0x55, 0x46, 0x3a, 0xeb, 0xd3, 0x8c, 0xf4, 0x9a, 0xf7, 0x9c, 0x0e, 0x4a, 0xb7, 0x49, 0x6b,
0x4d, 0xfa, 0xa3, 0xe6, 0xf4, 0x7e, 0x61, 0x81, 0xfa, 0x95, 0xfc, 0x04, 0xf6, 0x3b, 0xae, 0x4c,
0xe7, 0x3e, 0xa9, 0xfa, 0x67, 0x78, 0xc4, 0x0e, 0x69, 0x66, 0xfa, 0x99, 0x14, 0xff, 0x73, 0x46,
0xfb, 0x93, 0xca, 0x7f, 0x81, 0xda, 0xcf, 0xc8, 0xd3, 0xac, 0x76, 0xa6, 0xfa, 0x0f, 0xdb, 0xf8,
0x8f, 0xca, 0xeb, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x88, 0xc1, 0x07, 0xdf, 0x08, 0x00,
0x00,
// 1065 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5f, 0x73, 0xda, 0xc6,
0x17, 0x0d, 0x02, 0x1b, 0xb8, 0x08, 0x01, 0xeb, 0xc4, 0xc6, 0xfc, 0x7e, 0x99, 0x50, 0xb5, 0x49,
0x19, 0x3f, 0x98, 0xd6, 0x79, 0x6a, 0xdf, 0x08, 0x26, 0x31, 0x33, 0xb6, 0x71, 0x05, 0xce, 0x4c,
0xfb, 0xa2, 0x6e, 0x60, 0xb1, 0x35, 0x23, 0xed, 0x2a, 0xd2, 0xe2, 0x3f, 0xd3, 0xe9, 0x4b, 0xbf,
0x41, 0xa7, 0x5f, 0xa5, 0xdf, 0xa4, 0xef, 0x7d, 0xea, 0xf4, 0x73, 0x74, 0xf6, 0xae, 0x90, 0x05,
0xc4, 0x2f, 0x79, 0xc3, 0x67, 0xcf, 0x9e, 0xbd, 0x7b, 0xef, 0x39, 0x2b, 0x83, 0x39, 0xf5, 0x3d,
0xc6, 0xe5, 0x61, 0x18, 0x09, 0x29, 0x48, 0xd1, 0x17, 0x22, 0x8c, 0xc2, 0x69, 0xeb, 0xff, 0x57,
0x42, 0x5c, 0xf9, 0xac, 0x4b, 0x43, 0xaf, 0x4b, 0x39, 0x17, 0x92, 0x4a, 0x4f, 0xf0, 0x58, 0xd3,
0xec, 0xbf, 0x0d, 0xb0, 0x4e, 0x85, 0x08, 0x47, 0x0b, 0xe9, 0xb0, 0x8f, 0x0b, 0x16, 0x4b, 0x52,
0x87, 0x3c, 0x0d, 0x64, 0x33, 0xd7, 0xce, 0x75, 0xf2, 0x8e, 0xfa, 0x49, 0x08, 0x14, 0x66, 0x2c,
0x96, 0x4d, 0xa3, 0x9d, 0xeb, 0x94, 0x1d, 0xfc, 0x4d, 0xba, 0xf0, 0x34, 0xa0, 0x77, 0x6e, 0x7c,
0x4b, 0x43, 0x37, 0x12, 0x0b, 0xe9, 0xf1, 0x2b, 0x77, 0xce, 0x58, 0x33, 0x8f, 0xdb, 0x1a, 0x01,
0xbd, 0x1b, 0xdf, 0xd2, 0xd0, 0xd1, 0x2b, 0x6f, 0x19, 0x23, 0xaf, 0x61, 0x57, 0x6d, 0x08, 0x23,
0x16, 0xd2, 0xfb, 0x95, 0x2d, 0x05, 0xdc, 0xb2, 0x13, 0xd0, 0xbb, 0x0b, 0x5c, 0xcc, 0x6c, 0x6a,
0x83, 0x99, 0x9e, 0xa2, 0xa8, 0x5b, 0x48, 0x85, 0x44, 0x5d, 0x31, 0xbe, 0x02, 0x2b, 0x23, 0xab,
0x0a, 0xdf, 0x46, 0x8e, 0x99, 0xca, 0xf5, 0x02, 0x49, 0x6c, 0xa8, 0x2a, 0x56, 0xe0, 0x71, 0x16,
0xa1, 0x50, 0x11, 0x49, 0x95, 0x80, 0xde, 0x9d, 0x29, 0x4c, 0x29, 0x75, 0xa0, 0xae, 0x7a, 0xe6,
0x8a, 0x85, 0x74, 0xa7, 0xd7, 0x94, 0x73, 0xe6, 0x37, 0x4b, 0xed, 0x5c, 0xa7, 0xe0, 0x58, 0xbe,
0xee, 0x50, 0x5f, 0xa3, 0xe4, 0x00, 0x1a, 0xf1, 0x2d, 0x63, 0xa1, 0x3b, 0x15, 0x7c, 0xee, 0x4a,
0x1a, 0x5d, 0x31, 0xd9, 0x2c, 0xb7, 0x73, 0x9d, 0x2d, 0xa7, 0x86, 0x0b, 0x7d, 0xc1, 0xe7, 0x13,
0x84, 0xed, 0x3f, 0x73, 0x50, 0x55, 0x0d, 0x1e, 0xf2, 0xc7, 0xfb, 0xbb, 0x7e, 0x4b, 0x63, 0xe3,
0x96, 0x1b, 0xf5, 0xe7, 0x37, 0xeb, 0x7f, 0x05, 0x35, 0xac, 0xdf, 0xe3, 0x69, 0xf9, 0x05, 0x2c,
0xbf, 0xea, 0xe3, 0xf9, 0xcb, 0xea, 0xbf, 0x84, 0x2a, 0xbb, 0x93, 0x2c, 0xe2, 0xd4, 0x77, 0xaf,
0xa5, 0x3f, 0xc5, 0xa6, 0x96, 0x1c, 0x73, 0x09, 0x9e, 0x48, 0x7f, 0x6a, 0xf7, 0xc0, 0xc4, 0xf9,
0xb1, 0x38, 0x14, 0x3c, 0x66, 0xc4, 0x02, 0xc3, 0x9b, 0x61, 0xcd, 0x65, 0xc7, 0xf0, 0x66, 0xe4,
0x0b, 0x30, 0xd5, 0x5e, 0x97, 0xce, 0x66, 0x11, 0x8b, 0xe3, 0xc4, 0x1a, 0x15, 0x85, 0xf5, 0x34,
0x64, 0xd7, 0xc1, 0x3a, 0x13, 0xdc, 0x93, 0x22, 0x4a, 0x6e, 0xae, 0xcc, 0x06, 0x4a, 0x75, 0x2c,
0xa9, 0x5c, 0xc4, 0x9f, 0x68, 0x84, 0x3e, 0xc5, 0x48, 0x4f, 0x79, 0x09, 0x05, 0x79, 0x1f, 0xea,
0xdb, 0x5a, 0x47, 0x8d, 0xc3, 0xc4, 0xd3, 0x87, 0x4a, 0x64, 0x72, 0x1f, 0x32, 0x07, 0x97, 0x49,
0x07, 0xb6, 0x62, 0x49, 0xa5, 0x76, 0x92, 0x75, 0x44, 0x56, 0x78, 0xea, 0x30, 0xe6, 0x68, 0x02,
0xf9, 0x1a, 0x6a, 0x1e, 0xf7, 0xa4, 0x87, 0x19, 0x70, 0xa5, 0x17, 0x2c, 0x2d, 0x65, 0x3d, 0xc0,
0x13, 0x2f, 0xd0, 0x66, 0xa0, 0xb1, 0x74, 0x17, 0xe1, 0x8c, 0x4a, 0xa6, 0x99, 0xda, 0x58, 0x96,
0xc2, 0x2f, 0x11, 0x46, 0xe6, 0x7a, 0x27, 0x8a, 0x1b, 0x9d, 0x20, 0x2f, 0xa0, 0x32, 0x15, 0xb1,
0x74, 0x63, 0x16, 0xdd, 0xb0, 0x08, 0x4d, 0x95, 0x77, 0x40, 0x41, 0x63, 0x44, 0x94, 0x06, 0x12,
0x04, 0x9f, 0x5e, 0x53, 0x8f, 0xa3, 0x97, 0xf2, 0x0e, 0x6e, 0x1a, 0x69, 0x48, 0x4d, 0x4d, 0x53,
0xe6, 0x73, 0xcd, 0x01, 0x6d, 0x73, 0xe4, 0x24, 0x98, 0x6d, 0x81, 0x39, 0x61, 0x51, 0x10, 0x2f,
0x1b, 0xfe, 0xbb, 0x01, 0xd5, 0x04, 0x48, 0xe6, 0x88, 0xd6, 0xa5, 0xa1, 0x1b, 0xd2, 0xfb, 0x80,
0x71, 0xe9, 0x62, 0xae, 0xf5, 0x58, 0x6b, 0x6a, 0xe1, 0x42, 0xe3, 0xc7, 0xca, 0xa8, 0x36, 0x54,
0x97, 0x96, 0x74, 0x3f, 0xd0, 0x78, 0xe9, 0xcb, 0x4a, 0xac, 0x4d, 0xf9, 0x86, 0xc6, 0x6c, 0x85,
0x13, 0xa9, 0x11, 0xe4, 0x57, 0x38, 0x8e, 0x6a, 0xfa, 0x73, 0x80, 0x4c, 0x3c, 0x75, 0xda, 0xcb,
0x61, 0x9a, 0xcd, 0x57, 0x50, 0x0b, 0x3c, 0xae, 0xdd, 0x4f, 0x03, 0xb1, 0xe0, 0x32, 0x99, 0x49,
0x35, 0xf0, 0xb8, 0x9a, 0x60, 0x0f, 0x41, 0xe4, 0x2d, 0x53, 0x92, 0xf0, 0xb6, 0x13, 0x9e, 0x0e,
0x4a, 0xc2, 0x7b, 0x0e, 0x30, 0xf5, 0xe5, 0x8d, 0x3b, 0x63, 0xbe, 0xa4, 0x38, 0x8e, 0x2d, 0xa7,
0xac, 0x90, 0x63, 0x05, 0xd8, 0x73, 0x30, 0x7f, 0x58, 0x08, 0xc9, 0x1e, 0x8f, 0x23, 0x8e, 0xeb,
0x21, 0xd8, 0x06, 0x2a, 0xc0, 0x34, 0xcd, 0xf4, 0x66, 0x82, 0xf2, 0x9f, 0x48, 0xd0, 0x1c, 0xaa,
0xc9, 0x39, 0x49, 0xeb, 0xf7, 0xa1, 0x94, 0x26, 0x5c, 0x9f, 0x56, 0x4c, 0xba, 0xb4, 0xd6, 0x21,
0x63, 0xbd, 0x43, 0xff, 0x83, 0xf2, 0x7a, 0xf2, 0x4b, 0x41, 0x12, 0xfb, 0x83, 0x97, 0x50, 0x5a,
0xc6, 0x81, 0x98, 0x50, 0x3a, 0x1d, 0x8d, 0x2e, 0xdc, 0xd1, 0xe5, 0xa4, 0xfe, 0x84, 0x54, 0xa0,
0x88, 0x7f, 0x0d, 0xcf, 0xeb, 0xb9, 0x83, 0x18, 0xca, 0x69, 0x1a, 0x48, 0x15, 0xca, 0xc3, 0xf3,
0xe1, 0x64, 0xd8, 0x9b, 0x0c, 0x8e, 0xeb, 0x4f, 0xc8, 0x33, 0x68, 0x5c, 0x38, 0x83, 0xe1, 0x59,
0xef, 0xdd, 0xc0, 0x75, 0x06, 0xef, 0x07, 0xbd, 0xd3, 0xc1, 0x71, 0x3d, 0x47, 0x08, 0x58, 0x27,
0x93, 0xd3, 0xbe, 0x7b, 0x71, 0xf9, 0xe6, 0x74, 0x38, 0x3e, 0x19, 0x1c, 0xd7, 0x0d, 0xa5, 0x39,
0xbe, 0xec, 0xf7, 0x07, 0xe3, 0x71, 0x3d, 0x4f, 0x00, 0xb6, 0xdf, 0xf6, 0x86, 0x8a, 0x5c, 0x20,
0x3b, 0x50, 0x1b, 0x9e, 0xbf, 0x1f, 0x0d, 0xfb, 0x03, 0x77, 0x3c, 0x98, 0x4c, 0x14, 0xb8, 0x75,
0xf4, 0x6f, 0x41, 0x07, 0xbe, 0x8f, 0x5f, 0x26, 0xe2, 0x40, 0x31, 0xf9, 0xd6, 0x90, 0xbd, 0x34,
0xa3, 0xab, 0x5f, 0x9f, 0xd6, 0xb3, 0x95, 0xf0, 0x2e, 0x9b, 0x67, 0xef, 0xfd, 0xf6, 0xd7, 0x3f,
0x7f, 0x18, 0x0d, 0xdb, 0xec, 0xde, 0x7c, 0xdb, 0x55, 0x8c, 0xae, 0x58, 0xc8, 0xef, 0x73, 0x07,
0x64, 0x04, 0xdb, 0xfa, 0x79, 0x25, 0xbb, 0x2b, 0x92, 0xe9, 0x7b, 0xfb, 0x98, 0xe2, 0x2e, 0x2a,
0xd6, 0xed, 0x4a, 0xaa, 0xe8, 0x71, 0x25, 0xf8, 0x1d, 0x14, 0x93, 0x67, 0x2b, 0x53, 0xe4, 0xea,
0x43, 0xd6, 0xda, 0xd9, 0x78, 0x61, 0x16, 0xf1, 0x37, 0x39, 0xf2, 0x23, 0x98, 0xc9, 0x6d, 0x30,
0x74, 0xe4, 0xe1, 0xe4, 0x6c, 0x2a, 0x5b, 0xbb, 0xeb, 0x70, 0x52, 0x51, 0x0b, 0x2b, 0x7a, 0x4a,
0x48, 0xf6, 0x8e, 0x5d, 0x89, 0x52, 0x6e, 0x2a, 0x8d, 0xa6, 0xca, 0x48, 0x67, 0xcd, 0x9c, 0x91,
0x5e, 0xf1, 0x9e, 0xdd, 0x46, 0xe9, 0x16, 0x69, 0xae, 0x48, 0x7f, 0x54, 0x9c, 0xee, 0x2f, 0x34,
0x90, 0xbf, 0x92, 0x9f, 0xc0, 0x7a, 0xc7, 0xa4, 0xee, 0xdc, 0x67, 0x55, 0xbf, 0x8f, 0x47, 0xec,
0x90, 0x46, 0xa6, 0x9f, 0x49, 0xf1, 0x3f, 0x67, 0xb4, 0x3f, 0xab, 0xfc, 0x17, 0xa8, 0xbd, 0x4f,
0xf6, 0xb2, 0xda, 0x99, 0xea, 0x3f, 0x6c, 0xe3, 0x7f, 0x33, 0xaf, 0xff, 0x0b, 0x00, 0x00, 0xff,
0xff, 0x71, 0xf8, 0xf7, 0x7c, 0x04, 0x09, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -1065,32 +1074,6 @@ type SwapClientServer interface {
GetLoopInQuote(context.Context, *QuoteRequest) (*QuoteResponse, error)
}
// UnimplementedSwapClientServer can be embedded to have forward compatible implementations.
type UnimplementedSwapClientServer struct {
}
func (*UnimplementedSwapClientServer) LoopOut(ctx context.Context, req *LoopOutRequest) (*SwapResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoopOut not implemented")
}
func (*UnimplementedSwapClientServer) LoopIn(ctx context.Context, req *LoopInRequest) (*SwapResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoopIn not implemented")
}
func (*UnimplementedSwapClientServer) Monitor(req *MonitorRequest, srv SwapClient_MonitorServer) error {
return status.Errorf(codes.Unimplemented, "method Monitor not implemented")
}
func (*UnimplementedSwapClientServer) LoopOutTerms(ctx context.Context, req *TermsRequest) (*TermsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoopOutTerms not implemented")
}
func (*UnimplementedSwapClientServer) LoopOutQuote(ctx context.Context, req *QuoteRequest) (*QuoteResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoopOutQuote not implemented")
}
func (*UnimplementedSwapClientServer) GetLoopInTerms(ctx context.Context, req *TermsRequest) (*TermsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetLoopInTerms not implemented")
}
func (*UnimplementedSwapClientServer) GetLoopInQuote(ctx context.Context, req *QuoteRequest) (*QuoteResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetLoopInQuote not implemented")
}
func RegisterSwapClientServer(s *grpc.Server, srv SwapClientServer) {
s.RegisterService(&_SwapClient_serviceDesc, srv)
}

@ -9,13 +9,13 @@ It translates gRPC into RESTful JSON APIs.
package looprpc
import (
"context"
"io"
"net/http"
"github.com/golang/protobuf/proto"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/grpc-ecosystem/grpc-gateway/utilities"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
@ -32,11 +32,7 @@ func request_SwapClient_LoopOut_0(ctx context.Context, marshaler runtime.Marshal
var protoReq LoopOutRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
@ -45,32 +41,11 @@ func request_SwapClient_LoopOut_0(ctx context.Context, marshaler runtime.Marshal
}
func local_request_SwapClient_LoopOut_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq LoopOutRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.LoopOut(ctx, &protoReq)
return msg, metadata, err
}
func request_SwapClient_LoopIn_0(ctx context.Context, marshaler runtime.Marshaler, client SwapClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq LoopInRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
@ -79,23 +54,6 @@ func request_SwapClient_LoopIn_0(ctx context.Context, marshaler runtime.Marshale
}
func local_request_SwapClient_LoopIn_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq LoopInRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.LoopIn(ctx, &protoReq)
return msg, metadata, err
}
func request_SwapClient_LoopOutTerms_0(ctx context.Context, marshaler runtime.Marshaler, client SwapClientClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq TermsRequest
var metadata runtime.ServerMetadata
@ -105,15 +63,6 @@ func request_SwapClient_LoopOutTerms_0(ctx context.Context, marshaler runtime.Ma
}
func local_request_SwapClient_LoopOutTerms_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq TermsRequest
var metadata runtime.ServerMetadata
msg, err := server.LoopOutTerms(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_SwapClient_LoopOutQuote_0 = &utilities.DoubleArray{Encoding: map[string]int{"amt": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
)
@ -140,45 +89,11 @@ func request_SwapClient_LoopOutQuote_0(ctx context.Context, marshaler runtime.Ma
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err)
}
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SwapClient_LoopOutQuote_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.LoopOutQuote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_SwapClient_LoopOutQuote_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QuoteRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["amt"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "amt")
}
protoReq.Amt, err = runtime.Int64(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_SwapClient_LoopOutQuote_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.LoopOutQuote(ctx, &protoReq)
msg, err := client.LoopOutQuote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
@ -192,15 +107,6 @@ func request_SwapClient_GetLoopInTerms_0(ctx context.Context, marshaler runtime.
}
func local_request_SwapClient_GetLoopInTerms_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq TermsRequest
var metadata runtime.ServerMetadata
msg, err := server.GetLoopInTerms(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_SwapClient_GetLoopInQuote_0 = &utilities.DoubleArray{Encoding: map[string]int{"amt": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}}
)
@ -227,177 +133,15 @@ func request_SwapClient_GetLoopInQuote_0(ctx context.Context, marshaler runtime.
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err)
}
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_SwapClient_GetLoopInQuote_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GetLoopInQuote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_SwapClient_GetLoopInQuote_0(ctx context.Context, marshaler runtime.Marshaler, server SwapClientServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QuoteRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["amt"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "amt")
}
protoReq.Amt, err = runtime.Int64(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "amt", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_SwapClient_GetLoopInQuote_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.GetLoopInQuote(ctx, &protoReq)
msg, err := client.GetLoopInQuote(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
// RegisterSwapClientHandlerServer registers the http handlers for service SwapClient to "mux".
// UnaryRPC :call SwapClientServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
func RegisterSwapClientHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SwapClientServer, opts []grpc.DialOption) error {
mux.Handle("POST", pattern_SwapClient_LoopOut_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_SwapClient_LoopOut_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_SwapClient_LoopOut_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_SwapClient_LoopIn_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_SwapClient_LoopIn_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_SwapClient_LoopIn_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_SwapClient_LoopOutTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_SwapClient_LoopOutTerms_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_SwapClient_LoopOutTerms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_SwapClient_LoopOutQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_SwapClient_LoopOutQuote_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_SwapClient_LoopOutQuote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_SwapClient_GetLoopInTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_SwapClient_GetLoopInTerms_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_SwapClient_GetLoopInTerms_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_SwapClient_GetLoopInQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_SwapClient_GetLoopInQuote_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_SwapClient_GetLoopInQuote_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
// RegisterSwapClientHandlerFromEndpoint is same as RegisterSwapClientHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterSwapClientHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
@ -408,14 +152,14 @@ func RegisterSwapClientHandlerFromEndpoint(ctx context.Context, mux *runtime.Ser
defer func() {
if err != nil {
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
}
return
}
go func() {
<-ctx.Done()
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
}
}()
}()
@ -426,19 +170,20 @@ func RegisterSwapClientHandlerFromEndpoint(ctx context.Context, mux *runtime.Ser
// RegisterSwapClientHandler registers the http handlers for service SwapClient to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterSwapClientHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
return RegisterSwapClientHandlerClient(ctx, mux, NewSwapClientClient(conn))
}
// RegisterSwapClientHandlerClient registers the http handlers for service SwapClient
// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SwapClientClient".
// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SwapClientClient"
// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
// "SwapClientClient" to call the correct interceptors.
func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SwapClientClient) error {
client := NewSwapClientClient(conn)
mux.Handle("POST", pattern_SwapClient_LoopOut_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
ctx, cancel := context.WithCancel(ctx)
defer cancel()
if cn, ok := w.(http.CloseNotifier); ok {
go func(done <-chan struct{}, closed <-chan bool) {
select {
case <-done:
case <-closed:
cancel()
}
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
@ -457,8 +202,17 @@ func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux,
})
mux.Handle("POST", pattern_SwapClient_LoopIn_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
ctx, cancel := context.WithCancel(ctx)
defer cancel()
if cn, ok := w.(http.CloseNotifier); ok {
go func(done <-chan struct{}, closed <-chan bool) {
select {
case <-done:
case <-closed:
cancel()
}
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
@ -477,8 +231,17 @@ func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux,
})
mux.Handle("GET", pattern_SwapClient_LoopOutTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
ctx, cancel := context.WithCancel(ctx)
defer cancel()
if cn, ok := w.(http.CloseNotifier); ok {
go func(done <-chan struct{}, closed <-chan bool) {
select {
case <-done:
case <-closed:
cancel()
}
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
@ -497,8 +260,17 @@ func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux,
})
mux.Handle("GET", pattern_SwapClient_LoopOutQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
ctx, cancel := context.WithCancel(ctx)
defer cancel()
if cn, ok := w.(http.CloseNotifier); ok {
go func(done <-chan struct{}, closed <-chan bool) {
select {
case <-done:
case <-closed:
cancel()
}
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
@ -517,8 +289,17 @@ func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux,
})
mux.Handle("GET", pattern_SwapClient_GetLoopInTerms_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
ctx, cancel := context.WithCancel(ctx)
defer cancel()
if cn, ok := w.(http.CloseNotifier); ok {
go func(done <-chan struct{}, closed <-chan bool) {
select {
case <-done:
case <-closed:
cancel()
}
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
@ -537,8 +318,17 @@ func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux,
})
mux.Handle("GET", pattern_SwapClient_GetLoopInQuote_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
ctx, cancel := context.WithCancel(ctx)
defer cancel()
if cn, ok := w.(http.CloseNotifier); ok {
go func(done <-chan struct{}, closed <-chan bool) {
select {
case <-done:
case <-closed:
cancel()
}
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
@ -560,17 +350,17 @@ func RegisterSwapClientHandlerClient(ctx context.Context, mux *runtime.ServeMux,
}
var (
pattern_SwapClient_LoopOut_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "out"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_SwapClient_LoopOut_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "out"}, ""))
pattern_SwapClient_LoopIn_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "in"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_SwapClient_LoopIn_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "loop", "in"}, ""))
pattern_SwapClient_LoopOutTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "out", "terms"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_SwapClient_LoopOutTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "out", "terms"}, ""))
pattern_SwapClient_LoopOutQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "out", "quote", "amt"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_SwapClient_LoopOutQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "out", "quote", "amt"}, ""))
pattern_SwapClient_GetLoopInTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "in", "terms"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_SwapClient_GetLoopInTerms_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "loop", "in", "terms"}, ""))
pattern_SwapClient_GetLoopInQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "in", "quote", "amt"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_SwapClient_GetLoopInQuote_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"v1", "loop", "in", "quote", "amt"}, ""))
)
var (

@ -355,6 +355,12 @@ message QuoteRequest {
case of a Loop In.
*/
int32 conf_target = 2;
/**
If external_htlc is true, we expect the htlc to be published by an external
actor.
*/
bool external_htlc = 3;
}
message QuoteResponse {

@ -21,7 +21,7 @@
"operationId": "LoopIn",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/looprpcSwapResponse"
}
@ -48,7 +48,7 @@
"operationId": "GetLoopInQuote",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/looprpcQuoteResponse"
}
@ -57,7 +57,6 @@
"parameters": [
{
"name": "amt",
"description": "*\nThe amount to swap in satoshis.",
"in": "path",
"required": true,
"type": "string",
@ -70,6 +69,14 @@
"required": false,
"type": "integer",
"format": "int32"
},
{
"name": "external_htlc",
"description": "*\nIf external_htlc is true, we expect the htlc to be published by an external\nactor.",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
}
],
"tags": [
@ -83,7 +90,7 @@
"operationId": "GetLoopInTerms",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/looprpcTermsResponse"
}
@ -100,7 +107,7 @@
"operationId": "LoopOut",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/looprpcSwapResponse"
}
@ -127,7 +134,7 @@
"operationId": "LoopOutQuote",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/looprpcQuoteResponse"
}
@ -136,7 +143,6 @@
"parameters": [
{
"name": "amt",
"description": "*\nThe amount to swap in satoshis.",
"in": "path",
"required": true,
"type": "string",
@ -149,6 +155,14 @@
"required": false,
"type": "integer",
"format": "int32"
},
{
"name": "external_htlc",
"description": "*\nIf external_htlc is true, we expect the htlc to be published by an external\nactor.",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
}
],
"tags": [
@ -162,7 +176,7 @@
"operationId": "LoopOutTerms",
"responses": {
"200": {
"description": "A successful response.",
"description": "",
"schema": {
"$ref": "#/definitions/looprpcTermsResponse"
}
@ -398,57 +412,6 @@
"title": "*\nOn-chain cltv expiry delta"
}
}
},
"protobufAny": {
"type": "object",
"properties": {
"type_url": {
"type": "string"
},
"value": {
"type": "string",
"format": "byte"
}
}
},
"runtimeStreamError": {
"type": "object",
"properties": {
"grpc_code": {
"type": "integer",
"format": "int32"
},
"http_code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"http_status": {
"type": "string"
},
"details": {
"type": "array",
"items": {
"$ref": "#/definitions/protobufAny"
}
}
}
}
},
"x-stream-definitions": {
"looprpcSwapStatus": {
"type": "object",
"properties": {
"result": {
"$ref": "#/definitions/looprpcSwapStatus"
},
"error": {
"$ref": "#/definitions/runtimeStreamError"
}
},
"title": "Stream result of looprpcSwapStatus"
}
}
}

@ -9,8 +9,6 @@ import (
proto "github.com/golang/protobuf/proto"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
math "math"
)
@ -597,23 +595,6 @@ type SwapServerServer interface {
LoopInQuote(context.Context, *ServerLoopInQuoteRequest) (*ServerLoopInQuoteResponse, error)
}
// UnimplementedSwapServerServer can be embedded to have forward compatible implementations.
type UnimplementedSwapServerServer struct {
}
func (*UnimplementedSwapServerServer) NewLoopOutSwap(ctx context.Context, req *ServerLoopOutRequest) (*ServerLoopOutResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method NewLoopOutSwap not implemented")
}
func (*UnimplementedSwapServerServer) LoopOutQuote(ctx context.Context, req *ServerLoopOutQuoteRequest) (*ServerLoopOutQuote, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoopOutQuote not implemented")
}
func (*UnimplementedSwapServerServer) NewLoopInSwap(ctx context.Context, req *ServerLoopInRequest) (*ServerLoopInResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method NewLoopInSwap not implemented")
}
func (*UnimplementedSwapServerServer) LoopInQuote(ctx context.Context, req *ServerLoopInQuoteRequest) (*ServerLoopInQuoteResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method LoopInQuote not implemented")
}
func RegisterSwapServerServer(s *grpc.Server, srv SwapServerServer) {
s.RegisterService(&_SwapServer_serviceDesc, srv)
}

Loading…
Cancel
Save