From c95e7db18749eeec3631a4acf46dbc6752700f4e Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Thu, 7 May 2020 14:20:18 -0400 Subject: [PATCH] feat: subscribing to signals --- nim_status_client.nimble | 18 +++++++++--------- src/applicationLogic.nim | 12 ++++++++++++ src/libstatus.nim | 4 +++- src/status.nim | 3 +++ 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/nim_status_client.nimble b/nim_status_client.nimble index 0e1cf98831..198903cff3 100644 --- a/nim_status_client.nimble +++ b/nim_status_client.nimble @@ -1,10 +1,10 @@ -[Package] -version = "0.1.0" -author = "Richard Ramos" -description = "A new awesome nimble package" -license = "MIT" -srcDir = "src" -bin = "nim_status_client" +# Package -[Deps] -Requires: "nim >= 1.0.0, nimqml >= 0.7.0" \ No newline at end of file +version = "0.1.0" +author = "Your Name" +description = "Example .nimble file." +license = "MIT" + +# Deps + +requires "nim >= 0.10.0" \ No newline at end of file diff --git a/src/applicationLogic.nim b/src/applicationLogic.nim index 710ef78a0b..94cd27aca7 100644 --- a/src/applicationLogic.nim +++ b/src/applicationLogic.nim @@ -1,5 +1,12 @@ import NimQml import status +import libstatus + + +var signalHandler: SignalCallback = proc(p0: cstring): void = + setupForeignThreadGc() + echo $p0 + tearDownForeignThreadGc() QtObject: type ApplicationLogic* = ref object of QObject @@ -17,6 +24,11 @@ QtObject: discard status.addPeer("enode://2c8de3cbb27a3d30cbb5b3e003bc722b126f5aef82e2052aaef032ca94e0c7ad219e533ba88c70585ebd802de206693255335b100307645ab5170e88620d2a81@47.244.221.14:443") echo status.callPrivateRPC("{\"jsonrpc\":\"2.0\", \"method\":\"wakuext_requestMessages\", \"params\":[{\"topics\": [\"0x7998f3c8\"]}], \"id\": 1}") + # Experiment + status.setSignalHandler(signalHandler) + + + # ¯\_(ツ)_/¯ dunno what is this proc setup(self: ApplicationLogic) = # discard status.onMessage(self.onMessage) diff --git a/src/libstatus.nim b/src/libstatus.nim index 29ce3c8661..cd836ee047 100644 --- a/src/libstatus.nim +++ b/src/libstatus.nim @@ -16,4 +16,6 @@ proc callPrivateRPC*(inputJSON: cstring): cstring {.importc: "CallPrivateRPC".} proc addPeer*(peer: cstring): cstring {.importc: "AddPeer".} -# proc setSignalEventCallback*(callback: proc): void {.importc: "SetSignalEventCallback".} +type SignalCallback* = proc(eventMessage: cstring): void + +proc setSignalEventCallback*(callback: SignalCallback) {.importc: "SetSignalEventCallback".} diff --git a/src/status.nim b/src/status.nim index 3cc6aa5819..a0ad7c16c5 100644 --- a/src/status.nim +++ b/src/status.nim @@ -11,6 +11,9 @@ proc recreateDir(dirname: string) = removeDir(dirname) createDir(dirname) +proc setSignalHandler*(something: SignalCallback) = + libstatus.setSignalEventCallback(something) + proc setupNewAccount*() = # Deleting directories recreateDir(datadir)