diff --git a/__pycache__/createthread.cpython-314.pyc b/__pycache__/createthread.cpython-314.pyc index ba83802..caf5b35 100644 Binary files a/__pycache__/createthread.cpython-314.pyc and b/__pycache__/createthread.cpython-314.pyc differ diff --git a/__pycache__/dispatcher.cpython-314.pyc b/__pycache__/dispatcher.cpython-314.pyc index 3d5dcaf..693a70f 100644 Binary files a/__pycache__/dispatcher.cpython-314.pyc and b/__pycache__/dispatcher.cpython-314.pyc differ diff --git a/__pycache__/dispatchstate.cpython-314.pyc b/__pycache__/dispatchstate.cpython-314.pyc index aa743a5..9ce3eca 100644 Binary files a/__pycache__/dispatchstate.cpython-314.pyc and b/__pycache__/dispatchstate.cpython-314.pyc differ diff --git a/__pycache__/lifecyclemanager.cpython-314.pyc b/__pycache__/lifecyclemanager.cpython-314.pyc index f9e73d3..a35cce5 100644 Binary files a/__pycache__/lifecyclemanager.cpython-314.pyc and b/__pycache__/lifecyclemanager.cpython-314.pyc differ diff --git a/__pycache__/lifecycleregistry.cpython-314.pyc b/__pycache__/lifecycleregistry.cpython-314.pyc index aed971b..61b4035 100644 Binary files a/__pycache__/lifecycleregistry.cpython-314.pyc and b/__pycache__/lifecycleregistry.cpython-314.pyc differ diff --git a/core/__init__.py b/core/__init__.py index e65c17f..5365cf6 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -1,3 +1,4 @@ +from .server import server from .apirequest import executeRequest from .runtime import buildSave, loadSave, buildLog, manageFailure, buildOutput #from .execution import buildOperation, buildAction @@ -5,3 +6,7 @@ from .execution.action import buildAction from .execution.operation import buildOperation from .execution.executioncontract import executeContract #from executioncontract import executionContract +from .execution.lifecyclemanager import manageLifecycle +from .execution.lifecyclemanager import registerLifecycle +from .execution.createthread import buildThread +from .server.dispatcher import dispatchRequest diff --git a/core/__pycache__/__init__.cpython-314.pyc b/core/__pycache__/__init__.cpython-314.pyc index 351ecbd..27f63d5 100644 Binary files a/core/__pycache__/__init__.cpython-314.pyc and b/core/__pycache__/__init__.cpython-314.pyc differ diff --git a/core/execution/__pycache__/createthread.cpython-314.pyc b/core/execution/__pycache__/createthread.cpython-314.pyc new file mode 100644 index 0000000..daf6968 Binary files /dev/null and b/core/execution/__pycache__/createthread.cpython-314.pyc differ diff --git a/createthread.py b/core/execution/createthread.py similarity index 64% rename from createthread.py rename to core/execution/createthread.py index 849a99e..3d0609d 100644 --- a/createthread.py +++ b/core/execution/createthread.py @@ -2,11 +2,10 @@ import threading from lifecycleregistry import registerLifecycle from lifecyclemanager import manageLifecycle -activethreads = [] +threadlist = [] threadnum = 0 -def buildThread(module, state, lifecycles): -#for mode in ("continuous", "oneshot") +def buildThread(module, lifecycles): global threadnum threadnum += 1 @@ -14,7 +13,7 @@ def buildThread(module, state, lifecycles): thread = threading.Thread( target=manageLifecycle, - args=(module, state) + args=(module, lifecycles) ) thread.start() @@ -23,9 +22,9 @@ def buildThread(module, state, lifecycles): lifecycles = registerLifecycle (module, lifecycles, registryname, registryvalue) - activethreads.append(threadname) + threadlist.append(thread) - print(activethreads) + print(threadlist) print(lifecycles) - return threadnum, threadname, lifecycles, activethreads + return threadnum, threadname, lifecycles, threadlist diff --git a/core/execution/lifecyclemanager/__init__.py b/core/execution/lifecyclemanager/__init__.py new file mode 100644 index 0000000..e1f1549 --- /dev/null +++ b/core/execution/lifecyclemanager/__init__.py @@ -0,0 +1,2 @@ +from .lifecyclemanager import manageLifecycle +from .lifecycleregistry import registerLifecycle diff --git a/core/execution/lifecyclemanager/__pycache__/__init__.cpython-314.pyc b/core/execution/lifecyclemanager/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000..50b7725 Binary files /dev/null and b/core/execution/lifecyclemanager/__pycache__/__init__.cpython-314.pyc differ diff --git a/core/execution/lifecyclemanager/__pycache__/lifecyclemanager.cpython-314.pyc b/core/execution/lifecyclemanager/__pycache__/lifecyclemanager.cpython-314.pyc new file mode 100644 index 0000000..01b696c Binary files /dev/null and b/core/execution/lifecyclemanager/__pycache__/lifecyclemanager.cpython-314.pyc differ diff --git a/core/execution/lifecyclemanager/__pycache__/lifecycleregistry.cpython-314.pyc b/core/execution/lifecyclemanager/__pycache__/lifecycleregistry.cpython-314.pyc new file mode 100644 index 0000000..dcad791 Binary files /dev/null and b/core/execution/lifecyclemanager/__pycache__/lifecycleregistry.cpython-314.pyc differ diff --git a/core/execution/lifecyclemanager/lifecyclemanager.py b/core/execution/lifecyclemanager/lifecyclemanager.py new file mode 100644 index 0000000..d956d9e --- /dev/null +++ b/core/execution/lifecyclemanager/lifecyclemanager.py @@ -0,0 +1,25 @@ +import time + +from core.execution.operation import buildOperation +from core.execution.action import buildAction +from core import executeContract + +def manageLifecycle(module, lifecycles): #lifecycles, state): + #print(lifecycles[module.name]["mode"]) + + if lifecycles[module.name]["mode"] == "continuous": + while lifecycles[module.name]["mode"] == "continuous": + print(lifecycles) + + outputs = executeContract(module) + + #print(lifecycles) + + time.sleep(module.sleeptime) + + elif lifecycles[module.name]["mode"] == "oneshot": + print(lifecycles) + outputs = executeContract(module) + + #print(lifecycles) + return diff --git a/lifecycleregistry.py b/core/execution/lifecyclemanager/lifecycleregistry.py similarity index 100% rename from lifecycleregistry.py rename to core/execution/lifecyclemanager/lifecycleregistry.py diff --git a/core/server/__init__.py b/core/server/__init__.py new file mode 100644 index 0000000..d2d51e4 --- /dev/null +++ b/core/server/__init__.py @@ -0,0 +1,2 @@ +from . import server + diff --git a/core/server/__pycache__/__init__.cpython-314.pyc b/core/server/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000..8798678 Binary files /dev/null and b/core/server/__pycache__/__init__.cpython-314.pyc differ diff --git a/core/server/__pycache__/createdispatch.cpython-314.pyc b/core/server/__pycache__/createdispatch.cpython-314.pyc new file mode 100644 index 0000000..b93cbea Binary files /dev/null and b/core/server/__pycache__/createdispatch.cpython-314.pyc differ diff --git a/core/server/__pycache__/dispatcher.cpython-314.pyc b/core/server/__pycache__/dispatcher.cpython-314.pyc new file mode 100644 index 0000000..874dafc Binary files /dev/null and b/core/server/__pycache__/dispatcher.cpython-314.pyc differ diff --git a/core/server/__pycache__/dispatchstate.cpython-314.pyc b/core/server/__pycache__/dispatchstate.cpython-314.pyc new file mode 100644 index 0000000..70708a9 Binary files /dev/null and b/core/server/__pycache__/dispatchstate.cpython-314.pyc differ diff --git a/core/server/__pycache__/server.cpython-314.pyc b/core/server/__pycache__/server.cpython-314.pyc new file mode 100644 index 0000000..1060bc3 Binary files /dev/null and b/core/server/__pycache__/server.cpython-314.pyc differ diff --git a/core/server/createdispatch.py b/core/server/createdispatch.py new file mode 100644 index 0000000..a4cc7ea --- /dev/null +++ b/core/server/createdispatch.py @@ -0,0 +1,17 @@ +import importlib +from lifecyclemanager import manageLifecycle +from .dispatchstate import buildState + +def buildDispatch(request): + dispatch = [] + + for key in request["module"]: + dispatch.append(request["module"][key]) + + resolveddispatch = "plugins."+ ".".join(dispatch) + + module = importlib.import_module(resolveddispatch) + + mode = request.get("mode", "oneshot") + + return module, mode diff --git a/core/server/dispatcher.py b/core/server/dispatcher.py new file mode 100644 index 0000000..e742605 --- /dev/null +++ b/core/server/dispatcher.py @@ -0,0 +1,22 @@ +from .createdispatch import buildDispatch +from .dispatchstate import buildState +from core.execution.createthread import buildThread + +import threading + +def dispatchRequest(request, lifecycles): + + module, mode = buildDispatch(request) + + mode, lifecycles = buildState(module, mode, lifecycles) + + if mode == "stop": + return lifecycles + + else: + threadnum, threadname, lifecycles, threadlist = buildThread(module, lifecycles) + + #print("Active Threads") + #print(threadlist) + + return threadnum, threadname, lifecycles, threadlist diff --git a/core/server/dispatchstate.py b/core/server/dispatchstate.py new file mode 100644 index 0000000..4977710 --- /dev/null +++ b/core/server/dispatchstate.py @@ -0,0 +1,41 @@ +import requests + +from core import registerLifecycle + +def filterMode(mode): + if mode in ("continuous", "oneshot", "stop"): + state = mode + return state + else: raise ValueError(f"Unsupported lifecycle mode: {mode}") + +def buildState(module, mode, lifecycles): + state = filterMode(mode) + + registryvalue = state + registryname = "mode" + + if state != "stop": + lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) + + elif state == "stop": + if not module.name in lifecycles: + + print(f"No registered lifecycle: {module.name}") + + return None + + elif "mode" in lifecycles[module.name] != "stop": + lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) + + print(f"Stopping lifecycle: {module.name}") + + #elif mode == "oneshot": + #registryvalue = {"mode": "oneshot"} + #lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) + + # else: + #raise ValueError(f"Unsupported lifecycle mode: {mode}") + + #state = registryvalue + + return state, lifecycles diff --git a/core/server/server.py b/core/server/server.py new file mode 100644 index 0000000..700cc55 --- /dev/null +++ b/core/server/server.py @@ -0,0 +1,30 @@ +import socket +import json + +def startServer(): + from .dispatcher import dispatchRequest + + server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + + server.bind(("127.0.0.1", 19002)) + + lifecycles = {} + + server.listen() + + while True: + connection, address = server.accept() + + while True: + data = connection.recv(4096) + + request = json.loads(data) + + # if not data: + # break + + dispatch = dispatchRequest(request, lifecycles) + + connection.close() + + # server.close() diff --git a/dispatcher.py b/dispatcher.py deleted file mode 100644 index cec2c87..0000000 --- a/dispatcher.py +++ /dev/null @@ -1,14 +0,0 @@ -from createdispatch import buildDispatch -from createthread import buildThread -from dispatchstate import buildState -import threading - -def dispatchRequest(request, lifecycles): - - module, mode = buildDispatch(request) - - state, lifecycles = buildState(module, mode, lifecycles) - - threadnum, threadname, lifecycles, activethreads = buildThread(module, state, lifecycles) - - return threadnum, lifecycles, diff --git a/dispatchstate.py b/dispatchstate.py deleted file mode 100644 index 5c58637..0000000 --- a/dispatchstate.py +++ /dev/null @@ -1,33 +0,0 @@ -import requests - -from lifecycleregistry import registerLifecycle - -def buildState(module, mode, lifecycles): - registryname = "state" - if mode == "continuous": - registryvalue = {"mode": "continuous"} - - lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) - - elif mode == "stop": - if not module.name in lifecycles: - registryvalue ={} - print(f"No registered lifecycle: {module.name}") - return None - elif lifecycles[module.name]["state"]["mode"] != "stop": - state = lifecycles[module.name]["state"] - state["mode"] = "stop" - #lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) - - print(f"Stopping lifecycle: {module.name}") - - elif mode == "oneshot": - registryvalue = {"mode": "oneshot"} - lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) - - else: - raise ValueError(f"Unsupported lifecycle mode: {mode}") - - state = registryvalue - - return state, lifecycles diff --git a/initialize.py b/initialize.py new file mode 100644 index 0000000..cb33b6a --- /dev/null +++ b/initialize.py @@ -0,0 +1,3 @@ +from core.server.server import startServer + +startServer() diff --git a/lifecyclemanager.py b/lifecyclemanager.py deleted file mode 100644 index d9c5d12..0000000 --- a/lifecyclemanager.py +++ /dev/null @@ -1,19 +0,0 @@ -import time - -from core.execution.operation import buildOperation -from core.execution.action import buildAction -from core import executeContract - -def manageLifecycle(module, state): - print(state) - - if state["mode"] == "continuous": - while state["mode"] == "continuous": - outputs = executeContract(module) - - time.sleep(module.sleeptime) - - elif state["mode"] == "oneshot": - outputs = executeContract(module) - - return diff --git a/lifecyclemonitor.py b/lifecyclemonitor.py new file mode 100644 index 0000000..f6c788c --- /dev/null +++ b/lifecyclemonitor.py @@ -0,0 +1,12 @@ +def lifecycleMonitor(lifecycles): + while True + + print("Active Threads:") + #if not exists module.name in lifecycles: + #print("No active threads") + if exists module.name in lifecyles + for item in lifecycles[module.name] + if item == "thread".__name__: + print(item) + else: + print("No active threads" diff --git a/plugins/rmass/operations/__pycache__/setavailable.cpython-314.pyc b/plugins/rmass/operations/__pycache__/setavailable.cpython-314.pyc index 02a6f92..f6c08b2 100644 Binary files a/plugins/rmass/operations/__pycache__/setavailable.cpython-314.pyc and b/plugins/rmass/operations/__pycache__/setavailable.cpython-314.pyc differ diff --git a/plugins/rmass/operations/setavailable.py b/plugins/rmass/operations/setavailable.py index 72f16fa..3d23329 100644 --- a/plugins/rmass/operations/setavailable.py +++ b/plugins/rmass/operations/setavailable.py @@ -10,7 +10,7 @@ actions = [ setavailable, ] -sleeptime = 180 +sleeptime = 10 skipstep = { setavailable: { diff --git a/checkavailable.py b/trash/checkavailable.py similarity index 100% rename from checkavailable.py rename to trash/checkavailable.py diff --git a/createdispatch.py b/trash/createdispatch.py similarity index 100% rename from createdispatch.py rename to trash/createdispatch.py diff --git a/trash/createthread.py b/trash/createthread.py new file mode 100644 index 0000000..3d0609d --- /dev/null +++ b/trash/createthread.py @@ -0,0 +1,30 @@ +import threading +from lifecycleregistry import registerLifecycle +from lifecyclemanager import manageLifecycle + +threadlist = [] +threadnum = 0 + +def buildThread(module, lifecycles): + global threadnum + threadnum += 1 + + threadname = f"thread.{threadnum}" + + thread = threading.Thread( + target=manageLifecycle, + args=(module, lifecycles) + ) + thread.start() + + registryname = threadname + registryvalue = thread + + lifecycles = registerLifecycle (module, lifecycles, registryname, registryvalue) + + threadlist.append(thread) + + print(threadlist) + print(lifecycles) + + return threadnum, threadname, lifecycles, threadlist diff --git a/trash/dispatcher.py b/trash/dispatcher.py new file mode 100644 index 0000000..ce2ccbd --- /dev/null +++ b/trash/dispatcher.py @@ -0,0 +1,22 @@ +from createdispatch import buildDispatch +from createthread import buildThread +from dispatchstate import buildState + +import threading + +def dispatchRequest(request, lifecycles): + + module, mode = buildDispatch(request) + + mode, lifecycles = buildState(module, mode, lifecycles) + + if mode == "stop": + return lifecycles + + else: + threadnum, threadname, lifecycles, threadlist = buildThread(module, lifecycles) + + #print("Active Threads") + #print(threadlist) + + return threadnum, threadname, lifecycles, threadlist diff --git a/trash/dispatchstate.py b/trash/dispatchstate.py new file mode 100644 index 0000000..78faf36 --- /dev/null +++ b/trash/dispatchstate.py @@ -0,0 +1,41 @@ +import requests + +from lifecycleregistry import registerLifecycle + +def filterMode(mode): + if mode in ("continuous", "oneshot", "stop"): + state = mode + return state + else: raise ValueError(f"Unsupported lifecycle mode: {mode}") + +def buildState(module, mode, lifecycles): + state = filterMode(mode) + + registryvalue = state + registryname = "mode" + + if state != "stop": + lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) + + elif state == "stop": + if not module.name in lifecycles: + + print(f"No registered lifecycle: {module.name}") + + return None + + elif "mode" in lifecycles[module.name] != "stop": + lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) + + print(f"Stopping lifecycle: {module.name}") + + #elif mode == "oneshot": + #registryvalue = {"mode": "oneshot"} + #lifecycles = registerLifecycle(module, lifecycles, registryname, registryvalue) + + # else: + #raise ValueError(f"Unsupported lifecycle mode: {mode}") + + #state = registryvalue + + return state, lifecycles diff --git a/trash/lifecyclemanager.py b/trash/lifecyclemanager.py new file mode 100644 index 0000000..d956d9e --- /dev/null +++ b/trash/lifecyclemanager.py @@ -0,0 +1,25 @@ +import time + +from core.execution.operation import buildOperation +from core.execution.action import buildAction +from core import executeContract + +def manageLifecycle(module, lifecycles): #lifecycles, state): + #print(lifecycles[module.name]["mode"]) + + if lifecycles[module.name]["mode"] == "continuous": + while lifecycles[module.name]["mode"] == "continuous": + print(lifecycles) + + outputs = executeContract(module) + + #print(lifecycles) + + time.sleep(module.sleeptime) + + elif lifecycles[module.name]["mode"] == "oneshot": + print(lifecycles) + outputs = executeContract(module) + + #print(lifecycles) + return diff --git a/trash/lifecycleregistry.py b/trash/lifecycleregistry.py new file mode 100644 index 0000000..86ddab0 --- /dev/null +++ b/trash/lifecycleregistry.py @@ -0,0 +1,8 @@ +def registerLifecycle(module, lifecycles, registryname, registryvalue): + if module.name not in lifecycles: + lifecycles[module.name] = {} + + + lifecycles[module.name][registryname] = registryvalue + + return lifecycles diff --git a/manage.py b/trash/manage.py similarity index 100% rename from manage.py rename to trash/manage.py diff --git a/manager.py b/trash/manager.py similarity index 100% rename from manager.py rename to trash/manager.py diff --git a/server.py b/trash/server.py similarity index 92% rename from server.py rename to trash/server.py index dd7ecc9..6540a8c 100644 --- a/server.py +++ b/trash/server.py @@ -1,6 +1,7 @@ import socket import json from dispatcher import dispatchRequest +#from createthread import buildThread server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -10,10 +11,9 @@ lifecycles = {} server.listen() -#lifecycles = {} - while True: connection, address = server.accept() + while True: data = connection.recv(4096)