/*
 * $Id$
 */

package fr.zng.xxzx.common.cacheData;

import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import fr.zng.xxzx.biz.SkSessionDto;
import fr.zng.xxzx.biz.WebSessionDto;
import fr.zng.xxzx.biz.WebUsDto;
import fr.zng.xxzx.common.entity.HqCnoEntity;
import fr.zng.xxzx.common.entity.UnoEntity;
import fr.zng.xxzx.util.StringUtil;
import io.netty.channel.group.ChannelGroup;
import io.netty.channel.group.DefaultChannelGroup;
import io.netty.util.concurrent.GlobalEventExecutor;

/**
 * 用户缓存
 * 
 * @author Administrator
 */
public final class ZngCacheData implements Serializable {

	/**
     * 
     */
	private static final long serialVersionUID = 1L;

	/**
	 * CacheUtil
	 */
	private ZngCacheData() {

	}

	/**
	 * ip + 设备号
	 */
	public static Map<String, String> sessionIPCode = new ConcurrentHashMap<String, String>();
	/**
	 * 设备号+设备信息
	 * */
	public static Map<String, HqCnoEntity> sessionPdt = new ConcurrentHashMap<String, HqCnoEntity>();
	/**
	 * 用户号+用户信息
	 * */
	public static Map<String, UnoEntity> sessionUser = new ConcurrentHashMap<String, UnoEntity>();
	/**
	 * 用户号+用户信息
	 * */
	public static Map<String, HqCnoEntity> sessionCno = new ConcurrentHashMap<String, HqCnoEntity>();
	/**
	 * 设备号+心跳返回时间
	 * */
	public static Map<String,String > sessionXtTime = new ConcurrentHashMap<String, String>();
	/**
	 * 设备号  +  ip
	 */
	public static Map<String, String> sessionCodeIP = new ConcurrentHashMap<String, String>();
	
	/**
	 * 设备号  +  版本号
	 */
	public static Map<String, String> sessionCodeVersion = new ConcurrentHashMap<String, String>();
	
	/**
	 * 设备号
	 */
	public static Map<String, WebUsDto> sessionWebCodeUsed = new ConcurrentHashMap<String, WebUsDto>();
	
	/**
	 *  设备号+待开门状态
	 * */
	public static Map<String, String> sessionOpen = new ConcurrentHashMap<String, String >();

	/**
	 * 设备号 +状态
	 */
	public static Map<String, String> sessionDeviceStatus = new ConcurrentHashMap<String, String>();

	/**
	 * websocket用户端通信 在线内存：地址：内容
	 */
	public static Map<String, WebSessionDto> sessionWebMap = new ConcurrentHashMap<String, WebSessionDto>();

	/**
	 * 设备号 +ip
	 */
	public static Map<String, String> sessionWebCodeIPDevice = new ConcurrentHashMap<String, String>();
	/**
	 * ip + 设备号 
	 */
	public static Map<String, String> sessionWebIPCodeDevice = new ConcurrentHashMap<String, String>();

	/**
	 * 在线内存：地址：内容
	 */
	public static Map<String, SkSessionDto> sessionMap = new ConcurrentHashMap<String, SkSessionDto>();

	/**
	 * 客户端通道
	 */
	public static ChannelGroup user_group = new DefaultChannelGroup(
			GlobalEventExecutor.INSTANCE);

	/**
	 * 用户id
	 */
	public static String UserId = "00161278";
	/**
	 * 版本号
	 */

	private static int orderindex = 0;

	private static int serial = 0;
	
	public static int isConnect = 0;


	public static String getOrderIndex() {
		if (999999 <= orderindex) {
			orderindex = 0;
		}

		String s = StringUtil.padLeft(
				String.valueOf(Integer.toHexString(orderindex)), 6, '0');
		orderindex++;
		return s;
	}

	public static String getSerialNumber() {
		if (65535 < serial) {
			serial = 0;
		}

		String s = StringUtil.padLeft(
				String.valueOf(Integer.toHexString(serial)), 4, '0');
		serial++;
		return s;
	}
}