mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-18 22:26:30 +01:00
add kill to relay.py; call from test script using curl
It'll eventually get called from Android and maybe linux, but for now it's cool to have games disappear from the showinplay display when they're done.
This commit is contained in:
parent
8aeba861cf
commit
a1433e5f3d
2 changed files with 67 additions and 9 deletions
|
@ -3,14 +3,40 @@
|
||||||
import base64, json, mod_python, socket, struct, sys
|
import base64, json, mod_python, socket, struct, sys
|
||||||
|
|
||||||
PROTOCOL_VERSION = 0
|
PROTOCOL_VERSION = 0
|
||||||
|
PRX_DEVICE_GONE = 3
|
||||||
PRX_GET_MSGS = 4
|
PRX_GET_MSGS = 4
|
||||||
|
|
||||||
try:
|
# try:
|
||||||
from mod_python import apache
|
# from mod_python import apache
|
||||||
apacheAvailable = True
|
# apacheAvailable = True
|
||||||
except ImportError:
|
# except ImportError:
|
||||||
apacheAvailable = False
|
# apacheAvailable = False
|
||||||
|
|
||||||
|
def kill(req, params):
|
||||||
|
print(params)
|
||||||
|
params = json.loads(params)
|
||||||
|
count = len(params)
|
||||||
|
|
||||||
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
sock.connect(('127.0.0.1', 10998))
|
||||||
|
|
||||||
|
header = struct.Struct('!BBh')
|
||||||
|
strLens = 0
|
||||||
|
for ii in range(count):
|
||||||
|
strLens += len(params[ii]['relayID']) + 1
|
||||||
|
size = header.size + (2*count) + strLens
|
||||||
|
sock.send(struct.Struct('!h').pack(size))
|
||||||
|
sock.send(header.pack(PROTOCOL_VERSION, PRX_DEVICE_GONE, count))
|
||||||
|
|
||||||
|
for ii in range(count):
|
||||||
|
elem = params[ii]
|
||||||
|
asBytes = bytes(elem['relayID'])
|
||||||
|
sock.send(struct.Struct('!H%dsc' % (len(asBytes))).pack(elem['seed'], asBytes, '\n'))
|
||||||
|
sock.close()
|
||||||
|
|
||||||
|
result = {'err': 0}
|
||||||
|
return json.dumps(result)
|
||||||
|
|
||||||
def post(req, params, timeoutSecs = 1.0):
|
def post(req, params, timeoutSecs = 1.0):
|
||||||
err = 'none'
|
err = 'none'
|
||||||
dataLen = 0
|
dataLen = 0
|
||||||
|
@ -81,10 +107,26 @@ def query(req, ids, timeoutSecs = 5.0):
|
||||||
return json.dumps(msgsLists)
|
return json.dumps(msgsLists)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
print(query(None, json.dumps(sys.argv[1:])))
|
result = None
|
||||||
# Params = { 'data' : 'V2VkIE9jdCAxOCAwNjowNDo0OCBQRFQgMjAxNwo=' }
|
if len(sys.argv) > 1:
|
||||||
# params = json.dumps(params)
|
cmd = sys.argv[1]
|
||||||
# print(post(None, params))
|
args = sys.argv[2:]
|
||||||
|
if cmd == 'query':
|
||||||
|
result = query(None, json.dumps(args))
|
||||||
|
elif cmd == 'post':
|
||||||
|
# Params = { 'data' : 'V2VkIE9jdCAxOCAwNjowNDo0OCBQRFQgMjAxNwo=' }
|
||||||
|
# params = json.dumps(params)
|
||||||
|
# print(post(None, params))
|
||||||
|
None
|
||||||
|
elif cmd == 'kill':
|
||||||
|
result = kill( None, json.dumps([{'relayID': args[0], 'seed':int(args[1])}]) )
|
||||||
|
|
||||||
|
if result:
|
||||||
|
print '->', result
|
||||||
|
else:
|
||||||
|
print 'USAGE: query [connname/hid]*'
|
||||||
|
# print ' post '
|
||||||
|
print ' kill <relayID> <seed>'
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -308,6 +308,21 @@ launch() {
|
||||||
# exec $CMD >/dev/null 2>>$LOG
|
# exec $CMD >/dev/null 2>>$LOG
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
send_dead() {
|
||||||
|
ID=$1
|
||||||
|
DB=${FILES[$ID]}
|
||||||
|
while :; do
|
||||||
|
[ -f $DB ] || break # it's gone
|
||||||
|
RES=$(echo 'select relayid, seed from games limit 1;' | sqlite3 -separator ' ' $DB || /bin/true)
|
||||||
|
[ -n "$RES" ] && break
|
||||||
|
sleep 0.2
|
||||||
|
done
|
||||||
|
RELAYID=$(echo $RES | awk '{print $1}')
|
||||||
|
SEED=$(echo $RES | awk '{print $2}')
|
||||||
|
JSON="[{\"relayID\":\"$RELAYID\", \"seed\":$SEED}]"
|
||||||
|
curl -G --data-urlencode params="$JSON" http://$HOST/xw4/relay.py/kill >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
close_device() {
|
close_device() {
|
||||||
ID=$1
|
ID=$1
|
||||||
MVTO=$2
|
MVTO=$2
|
||||||
|
@ -423,6 +438,7 @@ check_game() {
|
||||||
for ID in $OTHERS $KEY; do
|
for ID in $OTHERS $KEY; do
|
||||||
echo -n "${ID}:${LOGS[$ID]}, "
|
echo -n "${ID}:${LOGS[$ID]}, "
|
||||||
kill_from_log ${LOGS[$ID]} || /bin/true
|
kill_from_log ${LOGS[$ID]} || /bin/true
|
||||||
|
send_dead $ID
|
||||||
close_device $ID $DONEDIR "game over"
|
close_device $ID $DONEDIR "game over"
|
||||||
done
|
done
|
||||||
echo ""
|
echo ""
|
||||||
|
|
Loading…
Reference in a new issue