[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet-nim] branch master updated: disconnect from the cad
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet-nim] branch master updated: disconnect from the cadet service when CadetHandle is destroyed |
Date: |
Mon, 06 Aug 2018 21:49:31 +0200 |
This is an automated email from the git hooks/post-receive script.
lurchi pushed a commit to branch master
in repository gnunet-nim.
The following commit(s) were added to refs/heads/master by this push:
new 09a37a4 disconnect from the cadet service when CadetHandle is
destroyed
09a37a4 is described below
commit 09a37a459f8344444d9d73d6e816126971f713c9
Author: lurchi <address@hidden>
AuthorDate: Mon Aug 6 21:49:07 2018 +0200
disconnect from the cadet service when CadetHandle is destroyed
---
asynccadet.nim | 17 ++++++++++-------
gnunet_nim.nim | 2 +-
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/asynccadet.nim b/asynccadet.nim
index 59c28ee..47575b7 100644
--- a/asynccadet.nim
+++ b/asynccadet.nim
@@ -125,28 +125,31 @@ proc createChannel*(handle: ref CadetHandle,
unsafeAddr handlers[0])
return channel
-proc shutdownCb(cls: pointer) {.cdecl.} =
- let cadetHandle = cast[ptr CadetHandle](cls)
- echo "shutdownCb"
+proc disconnect(cadetHandle: ptr CadetHandle) =
+ if cadetHandle.handle.isNil():
+ return
for port in cadetHandle.openPorts:
- echo "closing port"
cadetHandle.internalClosePort(port)
cadetHandle.openPorts.setLen(0)
- echo "disconnecting cadet"
GNUNET_CADET_disconnect(cadetHandle.handle)
+ cadetHandle.handle = nil
+
+proc shutdownCb(cls: pointer) {.cdecl.} =
+ disconnect(cast[ptr CadetHandle](cls))
proc cadetConnectCb(cls: pointer) {.cdecl.} =
let app = cast[ptr GnunetApplication](cls)
var future: FutureBase
if app.connectFutures.take("cadet", future):
- let cadetHandle = new(CadetHandle)
+ var cadetHandle: ref CadetHandle
+ new(cadetHandle, proc(handle: ref CadetHandle) = disconnect(addr handle[]))
cadetHandle.handle = GNUNET_CADET_connect(app.configHandle)
cadetHandle.openPorts = newSeq[ref CadetPort]()
cadetHandle.shutdownTask = GNUNET_SCHEDULER_add_shutdown(shutdownCb,
addr
cadetHandle[])
Future[ref CadetHandle](future).complete(cadetHandle)
-proc connectCadet*(app: ref GnunetApplication): Future[ref CadetHandle] =
+proc initCadet*(app: ref GnunetApplication): Future[ref CadetHandle] =
result = newFuture[ref CadetHandle]("connectCadet")
app.connectFutures.add("cadet", result)
discard GNUNET_SCHEDULER_add_now(cadetConnectCb, addr app[])
diff --git a/gnunet_nim.nim b/gnunet_nim.nim
index 9088bdf..70feb28 100644
--- a/gnunet_nim.nim
+++ b/gnunet_nim.nim
@@ -10,7 +10,7 @@ proc firstTask(gnunetApp: ref GnunetApplication,
port: string,
inputFilename: string,
outputFilename: string) {.async.} =
- var cadet = await gnunetApp.connectCadet()
+ var cadet = await gnunetApp.initCadet()
var cadetChannel: ref CadetChannel
if peer.isNil() and not port.isNil():
let cadetPort = cadet.openPort(port)
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet-nim] branch master updated: disconnect from the cadet service when CadetHandle is destroyed,
gnunet <=