import CommonBase from './CommonBase.mjs';
import * as bindings from '../bindings.mjs'
-import * as InternalUtils from '../InternalUtils.mjs'
+/** An implementation of LockableScore */
export interface LockableScoreInterface {
+ /**Returns the locked scorer.
+ */
lock(): Score;
}
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;
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 {
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);