public async void ListenInvoices()
        {
            var request = new InvoiceSubscription();

            using (var _invoiceStream = lightningClient.SubscribeInvoices(request))
            {
                while (!lndChannel.ShutdownToken.IsCancellationRequested && await _invoiceStream.ResponseStream.MoveNext())
                {
                    var invoice = _invoiceStream.ResponseStream.Current;
                    if (invoice.State == Invoice.Types.InvoiceState.Settled)
                    {
                        if (OnInvoicePaid != null)
                        {
                            OnInvoicePaid(invoice);
                        }
                    }
                }
            }
            if (!lndChannel.ShutdownToken.IsCancellationRequested)
            {
                await Task.Delay(1000);

                ListenInvoices();
            }
        }
示例#2
0
        public async Task ResponseStreaming(Google.Protobuf.ByteString RHash)
        {
            var         request     = new InvoiceSubscription();
            PaymentHash paymentHash = new PaymentHash();

            paymentHash.RHash = RHash;

            using (var call = client.SubscribeInvoices(request))
            {
                while (await call.ResponseStream.MoveNext())
                {
                    var invoice = call.ResponseStream.Current;
                    Console.WriteLine(invoice.ToString());
                    var lookup = client.LookupInvoice(paymentHash);
                    if (lookup.Settled)
                    {
                        break;
                    }
                }
            }
        }
示例#3
0
        public async void SubscribeInvoices()
        {
            var request = new InvoiceSubscription();

            try
            {
                using (_invoiceStream = lndClient.SubscribeInvoices(request))
                {
                    while (await _invoiceStream.ResponseStream.MoveNext())
                    {
                        var invoice = _invoiceStream.ResponseStream.Current;
                        if (invoice.Settled)
                        {
                            var e = new InvoiceSettledEventArgs();
                            e.Invoice = invoice;
                            OnInvoiceSettled(this, e);
                        }
                    }
                }
            } catch (Exception e)
            {
                Debug.Log(e);
            }
        }