]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
suricata-reporter: Create a queue we can push events into the workers with
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 5 Aug 2025 14:25:04 +0000 (15:25 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 3 Sep 2025 17:42:00 +0000 (18:42 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/suricata/suricata-reporter

index 0e8d89b654a19b9d2107164c5aaafdcecbe896e7..e8ab952f8c8f9032441d8d48f2ed7338745f1c92 100644 (file)
@@ -26,7 +26,6 @@ import logging.handlers
 import multiprocessing
 import signal
 import sys
-import time
 
 log = logging.getLogger("suricata-reporter")
 log.setLevel(logging.DEBUG)
@@ -39,6 +38,9 @@ class Reporter(object):
                # Fetch CPU count
                cpu_count = multiprocessing.cpu_count()
 
+               # Create an events queue
+               self.queue = multiprocessing.Queue(1024)
+
                # Create as many workers as we have processors
                self.workers = [
                        Worker(reporter=self) for _ in range(cpu_count)
@@ -58,6 +60,9 @@ class Reporter(object):
                while True:
                        await asyncio.sleep(1)
 
+                       # Write some data into the queue
+                       self.queue.put("ABC", block=False)
+
                # Terminate all workers
                for worker in self.workers:
                        worker.terminate()
@@ -82,9 +87,12 @@ class Worker(multiprocessing.Process):
                """
                log.debug("Worker %s launched" % self.pid)
 
-               # Sleep for forever
+               # Loop for forever
                while True:
-                       time.sleep(1)
+                       event = self.reporter.queue.get(block=True)
+
+                       # Log the event
+                       log.debug("Received event in worker %s: %s" % (self.pid, event))
 
                log.debug("Worker %s terminated" % self.pid)