58 lines
1.4 KiB
Python
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()
|