diff --git a/TimeWaster.py b/TimeWaster.py index 595bb64..1a246d3 100644 --- a/TimeWaster.py +++ b/TimeWaster.py @@ -1,4 +1,10 @@ import time, uuid, signal, random, os +from enum import Enum + +class JobStatus(Enum): + QUEUED = 1 + FINISHED = 2 + ERRORED = 3 class TimeWaster: def __init__(self): @@ -6,8 +12,11 @@ class TimeWaster: self.jobs: dict = {} def handleNewJob(self): - jobId: uuid.UUID = uuid.uuid4() - self.jobs[jobId] = "exists i guess" + msg = os.read(0, 1024) + if (msg) == "job": + jobId: uuid.UUID = uuid.uuid4() + self.jobs[jobId] = JobResult(jobId, JobStatus.QUEUED, "exists I guess") + os.write(1, self.jobs[jobId]) def handleCancelJob(self): pass @@ -18,17 +27,18 @@ class TimeWaster: def main(self): while self.running: if len(self.jobs) == 0: - time.sleep(0.01) + self.handleNewJob() else: - uuid = self.jobs.keys[0] - job = self.jobs[uuid] + job: JobResult = self.jobs[self.jobs.keys[0]] time.sleep(random.randrange(1, 10) / 10) - result: JobResult = JobResult(uuid, "done i guess") - os.write(1, result) + job.status = JobStatus.FINISHED + job.result = "done i guess" + os.write(1, job) class JobResult: - def __init__(self, uuid, result) -> None: + def __init__(self, uuid: uuid.UUID, status: JobStatus, result) -> None: self.uuid = uuid + self.status = status self.result = result if __name__ == "__main__": diff --git a/server.py b/server.py index 21e3be4..31592e9 100644 --- a/server.py +++ b/server.py @@ -1,4 +1,5 @@ from websockets import * +from TimeWaster import * import asyncio, json, signal, sys, time, random, subprocess, os class WebSocketServer: @@ -23,6 +24,7 @@ class WebSocketServer: task: asyncio.Task = None while (connected): raw: str = await connection.recv() + os.write(stdio[1], bytes("job")) if task != None and task.cancel(): print("TASK CANCELED") task = asyncio.create_task(self.respond(raw, connection))