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