X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Fstructs%2FListen.mts;h=a19b9d5d206a5fc886cf53c3c06ed1b38cebac78;hb=0fcde6be16ac8c2d63bd5398d5396da5890461d7;hp=8326179acd35d51367a5d8eb42e1b06ee78fb0a7;hpb=bf08029c1ad5244b59902eada723b634dcade62d;p=ldk-java diff --git a/ts/structs/Listen.mts b/ts/structs/Listen.mts index 8326179a..a19b9d5d 100644 --- a/ts/structs/Listen.mts +++ b/ts/structs/Listen.mts @@ -280,12 +280,16 @@ import { MultiThreadedLockableScore } from '../structs/MultiThreadedLockableScor import CommonBase from './CommonBase.mjs'; import * as bindings from '../bindings.mjs' -import * as InternalUtils from '../InternalUtils.mjs' +/** An implementation of Listen */ export interface ListenInterface { + /**Notifies the listener that a block was added at the given height. + */ block_connected(block: Uint8Array, height: number): void; + /**Notifies the listener that a block was removed at the given height. + */ block_disconnected(header: Uint8Array, height: number): void; } @@ -293,6 +297,15 @@ class LDKListenHolder { held: Listen; } +/** + * The `Listen` trait is used to notify when blocks have been connected or disconnected from the + * chain. + * + * Useful when needing to replay chain data upon startup or as new chain events occur. Clients + * sourcing chain data using a block-oriented API should prefer this interface over [`Confirm`]. + * Such clients fetch the entire header chain whereas clients using [`Confirm`] only fetch headers + * when needed. + */ export class Listen extends CommonBase { /* @internal */ public bindings_instance?: bindings.LDKListen; @@ -303,14 +316,17 @@ export class Listen extends CommonBase { this.bindings_instance = null; } - static new_impl(arg: ListenInterface): Listen { + /** Creates a new instance of Listen from a given implementation */ + public static new_impl(arg: ListenInterface): Listen { const impl_holder: LDKListenHolder = new LDKListenHolder(); let structImplementation = { - block_connected (block: Uint8Array, height: number): void { - arg.block_connected(block, height); + block_connected (block: number, height: number): void { + const block_conv: Uint8Array = bindings.decodeUint8Array(block); + arg.block_connected(block_conv, height); }, - block_disconnected (header: Uint8Array, height: number): void { - arg.block_disconnected(header, height); + block_disconnected (header: number, height: number): void { + const header_conv: Uint8Array = bindings.decodeUint8Array(header); + arg.block_disconnected(header_conv, height); }, } as bindings.LDKListen; const ptr: number = bindings.LDKListen_new(structImplementation); @@ -319,12 +335,19 @@ export class Listen extends CommonBase { impl_holder.held.bindings_instance = structImplementation; return impl_holder.held; } + + /** + * Notifies the listener that a block was added at the given height. + */ public block_connected(block: Uint8Array, height: number): void { - bindings.Listen_block_connected(this.ptr, block, height); + bindings.Listen_block_connected(this.ptr, bindings.encodeUint8Array(block), height); } + /** + * Notifies the listener that a block was removed at the given height. + */ public block_disconnected(header: Uint8Array, height: number): void { - bindings.Listen_block_disconnected(this.ptr, InternalUtils.check_arr_len(header, 80), height); + bindings.Listen_block_disconnected(this.ptr, bindings.encodeUint8Array(bindings.check_arr_len(header, 80)), height); } }