X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Fstructs%2FLockableScore.mts;fp=ts%2Fstructs%2FLockableScore.mts;h=7582f892420e5bb529a662c87bb67722d7445124;hb=c629a01650402c8e2f9b9db8ced9ed63ce687727;hp=564bacbe3ae1361dc598dceab8c6da49056abfa2;hpb=d1d0121c000b713c10fd0bedd249eb8dda2e4db7;p=ldk-java diff --git a/ts/structs/LockableScore.mts b/ts/structs/LockableScore.mts index 564bacbe..7582f892 100644 --- a/ts/structs/LockableScore.mts +++ b/ts/structs/LockableScore.mts @@ -283,7 +283,10 @@ import * as bindings from '../bindings.mjs' +/** An implementation of LockableScore */ export interface LockableScoreInterface { + /**Returns the locked scorer. + */ lock(): Score; } @@ -291,6 +294,16 @@ class LDKLockableScoreHolder { held: LockableScore; } +/** + * A scorer that is accessed under a lock. + * + * Needed so that calls to [`Score::channel_penalty_msat`] in [`find_route`] can be made while + * having shared ownership of a scorer but without requiring internal locking in [`Score`] + * implementations. Internal locking would be detrimental to route finding performance and could + * result in [`Score::channel_penalty_msat`] returning a different value for the same channel. + * + * [`find_route`]: crate::routing::router::find_route + */ export class LockableScore extends CommonBase { /* @internal */ public bindings_instance?: bindings.LDKLockableScore; @@ -301,7 +314,8 @@ export class LockableScore extends CommonBase { this.bindings_instance = null; } - static new_impl(arg: LockableScoreInterface): LockableScore { + /** Creates a new instance of LockableScore from a given implementation */ + public static new_impl(arg: LockableScoreInterface): LockableScore { const impl_holder: LDKLockableScoreHolder = new LDKLockableScoreHolder(); let structImplementation = { lock (): number { @@ -317,6 +331,10 @@ export class LockableScore extends CommonBase { impl_holder.held.bindings_instance = structImplementation; return impl_holder.held; } + + /** + * Returns the locked scorer. + */ public lock(): Score { const ret: number = bindings.LockableScore_lock(this.ptr); const ret_hu_conv: Score = new Score(null, ret);