package com.adealink.weparty.room.sdk.service

import com.adealink.frame.room.listener.IListener
import com.adealink.weparty.room.sdk.context.IRoomContext
import com.adealink.weparty.room.sdk.controller.IAttrController
import com.adealink.weparty.room.sdk.controller.IController
import com.adealink.weparty.room.sdk.controller.IDeviceController
import com.adealink.weparty.room.sdk.controller.IJoinController
import com.adealink.weparty.room.sdk.controller.IMemberController
import com.adealink.weparty.room.sdk.controller.IMessageController
import com.adealink.weparty.room.sdk.controller.ISeatController
import com.adealink.weparty.room.sdk.listener.IAttrListener
import com.adealink.weparty.room.sdk.listener.IDeviceListener
import com.adealink.weparty.room.sdk.listener.IJoinListener
import com.adealink.weparty.room.sdk.listener.IMemberListener
import com.adealink.weparty.room.sdk.listener.IMessageListener
import com.adealink.weparty.room.sdk.listener.ISeatListener

/**
 */
interface IRoomService : IRoomContext {

    val joinController: IJoinController<IJoinListener>
    val attrController: IAttrController<IAttrListener>
    val memberController: IMemberController<IMemberListener>
    val seatController: ISeatController<ISeatListener>
    val deviceController: IDeviceController<IDeviceListener>

    val messageController: IMessageController<IMessageListener>
    val controllers: MutableList<out IController<out IListener>>

    fun create() //用于监听注册，初始化数据

    fun resume() //恢复事件分发

    fun pause() //暂停事件分发

    fun destroy() //用于监听移除，清理数据

    fun clear()

}