feiyu02
2025-09-01 29383149f7040d89ae00ad48dc48bbcf46587946
src/main/kotlin/com/flightfeather/uav/socket/DeviceSession.kt
@@ -1,29 +1,46 @@
package com.flightfeather.uav.socket
import com.flightfeather.uav.socket.bean.AirTypeData
import io.netty.channel.ChannelHandlerContext
import java.util.concurrent.ConcurrentHashMap
/**
 * 用于保存连接的设备及对应的session通道
 * 用于保存连接的设备及对应的session通道以及对应的专属信息
 * Date: 2019.8.27
 * @author riku
 */
class DeviceSession {
    companion object{
        private val deviceMap = ConcurrentHashMap<String, ChannelHandlerContext?>()
    companion object {
        private const val DEFAULT_DEVICE = "default_device"
    }
    private val deviceMap = ConcurrentHashMap<String?, ChannelHandlerContext?>()
    private val typeMap = ConcurrentHashMap<String, List<AirTypeData>>()
        fun saveDevice(deviceCode: String?, channel: ChannelHandlerContext?) {
            deviceCode?.let {
                deviceMap.put(deviceCode, channel)
            }
    fun saveDevice(deviceCode: String?, channel: ChannelHandlerContext?) {
        deviceMap[deviceCode] = channel
    }
    fun getDevice(deviceCode: String?): ChannelHandlerContext? {
        return if (deviceMap.containsKey(deviceCode))
            deviceMap[deviceCode]
        else
            null
    }
    fun saveAirType(deviceCode: String?, types: List<AirTypeData>) {
        if (deviceCode == null) {
            typeMap[DEFAULT_DEVICE] = types
        } else {
            typeMap[deviceCode] = types
        }
    }
        fun getDevice(deviceCode: String?): ChannelHandlerContext? {
            return if (deviceMap.containsKey(deviceCode))
                deviceMap[deviceCode]
            else
                null
    fun getAirType(deviceCode: String?): List<AirTypeData>? {
        return when {
            deviceCode == null -> typeMap[DEFAULT_DEVICE]
            typeMap.containsKey(deviceCode) -> typeMap[deviceCode]
            else -> null
        }
    }
}