Respect the verbose verbose flag.
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user