From 239c38c53e32f33103426886335115dafab7889c Mon Sep 17 00:00:00 2001 From: Migatu Date: Wed, 10 Apr 2024 18:07:28 +0200 Subject: [PATCH] Fixin comms --- communication_subroutine.py | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 76b4954..a8bdcc7 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -1,6 +1,7 @@ import logging import threading import json +import time from queue import Queue, Empty from flask import Flask, jsonify, request from waitress import serve @@ -9,7 +10,8 @@ HOST_ADDRESS = "192.168.1.191" PORT_ADDRESS = 5000 OUT_COMM_Q = Queue() IN_COMM_Q = Queue() -internal_q = Queue() +awaiting_q = [] +incoming_q = Queue() app = Flask(__name__) @app.route("/conjurer", methods=["POST"]) @@ -18,16 +20,7 @@ def answer_external_command(): record = json.loads(request.data) app.logger.info(record) app.logger.info("DATA RECEIVED") - while True: - try: - q_data = internal_q.get(block=False) - except Empty: - break - if q_data.uuid in record: - q_data.stop = True - q_data.entries = record - IN_COMM_Q.put(q_data) - + incoming_q.put(record) return jsonify("SUCCESS") @app.route("/conjurer", methods=["GET"]) @@ -56,7 +49,21 @@ def scan_queue(_logger): while True: data = OUT_COMM_Q.get() _logger.info(data) - internal_q.put(data) + awaiting_q.append(data) + +def scan_incoming(_logger): + while True: + try: + app.logger.info("DATA FOUND") + answer = incoming_q.get(block=False) + for record in awaiting_q: + if record.uuid in answer.keys(): + record.stop = True + record.entries = answer[record.uuid] + IN_COMM_Q.put(request) + except Empty: + time.sleep(1) + break def comm_subroutine(logger): #logger.setLevel(logging.DEBUG) @@ -65,6 +72,8 @@ def comm_subroutine(logger): threads.append(threading.Thread(target=flask_debug, args=(logger,))) #threads.append(threading.Thread(target=waitress_run, args=(logger,))) threads.append(threading.Thread(target=scan_queue,args=(logger,))) + threads.append(threading.Thread(target=scan_incoming,args=(logger,))) + for worker in threads: worker.start()