class ConnectedSubAppInfo:
    """
    Information of a sub application connected to another one.

    :param sub_app_id: the id of the connected sub app
    :param role: the role of the connecte sub app. See belaw
    :param queue: the queue to send message (for the case of intra process sub app)
    :param agent_fname: the agent managed by the sub app (for interface connected sup app. None otherwise)
    """

    """ No role. Testing only """
    ROLE_NONE = 'None'
    """ The connected sub app is an Interface as observer. No action cannot be send to engine"""
    ROLE_OBSERVER = 'Observer'
    """ The connected sub app is an Interface as actor. Engine will take into account the action send """
    ROLE_ACTOR = 'Actor'
    """ THe connected sub app Engine """
    ROLE_SERVER = 'Server'

    def __init__(self, sub_app_id: str, role: str, queue=None, agent_fname=None) -> None:
        self.id: str = sub_app_id
        self.role: str = role
        self.queue = queue
        self.agent_fname = agent_fname
