@@ -26,6 +26,7 @@ import org.lightningdevkit.ldknode.NodeStatus
2626import org.lightningdevkit.ldknode.PaymentDetails
2727import org.lightningdevkit.ldknode.PaymentId
2828import org.lightningdevkit.ldknode.Txid
29+ import org.lightningdevkit.ldknode.UserChannelId
2930import org.lightningdevkit.ldknode.defaultConfig
3031import to.bitkit.async.BaseCoroutineScope
3132import to.bitkit.async.ServiceQueue
@@ -227,6 +228,26 @@ class LightningService @Inject constructor(
227228 }
228229 }
229230
231+ suspend fun connectPeer (peer : LnPeer ): Result <Unit > {
232+ val node = this .node ? : throw ServiceError .NodeNotSetup
233+
234+ return ServiceQueue .LDK .background {
235+ try {
236+ Logger .debug(" Connecting peer: $peer " )
237+
238+ node.connect(peer.nodeId, peer.address, persist = true )
239+
240+ Logger .info(" Peer connected: $peer " )
241+
242+ Result .success(Unit )
243+ } catch (e: NodeException ) {
244+ val error = LdkError (e)
245+ Logger .error(" Peer connect error: $peer " , error)
246+ Result .failure(error)
247+ }
248+ }
249+ }
250+
230251 suspend fun disconnectPeer (peer : LnPeer ) {
231252 val node = this .node ? : throw ServiceError .NodeNotSetup
232253 Logger .debug(" Disconnecting peer: $peer " )
@@ -238,25 +259,36 @@ class LightningService @Inject constructor(
238259 } catch (e: NodeException ) {
239260 Logger .warn(" Peer disconnect error: $peer " , LdkError (e))
240261 }
241- }
242- // endregion
262+ } // endregion
243263
244264 // region channels
245- suspend fun openChannel (peer : LnPeer , channelAmountSats : ULong , pushToCounterpartySats : ULong? = null) {
246- val node = this @LightningService.node ? : throw ServiceError .NodeNotSetup
265+ suspend fun openChannel (
266+ peer : LnPeer ,
267+ channelAmountSats : ULong ,
268+ pushToCounterpartySats : ULong? = null,
269+ ) : Result <UserChannelId > {
270+ val node = this .node ? : throw ServiceError .NodeNotSetup
247271
248- try {
249- ServiceQueue .LDK .background {
250- node.openChannel(
272+ return ServiceQueue .LDK .background {
273+ try {
274+ Logger .debug(" Initiating channel open (sats: $channelAmountSats ) with peer: $peer " )
275+
276+ val userChannelId = node.openChannel(
251277 nodeId = peer.nodeId,
252278 address = peer.address,
253279 channelAmountSats = channelAmountSats,
254280 pushToCounterpartyMsat = pushToCounterpartySats?.millis,
255281 channelConfig = null ,
256282 )
283+
284+ Logger .info(" Channel open initiated, userChannelId: $userChannelId " )
285+
286+ Result .success(userChannelId)
287+ } catch (e: NodeException ) {
288+ val error = LdkError (e)
289+ Logger .error(" Error initiating channel open" , error)
290+ Result .failure(error)
257291 }
258- } catch (e: NodeException ) {
259- throw LdkError (e)
260292 }
261293 }
262294
0 commit comments