#!/bin/env python3
import socket
from sys import argv, stderr, exit
argv0 = 'taken.py'
def usage():
global argv0
print(f'usage: {argv0} <host> <port>', file=stderr)
exit(-1)
class JobError(Exception):
pass
def send_cmd(reader, writer, cmd):
lines = []
writer.write(cmd.encode()+b'\n')
writer.flush()
while True:
line = reader.readline()
if line == b'?\n':
raise JobError(cmd)
elif line == b'OKAY\n':
return lines
else:
lines.append(line.decode().strip())
if len(argv) > 0:
argv0 = argv[0]
argv = argv[1:]
if len(argv) != 2:
usage()
host, port = argv
sok = socket.create_connection((host, port))
reader, writer = sok.makefile('rb'), sok.makefile('wb')
taken = send_cmd(reader, writer, 'list taken jobs')
for job in taken:
jid = job.split('\t',1)[0]
print(f'job {jid}:')
info = send_cmd(reader, writer, f'info for job {jid} is')
for line in info:
print(f'\t{line}')
print()
meta = send_cmd(reader, writer, 'meta is')
for line in meta:
print(f'\t{line}')
print()