package com.narutohuo.xindazhou.socketio.factory

import com.narutohuo.xindazhou.socketio.repository.SocketIORepository

/**
 * SocketIO Repository 工厂类
 * 
 * 提供统一的获取 SocketIORepository 实例的方式
 * Repository 是全局单例，多个界面共享同一个实例
 * 
 * 使用示例：
 * ```kotlin
 * // 获取 Repository 实例（单例）
 * val repository = SocketIORepositoryFactory.getInstance()
 * 
 * // 连接服务器（需要传入 serverUrl 和 token）
 * repository.connect(serverUrl, token)
 * 
 * // 观察连接状态
 * repository.connectionState.collect { isConnected ->
 *     // 处理连接状态变化
 * }
 * ```
 */
object SocketIORepositoryFactory {
    
    @Volatile
    private var INSTANCE: SocketIORepository? = null
    
    /**
     * 获取 SocketIORepository 实例（单例）
     * 
     * @return SocketIORepository 实例（单例）
     */
    @JvmStatic
    fun getInstance(): SocketIORepository {
        return INSTANCE ?: synchronized(this) {
            INSTANCE ?: SocketIORepository().also { INSTANCE = it }
        }
    }
    
    /**
     * 销毁单例（用于测试或需要重新初始化时）
     */
    @JvmStatic
    fun destroyInstance() {
        INSTANCE = null
    }
}

