import socketio

from sio.MMVC_Namespace import MMVC_Namespace
from voice_changer.VoiceChangerManager import VoiceChangerManager

class MMVC_SocketIOServer():
    @classmethod
    def get_instance(cls, voiceChangerManager:VoiceChangerManager):
        if not hasattr(cls, "_instance"):
            sio = socketio.AsyncServer(
                    async_mode='asgi',
                    cors_allowed_origins='*'
                )
            namespace = MMVC_Namespace.get_instance(voiceChangerManager)
            sio.register_namespace(namespace)
            cls._instance = sio
            return cls._instance

        return cls._instance