Files
colony/main.py
T
2026-03-22 20:29:19 +01:00

58 lines
1.4 KiB
Python

import threading
from colony.core.network.core import Network
from colony.core.dispatcher import Dispatcher
from colony.core.roles.manager import RoleManager
from colony.core.state_manager import StateManager
from colony.role_registry import RoleRegistry
from colony.transport.discover import Discover
from colony.transport.listener import Listener
from role_settings import available_roles
from colony.settings import configuration
def main():
state_manager = StateManager()
if 'Unit' not in state_manager.get(StateManager.Data.Roles):
state_manager.set(StateManager.Data.Roles, ['Unit', 'Foreman'])
network = Network()
role_registry = RoleRegistry(role_list=available_roles)
dispatcher = Dispatcher(network=network, role_registry=role_registry)
role_manager = RoleManager(
network=network,
role_registry=role_registry,
state_manager=state_manager,
)
threads = []
listener = Listener(dispatcher=dispatcher)
t = threading.Thread(
target=listener.start,
daemon=True,
name="Listener"
)
t.start()
threads.append(t)
t = threading.Thread(
target=Discover.listen,
args=(configuration.listener.port,),
daemon=True,
name="Discover"
)
t.start()
threads.append(t)
role_manager.initialize_roles()
role_manager.start_all()
for t in threads:
t.join()
if __name__ == "__main__":
main()