| | |
| | | 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 |
| | | } |
| | | } |
| | | } |