This commit is contained in:
2022-01-19 23:06:41 +00:00
parent 6d2ab26937
commit 1350f478bc
4 changed files with 33 additions and 35 deletions

View File

@@ -1,5 +0,0 @@
{
"python.analysis.extraPaths": [
"./onlyone"
]
}

View File

@@ -4,7 +4,6 @@ import logging
from typing import List from typing import List
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
def isrunning(cmd:str): def isrunning(cmd:str):
@@ -96,5 +95,4 @@ class Manager:
onlyone(item["cmd"], [x for x in self.__processes if x["key"]!=item["key"]]) onlyone(item["cmd"], [x for x in self.__processes if x["key"]!=item["key"]])
self._current = item["key"] self._current = item["key"]

View File

@@ -3,14 +3,15 @@ import argparse
from types import new_class from types import new_class
from typing import List from typing import List
import sys import sys
import onlyone
import yaml import yaml
import os import os
import onlyone
import onlyone.namedpipes import onlyone.namedpipes
logging.basicConfig(level="DEBUG") logging.basicConfig(level="DEBUG")
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
parser = argparse.ArgumentParser(description='onlyone') parser = argparse.ArgumentParser(description='onlyone')
@@ -29,7 +30,7 @@ if args.configFile:
log.info("config file content : " + configTxt) log.info("config file content : " + configTxt)
log.info("trying read yaml") log.info("trying read yaml")
configDict = yaml.safe_load(configTxt) configDict = yaml.safe_load(configTxt)
manager.load(configDict, True) #manager.load(configDict, True)
else: else:
log.error("Current Path:" + os.getcwd()) log.error("Current Path:" + os.getcwd())
log.error("File dont exists:" + args.configfile) log.error("File dont exists:" + args.configfile)
@@ -42,6 +43,5 @@ if args.server:
try: try:
npServer = onlyone.namedpipes.Server(manager, "/tmp/onlyone_fifo") npServer = onlyone.namedpipes.Server(manager, "/tmp/onlyone_fifo")
log.info("server loaded...") log.info("server loaded...")
input("[server mode]\n")
except KeyboardInterrupt: except KeyboardInterrupt:
log.info("dead") log.info("KeyboardInterrupt")

View File

@@ -1,34 +1,15 @@
import onlyone
import os import os
import errno import errno
import logging import logging
import threading import threading
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class ReadTask:
def __init__(self):
self.__kill=False
def kill(self):
self.__kill=True
def run(self, fifoname):
while True:
if self.__kill:
return
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))
class Server: class Server:
def __init__(self, manager:onlyone.Manager, fifoname:str): def __init__(self, manager, fifoname:str):
self.manager=manager self.manager=manager
self__fifoname=fifoname self__fifoname=fifoname
try: try:
@@ -39,7 +20,31 @@ class Server:
readTask = ReadTask() readTask = ReadTask()
self.__readThread = threading.Thread(target=readTask.run, args = (fifoname,) ) self.__readThread = threading.Thread(target=readTask.run, args = (fifoname,) )
#self.__readThread.start() self.__readThread.start()
def kill(self): def kill(self):
self.__readThread.kill() self.__readThread.kill()
class ReadTask:
def __init__(self):
self.__kill=False
def kill(self):
self.__kill=True
def read(self, fifoname):
log.info("waiting FIFO...")
with open(fifoname) as fifo:
log.info("FIFO opened")
while True:
data = fifo.read()
if len(data) == 0:
log.info("FIFO closed")
break
log.info('FIFO Data: "{0}"'.format(data))
def run(self, fifoname):
while True:
if self.__kill:
return
self.read(fifoname)