mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-13 16:25:00 +00:00
Libwaku spike start (#510)
* libwaku init e2e * basic cstring check * wip
This commit is contained in:
parent
e2678d55ff
commit
0d5e14f83c
2
.gitignore
vendored
2
.gitignore
vendored
@ -34,3 +34,5 @@ rln
|
||||
package-lock.json
|
||||
node_modules/
|
||||
/.update.timestamp
|
||||
|
||||
libwaku
|
||||
|
12
waku/v2/node/libwaku/README.md
Normal file
12
waku/v2/node/libwaku/README.md
Normal file
@ -0,0 +1,12 @@
|
||||
# libwaku
|
||||
|
||||
Exposes a C API that can be used by other environments other than C.
|
||||
|
||||
## Running
|
||||
|
||||
Make sure you run `$PROJECTDIR/env.sh bash` first. Then:
|
||||
|
||||
```
|
||||
./build.sh
|
||||
./libwaku
|
||||
```
|
4
waku/v2/node/libwaku/build.sh
Executable file
4
waku/v2/node/libwaku/build.sh
Executable file
@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
nim c --skipParentCfg libwaku.nim
|
||||
gcc libwaku.c ./libwaku.a -lm -g -o libwaku
|
12
waku/v2/node/libwaku/libwaku.c
Normal file
12
waku/v2/node/libwaku/libwaku.c
Normal file
@ -0,0 +1,12 @@
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "libwaku.h"
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
char* string;
|
||||
NimMain();
|
||||
//echo();
|
||||
string = info("hello there");
|
||||
printf("Info: %s", string);
|
||||
}
|
9
waku/v2/node/libwaku/libwaku.h
Normal file
9
waku/v2/node/libwaku/libwaku.h
Normal file
@ -0,0 +1,9 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// Initialize Nim
|
||||
void NimMain();
|
||||
|
||||
char* info(const char* wakuNode);
|
||||
|
||||
void echo();
|
36
waku/v2/node/libwaku/libwaku.nim
Normal file
36
waku/v2/node/libwaku/libwaku.nim
Normal file
@ -0,0 +1,36 @@
|
||||
# libwaku
|
||||
#
|
||||
# Exposes a C API that can be used by other environment than C.
|
||||
|
||||
# TODO Start a node
|
||||
# TODO Mock info call
|
||||
# TODO Write header file
|
||||
# TODO Write example C code file
|
||||
# TODO Wrap info call
|
||||
# TODO Init a node
|
||||
|
||||
# proc info*(node: WakuNode): WakuInfo =
|
||||
proc info(foo: cstring): cstring {.exportc.} =
|
||||
echo "info about node"
|
||||
echo foo
|
||||
return foo
|
||||
|
||||
proc echo() {.exportc.} =
|
||||
echo "echo"
|
||||
|
||||
# TODO Here at the moment, start the node
|
||||
# Then do info call
|
||||
# WIP
|
||||
#proc main() {.async.} =
|
||||
# let
|
||||
# rng = crypto.newRng()
|
||||
# conf = WakuNodeConf.load()
|
||||
# (extIp, extTcpPort, extUdpPort) = setupNat(conf.nat, clientId,
|
||||
# Port(uint16(conf.tcpPort) + conf.portsShift),
|
||||
# Port(uint16(conf.udpPort) + conf.portsShift))
|
||||
# node = WakuNode.init(conf.nodeKey, conf.listenAddress,
|
||||
# Port(uint16(conf.tcpPort) + conf.portsShift), extIp, extTcpPort)
|
||||
#
|
||||
# await node.start()
|
||||
#
|
||||
#main()
|
5
waku/v2/node/libwaku/nim.cfg
Normal file
5
waku/v2/node/libwaku/nim.cfg
Normal file
@ -0,0 +1,5 @@
|
||||
-app:staticlib
|
||||
o:"libwaku.a"
|
||||
noMain
|
||||
header
|
||||
-d:"chronicles_sinks=textlines"
|
Loading…
x
Reference in New Issue
Block a user