def __init__(self):
        MultiService.__init__(self)

        # Init shared storage which is used to share information about server
        # to the ouside world
        self.shared_storage = get_storage()

        # Init pilots service
        from commander.service.pilots import PilotService
        self.pilots = PilotService()
        self.pilots.setServiceParent(self)

        # Init objects service
        from commander.service.objects import ObjectsService
        self.objects = ObjectsService()
        self.objects.setServiceParent(self)

        # Init missions service with log watcher
        from commander.service.missions import MissionService
        log_watcher = LogWatchingService(settings.IL2_EVENTS_LOG_PATH)
        self.missions = MissionService(log_watcher)
        self.log_parser = EventLogParser(
            (self.pilots, self.objects, self.missions, ))
        log_watcher.set_parser(self.log_parser)
        self.missions.setServiceParent(self)

        # Init console and DeviceLink parsers
        self.console_parser = ConsoleParser((self.pilots, self.missions, ))
        self.dl_parser = DeviceLinkParser()
def is_commander_running(storage=None):
    storage = storage or get_storage()
    if is_server_running(storage):
        return True
    try:
        s = api_create_client_socket()
    except socket.error as e:
        return False
    else:
        s.close()
        return True
def get_server_info(storage=None):
    storage = storage or get_storage()
    if not is_server_running(storage):
        return None
    return {
        'name'   : storage.get(KEY_SERVER_NAME),
        'version': settings.IL2_VERSION,
        'address': {
            'external': settings.IL2_EXTERNAL_ADDRESS,
            'local'   : storage.get(KEY_SERVER_LOCAL_ADDRESS),
            'port'    : int(storage.get(KEY_SERVER_USER_PORT)),
        },
        'channels'  : int(storage.get(KEY_SERVER_CHANNELS)),
        'difficulty': int(storage.get(KEY_SERVER_DIFFICULTY)),
    }
def is_server_running(storage=None):
    storage = storage or get_storage()
    return storage.exists(KEY_SERVER_RUNNING)