From 2fb45319d763ad1c3e1ce21437abc5f67c188d71 Mon Sep 17 00:00:00 2001 From: Marcio Fernandes Date: Wed, 19 Jan 2022 13:10:32 +0000 Subject: [PATCH] named pipe reader (server mode) --- .vscode/settings.json | 5 +++++ onlyone/__main__.py | 5 +++-- onlyone/namedpipes/__init__.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 onlyone/namedpipes/__init__.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..96490d0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "python.analysis.extraPaths": [ + "./onlyone" + ] +} \ No newline at end of file diff --git a/onlyone/__main__.py b/onlyone/__main__.py index a76d921..5d9411d 100644 --- a/onlyone/__main__.py +++ b/onlyone/__main__.py @@ -6,7 +6,7 @@ import sys import onlyone import yaml import os - +import onlyone.namedpipes @@ -38,5 +38,6 @@ if args.server: if(manager==None): log.error("server mode selected, but manager not loaded maybe missing --configFile") else: + npServer = onlyone.namedpipes.Server(manager, "/tmp/onlyone_fifo") log.info("server loaded...") - input("[server mode]") \ No newline at end of file + input("[server mode]\n") \ No newline at end of file diff --git a/onlyone/namedpipes/__init__.py b/onlyone/namedpipes/__init__.py new file mode 100644 index 0000000..45b7e3b --- /dev/null +++ b/onlyone/namedpipes/__init__.py @@ -0,0 +1,33 @@ +import onlyone +import os +import errno +import logging +import threading +log = logging.getLogger(__name__) + + +class Server: + def __fifo_read(fifoname): + while True: + log.info("Opening FIFO...") + with open(fifoname) as fifo: + log.info("FIFO opened") + while True: + data = fifo.read() + if len(data) == 0: + log.info("FIFO Writer closed") + break + log.info('FIFO Read: "{0}"'.format(data)) + + def __init__(self, manager:onlyone.Manager, fifoname:str): + self.manager=manager + self__fifoname=fifoname + try: + os.mkfifo(fifoname) + except OSError as oe: + if oe.errno != errno.EEXIST: + raise + + + readThread = threading.Thread( target=Server.__fifo_read, args = (fifoname,) ) + readThread.start() \ No newline at end of file