Scheduler first commit
This commit is contained in:
parent
70c53a9aef
commit
2c64ebda67
24 changed files with 880 additions and 0 deletions
34
examples/schedule/schedule_lib/exec_node.py
Normal file
34
examples/schedule/schedule_lib/exec_node.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
from typing import TYPE_CHECKING, List, Callable, Generator
|
||||
from api.od import ODAPI
|
||||
|
||||
from .id_generator import IdGenerator
|
||||
|
||||
class ExecNode:
|
||||
def __init__(self, out_connections: int = 1) -> None:
|
||||
from .null_node import NullNode
|
||||
self.next_state: list[ExecNode] = []
|
||||
if out_connections > 0:
|
||||
self.next_state = [NullNode()]*out_connections
|
||||
self.id: int = IdGenerator().generate_id()
|
||||
|
||||
def nextState(self) -> "ExecNode":
|
||||
return self.next_state[0]
|
||||
|
||||
def connect(self, next_state: "ExecNode", from_gate: int = 0, to_gate: int = 0) -> None:
|
||||
if from_gate >= len(self.next_state):
|
||||
raise IndexError
|
||||
self.next_state[from_gate] = next_state
|
||||
|
||||
def execute(self, od: ODAPI) -> Generator | None:
|
||||
return None
|
||||
|
||||
def get_id(self) -> int:
|
||||
return self.id
|
||||
|
||||
def generate_dot(self, nodes: List[str], edges: List[str], visited: set[int]) -> None:
|
||||
visited.add(self.id)
|
||||
for edge in self.next_state:
|
||||
edges.append(f"{self.id} -> {edge.get_id()}")
|
||||
for next in self.next_state:
|
||||
next.generate_dot(nodes, edges, visited)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue