package com.zt.plat.module.qms.iot.tcpserver.core;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;

/**
 * <b>ChannelStatInfo</b>
 * <p>更新历史：</p>
 * <pre> 版本         更新时间            更新者        更新内容
 * V1.0      2021-12-1          王兴荣         Add</pre>
 * <b>Copyright (C)  云南志者竟成科技有限公司</b> 
 * @author 王兴荣 &lt;xingrong_wang@will-way.cn&gt;
 * @version V1.0 
 * @since 2021-12-1
 */
@Data
public class ChannelStatInfo implements Serializable {

    private static final long serialVersionUID = -7066118329627225937L;

    /**
     * ID
     */
    private String id;
    
    /**
     * 业务id
     */
    private String bsId;
    
    /**
     * 客户端IP
     */
    private String clientIp;

    /**
     * 端口
     */
    private int clientPort;
    
    /**
     * 协议
     */
    private String clientProtocol;
    
    /**
     * 代理ip
     */
    private String proxyIp;
    
    /**
     * 代理端口
     */
    private int proxyPort;
    
    /**
     * 代理协议
     */
    private String proxyProtocol;
    
    /**
     * 连接类型
     */
    private String connectType;
    
    /**
     * 解码失败数
     */
    private int decodeFailCount;
    
    /**
     * 用户ID
     */
    private String userId;
    
    /**
     * 用户token
     */
    private String token;
    
    /**
     * 用户姓名
     */
    private String realName;

    /** 设备Id **/
    private String deviceId;
    
    /** 设备编码 **/
    private String deviceCode;
    
    /** 设备类型 **/
    private String deviceType;
    
    /** 设备名称 **/
    private String deviceName;

    /** 设置控制人名称 **/
    private String controlRealName;
    
    /**
     * 统计开始时间
     */
    private Date gmtCreate;

    /**
     * 已接收字节数
     */
    private AtomicLong receivedBytes;
    
    /**
     * 已接收业务包
     */
    private AtomicLong receivedPackets;
    
    /**
     * 已接收TCP包
     */
    private AtomicLong receivedTcps;

    /**
     * 平均每个TCP包接收的字节数
     */
    private double bytesPerTcpReceive;
    
    /**
     * 平均每个TCP包接收的业务包
     */
    private double packetsPerTcpReceive;

    /**
     * 已处理的字节数
     */
    private AtomicLong handledBytes;
    
    /**
     * 已处理的业务包
     */
    private AtomicLong handledPackets;

    /**
     * 已发送的字节数
     */
    private AtomicLong sentBytes;
    
    /**
     * 已发送的业务包
     */
    private AtomicLong sentPackets;
    
    /**
     * 最近一次通信时间
     */
    private Date gmtLatestCommunicate;
    
    /**
     * 注册时间
     */
    private Date regTime;
    
    /**
     * 备注
     */
    private String remarks;
    
}
