Fixed dispatcher and registry

This commit is contained in:
Lyncoln
2026-10-09 03:18:21 -04:00
parent f4742f00e0
commit e6b2722708
21 changed files with 125 additions and 72 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2
View File
@@ -3,3 +3,5 @@ from .runtime import buildSave, loadSave, buildLog, manageFailure, buildOutput
#from .execution import buildOperation, buildAction #from .execution import buildOperation, buildAction
from .execution.action import buildAction from .execution.action import buildAction
from .execution.operation import buildOperation from .execution.operation import buildOperation
from .execution.executioncontract import executeContract
#from executioncontract import executionContract
Binary file not shown.
+1
View File
@@ -1,2 +1,3 @@
#from . import action #from . import action
#from . import operation #from . import operation
#from . import executioncontract
Binary file not shown.
+7 -5
View File
@@ -1,9 +1,11 @@
from core.execution.action import buildAction from core.execution.action import buildAction
from core.execution.operation import buildOperation from core.execution.operation import buildOperation
def executeContract(module) def executeContract(module):
if module.kind == "operation": if module.kind == "operation":
outputs = buildOperation(module) outputs = buildOperation(module)
elif module.kind == "action": elif module.kind == "action":
outputs = buildAction(module) outputs = buildAction(module)
return outputs
+17
View File
@@ -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
+31
View File
@@ -0,0 +1,31 @@
import threading
from lifecycleregistry import registerLifecycle
from lifecyclemanager import manageLifecycle
activethreads = []
threadnum = 0
def buildThread(module, state, lifecycles):
#for mode in ("continuous", "oneshot")
global threadnum
threadnum += 1
threadname = f"thread.{threadnum}"
thread = threading.Thread(
target=manageLifecycle,
args=(module, state)
)
thread.start()
registryname = threadname
registryvalue = thread
lifecycles = registerLifecycle (module, lifecycles, registryname, registryvalue)
activethreads.append(threadname)
print(activethreads)
print(lifecycles)
return threadnum, threadname, lifecycles, activethreads
-55
View File
@@ -1,55 +0,0 @@
from core.execution.action import buildAction
from core.execution.operation import buildOperation
import plugins
import importlib
import threading
from lifecyclemanager import manageLifecycle
lifecycles = {}
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")
if mode == "continuous":
state = {
"mode": "continuous"
}
lifecycles[resolveddispatch] = state
print(f"Dispatching: {module.name}")
thread = threading.Thread(
target=manageLifecycle,
args=(module, state)
)
thread.start()
print(f"Started lifecycle: {module.name}")
elif mode == "stop":
if resolveddispatch in lifecycles:
state = lifecycles[resolveddispatch]
state["mode"] = "stop"
print(f"Stopping lifecycle: {module.name}")
else:
print(f"No registered lifecycle: {module.name}")
elif mode == "oneshot":
outputs = manageLifecycle(module, {"mode": "oneshot"})
else:
raise ValueError(f"Unsupported lifecycle mode {mode}")
return
#outputs = manageLifecycle(module, state)
+14
View File
@@ -0,0 +1,14 @@
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,
+33
View File
@@ -0,0 +1,33 @@
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
+5 -9
View File
@@ -1,16 +1,12 @@
from core.execution.operation import buildOperation
from core.execution.action import buildAction
import time import time
def executeContract(module): from core.execution.operation import buildOperation
if module.kind == "operation": from core.execution.action import buildAction
outputs = buildOperation(module) from core import executeContract
elif module.kind == "action":
outputs = buildAction(module)
def manageLifecycle(module, state): def manageLifecycle(module, state):
print(state)
if state["mode"] == "continuous": if state["mode"] == "continuous":
while state["mode"] == "continuous": while state["mode"] == "continuous":
outputs = executeContract(module) outputs = executeContract(module)
+8
View File
@@ -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
+7 -3
View File
@@ -1,13 +1,17 @@
import socket import socket
import json import json
from dispatch import buildDispatch from dispatcher import dispatchRequest
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("127.0.0.1", 19001)) server.bind(("127.0.0.1", 19002))
lifecycles = {}
server.listen() server.listen()
#lifecycles = {}
while True: while True:
connection, address = server.accept() connection, address = server.accept()
while True: while True:
@@ -18,7 +22,7 @@ while True:
# if not data: # if not data:
# break # break
dispatch = buildDispatch(request) dispatch = dispatchRequest(request, lifecycles)
connection.close() connection.close()