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