import ListenerUtil from '../../utils/ListenerUtil'

var DeviceStateSocketApi = {
  MsgType: {
    // 告警相关消息：
    ADD_ALARM: '0:0',
    DELETE_ALARM: '1:0',
    MODIFY_ALARM: '2:0',
    CONFIRM_ALARM: '5:0',
    CLEAR_ALARM: '6:0',
    RECOVER_ALARM: '8:0',
    REFRESH_ALARM: '15:0',
    // 设备相关消息：
    ADD_DEVICE: '0:1',
    DELETE_DEVICE: '1:1',
    MODIFY_DEVICE: '2:1',
    DISCOVER_DEVICE: '7:1',
    MOVE_DEVICE_FROM_SUBNET: '9:1',
    // 链路相关消息：
    ADD_LINK: '0:2',
    DELETE_LINK: '1:2',
    MODIFY_LINK: '2:2',
    DISCOVER_LINK: '7:2',
    // 子网相关消息：
    ADD_SUBNET: '0:4',
    DELETE_SUBNET: '1:4',
    MODIFY_SUBNET: '2:4',
    // Eline业务相关消息：
    ADD_ELINE: '0:6',
    DELETE_ELINE: '1:6',
    MODIFY_ELINE: '2:6',
    // QOS业务相关消息：
    // ADD_CDP: "0:10",
    // DELETE_CDP: "1:10",
    // MODIFY_CDP: "2:10",
    // 告警等级配置相关消息：
    MODIFY_ALARM_LEVEL_CONFIG: '2:8',
    // 告警过滤器相关消息：
    ADD_ALARM_FILTER: '0:9',
    DELETE_ALARM_FILTER: '1:9',
    MODIFY_ALARM_FILTER: '2:9',
    // 服务器相关消息：
    ADD_SERVER: '0:11',
    DELETE_SERVER: '1:11',
    MODIFY_SERVER: '2:11',
    // 权限修改
    MODIFY_AUTHORITY: '2:12',
    // 已登录用户密码修改
    MODIFY_USER_PASSWORD: '2:13',
    // 修改用户组
    MODIFY_USER_GROUP: '2:14',
    // 删除用户
    DELETE_USER: '1:14',
    // 相同用户登录
    SAME_USER_LOGIN: '10:14',
    // 流量监控

    // todo 之后须统一
    BANK_WIDTH: '2:10',
    // 配置文件添加
    CONFIG_FILE_ADD: '0:15',
    // 配置文件删除
    CONFIG_FILE_DELETE: '1:15',
    // 网元发现
    TOPOLOGY_DISCOVER: '2:3',
    // 配置文件差异
    FILE_DIFFERENCE_MESSAGE_ADD: '0:19',
    FILE_DIFFERENCE_MESSAGE_UPDATE: '19:2',
    FILE_DIFFERENCE_MESSAGE_DELETE: '1:19',

    // 未知消息 ：
    UNKNOWN: 'undefined:undefined'
  },
  /**
   * 获取消息类型
   * @param message 消息
   * @returns {string} 类型字符串 'objectType:objectOption'
   */
  getMessageType: function (message) {
    return String(message.objectOption) + ':' + String(message.objectType)
  },
  /**
   * 获取消息数据
   * @param message 消息
   * @returns {Object} 消息数据
   */
  getMessageData: function (message) {
    return message.returnObject
  }
}

// 增加创建消息监听器的方法
var emptyListenerRegistry = ListenerUtil.parseListenerRegistry(DeviceStateSocketApi.MsgType)
DeviceStateSocketApi.createMessageListenerRegistry = function () {
  return Object.assign({}, emptyListenerRegistry)
}

export default DeviceStateSocketApi
