Respect the verbose verbose flag.

This commit is contained in:
2020-05-21 14:22:52 +02:00
parent da67899921
commit 2d7a2be529
3 changed files with 46 additions and 29 deletions

View File

@@ -1,8 +1,20 @@
import net, json
import net, json, strutils
import commands
type
ServerArgs* = object of RootObj
verbose: bool
var
chan*: Channel[CommandMessage]
verbose: bool
proc newServerArgs*(verbose: bool): ServerArgs =
ServerArgs(verbose: verbose)
proc log(things: varargs[string, `$`]) =
if verbose:
echo things.join()
proc closeServer*() =
## Sends a "Close" command to the server
@@ -12,36 +24,37 @@ proc closeServer*() =
socket.send(c.wrap)
socket.close()
proc runServer*() =
var server = newSocket()
proc runServer*[ServerArgs](arg: ServerArgs) {.thread, nimcall.} =
verbose = arg.verbose
var server = net.newSocket()
server.bindAddr(Port(defaultPort))
server.listen()
echo "Control server is listening"
log "Control server is listening"
while true:
# Process client requests
var client = newSocket()
var client = net.newSocket()
server.accept(client)
echo("Client connected")
log "Client connected"
try:
var line = client.recvLine()
if line == "":
echo "No data from client"
log "No data from client"
continue
var jsonData = parseJson(line)
let msg = jsonData.to(CommandMessage)
case msg.command
of cClose:
echo "Server recieved termination command. Exiting."
log "Server recieved termination command. Exiting."
break
else:
# Pass command from client to main applicaiton
chan.send(msg)
except OSError:
echo "Server error: ", getCurrentExceptionMsg()
log "Server error: ", getCurrentExceptionMsg()
except:
echo "Invalid command from client: ", getCurrentExceptionMsg()
echo repr(getCurrentException())
log "Invalid command from client: ", getCurrentExceptionMsg()
log repr(getCurrentException())
server.close()