Skip to content

Commit eb40db3

Browse files
committed
Use counter for cached traits.
1 parent be7ee7a commit eb40db3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+299
-527
lines changed

bindings/LDK/Bindings.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6330,9 +6330,16 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
63306330
/* STATIC_METHODS_END */
63316331

63326332
static var nativelyExposedInstances = [UInt: NativeTraitWrapper]()
6333+
static var nativelyExposedInstanceReferenceCounter = [UInt: UInt]()
63336334

63346335
public class func cacheInstance(instance: NativeTraitWrapper) {
6335-
Self.nativelyExposedInstances[instance.globalInstanceNumber] = instance
6336+
let key = instance.globalInstanceNumber
6337+
let counter = Self.nativelyExposedInstanceReferenceCounter[key] ?? 0
6338+
Self.nativelyExposedInstanceReferenceCounter[key] = counter + 1
6339+
if counter == 0 {
6340+
print("Caching global instance \(key)")
6341+
Self.nativelyExposedInstances[key] = instance
6342+
}
63366343
}
63376344

63386345
public class func instanceToPointer(instance: NativeTraitWrapper) -> UnsafeMutableRawPointer {
@@ -6344,13 +6351,20 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
63446351

63456352
public class func pointerToInstance<T: NativeTraitWrapper>(pointer: UnsafeRawPointer, sourceMarker: String?) -> T{
63466353
let key = UInt(bitPattern: pointer)
6354+
print("\(sourceMarker) > Releasing global instance \(key)", severity: .DEBUG)
63476355
let value = Self.nativelyExposedInstances[key] as! T
63486356
return value
63496357
}
63506358

6351-
public class func removeInstancePointer(instance: NativeTypeWrapper) -> Bool {
6352-
Self.nativelyExposedInstances.removeValue(forKey: instance.globalInstanceNumber)
6353-
instance.pointerDebugDescription = nil
6359+
public class func removeInstancePointer(instance: NativeTraitWrapper) -> Bool {
6360+
let key = instance.globalInstanceNumber
6361+
Self.nativelyExposedInstanceReferenceCounter[key] = Self.nativelyExposedInstanceReferenceCounter[key]! - 1
6362+
let referenceCount = Self.nativelyExposedInstanceReferenceCounter[key]
6363+
if referenceCount == 0 {
6364+
print("Uncaching global instance \(key)")
6365+
Self.nativelyExposedInstances.removeValue(forKey: key)
6366+
instance.pointerDebugDescription = nil
6367+
}
63546368
return true
63556369
}
63566370

@@ -6498,7 +6512,7 @@ withUnsafePointer(to: Bindings.array_to_tuple32(array: random_seed_bytes)) { (ra
64986512
*/
64996513

65006514
public class func get_ldk_swift_bindings_version() -> String {
6501-
return "b058a25ba435d31e8885e804c0a65425e456ea10"
6515+
return "be7ee7abb0bf358457f0e91a0403146885e9bc24"
65026516
}
65036517

65046518
}

bindings/LDK/traits/Access.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ open class Access: NativeTraitWrapper {
6767
deinit {
6868
if !self.dangling {
6969
Bindings.print("Freeing Access \(self.instanceNumber).")
70-
self.free()
70+
// self.free()
7171
} else {
7272
Bindings.print("Not freeing Access \(self.instanceNumber) due to dangle.")
7373
}
@@ -83,7 +83,10 @@ return Result_TxOutAccessErrorZ()
8383

8484
open func free() -> Void {
8585
/* EDIT ME */
86-
Bindings.removeInstancePointer(instance: self)
86+
87+
Bindings.print("Deactivating Access \(self.instanceNumber).")
88+
Bindings.removeInstancePointer(instance: self)
89+
8790
}
8891

8992
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/BaseSign.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ open class BaseSign: NativeTraitWrapper {
171171
deinit {
172172
if !self.dangling {
173173
Bindings.print("Freeing BaseSign \(self.instanceNumber).")
174-
self.free()
174+
// self.free()
175175
} else {
176176
Bindings.print("Not freeing BaseSign \(self.instanceNumber) due to dangle.")
177177
}
@@ -271,7 +271,10 @@ return Result_C2Tuple_SignatureSignatureZNoneZ()
271271

272272
open func free() -> Void {
273273
/* EDIT ME */
274-
Bindings.removeInstancePointer(instance: self)
274+
275+
Bindings.print("Deactivating BaseSign \(self.instanceNumber).")
276+
Bindings.removeInstancePointer(instance: self)
277+
275278
}
276279

277280
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/BindingsType.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ open class BindingsType: NativeTraitWrapper {
101101
deinit {
102102
if !self.dangling {
103103
Bindings.print("Freeing BindingsType \(self.instanceNumber).")
104-
self.free()
104+
// self.free()
105105
} else {
106106
Bindings.print("Not freeing BindingsType \(self.instanceNumber) due to dangle.")
107107
}
@@ -131,7 +131,10 @@ return [UInt8]()
131131

132132
open func free() -> Void {
133133
/* EDIT ME */
134-
Bindings.removeInstancePointer(instance: self)
134+
135+
Bindings.print("Deactivating BindingsType \(self.instanceNumber).")
136+
Bindings.removeInstancePointer(instance: self)
137+
135138
}
136139

137140
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/BroadcasterInterface.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ open class BroadcasterInterface: NativeTraitWrapper {
6262
deinit {
6363
if !self.dangling {
6464
Bindings.print("Freeing BroadcasterInterface \(self.instanceNumber).")
65-
self.free()
65+
// self.free()
6666
} else {
6767
Bindings.print("Not freeing BroadcasterInterface \(self.instanceNumber) due to dangle.")
6868
}
@@ -78,7 +78,10 @@ open class BroadcasterInterface: NativeTraitWrapper {
7878

7979
open func free() -> Void {
8080
/* EDIT ME */
81-
Bindings.removeInstancePointer(instance: self)
81+
82+
Bindings.print("Deactivating BroadcasterInterface \(self.instanceNumber).")
83+
Bindings.removeInstancePointer(instance: self)
84+
8285
}
8386

8487
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/ChannelMessageHandler.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ let msg = Shutdown(pointer: msgPointer.pointee).dangle().clone();
216216
deinit {
217217
if !self.dangling {
218218
Bindings.print("Freeing ChannelMessageHandler \(self.instanceNumber).")
219-
self.free()
219+
// self.free()
220220
} else {
221221
Bindings.print("Not freeing ChannelMessageHandler \(self.instanceNumber) due to dangle.")
222222
}
@@ -365,7 +365,10 @@ let msg = Shutdown(pointer: msgPointer.pointee).dangle().clone();
365365

366366
open func free() -> Void {
367367
/* EDIT ME */
368-
Bindings.removeInstancePointer(instance: self)
368+
369+
Bindings.print("Deactivating ChannelMessageHandler \(self.instanceNumber).")
370+
Bindings.removeInstancePointer(instance: self)
371+
369372
}
370373

371374
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/Confirm.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ open class Confirm: NativeTraitWrapper {
104104
deinit {
105105
if !self.dangling {
106106
Bindings.print("Freeing Confirm \(self.instanceNumber).")
107-
self.free()
107+
// self.free()
108108
} else {
109109
Bindings.print("Not freeing Confirm \(self.instanceNumber) due to dangle.")
110110
}
@@ -141,7 +141,10 @@ return [LDKTxid]()
141141

142142
open func free() -> Void {
143143
/* EDIT ME */
144-
Bindings.removeInstancePointer(instance: self)
144+
145+
Bindings.print("Deactivating Confirm \(self.instanceNumber).")
146+
Bindings.removeInstancePointer(instance: self)
147+
145148
}
146149

147150
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/CustomMessageHandler.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ open class CustomMessageHandler: NativeTraitWrapper {
7676
deinit {
7777
if !self.dangling {
7878
Bindings.print("Freeing CustomMessageHandler \(self.instanceNumber).")
79-
self.free()
79+
// self.free()
8080
} else {
8181
Bindings.print("Not freeing CustomMessageHandler \(self.instanceNumber) due to dangle.")
8282
}
@@ -99,7 +99,10 @@ return [LDKC2Tuple_PublicKeyTypeZ]()
9999

100100
open func free() -> Void {
101101
/* EDIT ME */
102-
Bindings.removeInstancePointer(instance: self)
102+
103+
Bindings.print("Deactivating CustomMessageHandler \(self.instanceNumber).")
104+
Bindings.removeInstancePointer(instance: self)
105+
103106
}
104107

105108
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/CustomMessageReader.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ open class CustomMessageReader: NativeTraitWrapper {
6262
deinit {
6363
if !self.dangling {
6464
Bindings.print("Freeing CustomMessageReader \(self.instanceNumber).")
65-
self.free()
65+
// self.free()
6666
} else {
6767
Bindings.print("Not freeing CustomMessageReader \(self.instanceNumber) due to dangle.")
6868
}
@@ -78,7 +78,10 @@ return Result_COption_TypeZDecodeErrorZ()
7878

7979
open func free() -> Void {
8080
/* EDIT ME */
81-
Bindings.removeInstancePointer(instance: self)
81+
82+
Bindings.print("Deactivating CustomMessageReader \(self.instanceNumber).")
83+
Bindings.removeInstancePointer(instance: self)
84+
8285
}
8386

8487
/* SWIFT_CALLBACKS_END */

bindings/LDK/traits/EventHandler.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ open class EventHandler: NativeTraitWrapper {
6363
deinit {
6464
if !self.dangling {
6565
Bindings.print("Freeing EventHandler \(self.instanceNumber).")
66-
self.free()
66+
// self.free()
6767
} else {
6868
Bindings.print("Not freeing EventHandler \(self.instanceNumber) due to dangle.")
6969
}
@@ -79,7 +79,10 @@ open class EventHandler: NativeTraitWrapper {
7979

8080
open func free() -> Void {
8181
/* EDIT ME */
82-
Bindings.removeInstancePointer(instance: self)
82+
83+
Bindings.print("Deactivating EventHandler \(self.instanceNumber).")
84+
Bindings.removeInstancePointer(instance: self)
85+
8386
}
8487

8588
/* SWIFT_CALLBACKS_END */

0 commit comments

Comments
 (0)