Fix line endings for server.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
|
||||
import json
|
||||
const
|
||||
defaultPort* = 5555 ## Default port at which the control server will run
|
||||
|
||||
@@ -12,4 +12,7 @@ type
|
||||
parameter*: string ## Optional parameter for the command
|
||||
|
||||
proc newCommand*(c: Command, p: string = ""): CommandMessage =
|
||||
CommandMessage(command: c, parameter: p)
|
||||
CommandMessage(command: c, parameter: p)
|
||||
|
||||
proc wrap*(msg: CommandMessage): string =
|
||||
$(%msg) & "\r\L"
|
||||
@@ -2,12 +2,21 @@ import net
|
||||
import argparse
|
||||
import commands
|
||||
|
||||
var socket = newSocket()
|
||||
|
||||
proc sendCommand(server, port: string, msg: CommandMessage) =
|
||||
socket.connect(server, Port(port.parseInt))
|
||||
if not socket.trySend(msg.wrap):
|
||||
echo "Cannot send command: ", msg
|
||||
socket.close()
|
||||
|
||||
var p = newParser("pixctrl"):
|
||||
help("Control utilitiy for randopix")
|
||||
option("-s", "--server", help="Host running the randopix server", default="127.0.0.1")
|
||||
option("-p", "--port", help="Port to connect to the randopix server", default = $defaultPort)
|
||||
|
||||
var socket = newSocket()
|
||||
socket.connect("127.0.0.1", Port(defaultPort))
|
||||
socket.send("Hello, Sockets!\r\L")
|
||||
socket.close()
|
||||
command("refresh"):
|
||||
run:
|
||||
let c = newCommand(Command.Refresh)
|
||||
sendCommand(opts.parentOpts.server, opts.parentOpts.port, c)
|
||||
|
||||
p.run(commandLineParams())
|
||||
@@ -129,6 +129,7 @@ proc checkServerChannel(parameter: string): bool =
|
||||
else:
|
||||
echo "Command ignored", msg.command
|
||||
|
||||
sleep(100)
|
||||
result = false
|
||||
discard idleAdd(checkServerChannel, parameter)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import net, json, marshal
|
||||
import net, json
|
||||
import commands
|
||||
|
||||
var
|
||||
@@ -9,23 +9,28 @@ proc closeServer*() =
|
||||
var socket = newSocket()
|
||||
socket.connect("127.0.0.1", Port(defaultPort))
|
||||
let c = newCommand(Command.Close)
|
||||
socket.send($(%c))
|
||||
socket.send(c.wrap)
|
||||
socket.close()
|
||||
|
||||
proc runServer*() =
|
||||
var socket = newSocket()
|
||||
socket.bindAddr(Port(defaultPort))
|
||||
socket.listen()
|
||||
var server = newSocket()
|
||||
server.bindAddr(Port(defaultPort))
|
||||
server.listen()
|
||||
echo "Control server is listening"
|
||||
|
||||
while true:
|
||||
# Process client requests
|
||||
var client = newSocket()
|
||||
socket.accept(client)
|
||||
echo("Incomming client")
|
||||
server.accept(client)
|
||||
echo("Client connected")
|
||||
try:
|
||||
var line = client.recvLine()
|
||||
let msg = to[CommandMessage](line)
|
||||
if line == "":
|
||||
echo "No data from client"
|
||||
continue
|
||||
|
||||
var jsonData = parseJson(line)
|
||||
let msg = jsonData.to(CommandMessage)
|
||||
case msg.command
|
||||
of Command.Close:
|
||||
echo "Server recieved termination command. Exiting."
|
||||
@@ -37,4 +42,6 @@ proc runServer*() =
|
||||
except OSError:
|
||||
echo "Server error: ", getCurrentExceptionMsg()
|
||||
except:
|
||||
echo "Invalid command from client"
|
||||
echo "Invalid command from client: ", getCurrentExceptionMsg()
|
||||
echo repr(getCurrentException())
|
||||
server.close()
|
||||
Reference in New Issue
Block a user