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(); } }
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; } } } }
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); } }