/**
* @file xlt_struct.h
 * @author 上海前路有光数字科技
 * @date 2026-01-10
 * @brief 本文件定义XLT行情数据结构体
 */

#pragma once

#include "xlt_data_type.h"

namespace x1{

#pragma pack(push, 1)
    /**
     * @brief 错误信息
     */
    typedef struct {
        uint64_t error_code_type;                           ///< 错误类型
        uint64_t error_code;                                ///< 错误代码
        char error_msg[CONST_ERROR_MSG_LEN];                ///< 错误信息
    } xlt_error_info_t;

    /**
     * @brief 申报用户的ip和mac等信息
     */
    typedef struct xlt_user_terminal_info_t {
        char* local_ip;                                     ///< 本地IP地址
        char* mac_addr;                                     ///< MAC地址
        char* hd;                                           ///< 硬盘序列号
        TerminalType term_type;                             ///< 终端类型
        char* internet_ip;                                  ///< 公网IP地址
        int32_t internet_port;                              ///< 公网端口号
        char* macos_sno;                                    ///< MacOS系统的序列号，仅为MacOS系统需要填写
        char* pcn;                                          ///< PC 终端设备名
        char* cpu_sn;                                       ///< CPU 序列号
        char* pi;                                           ///< 硬盘分区信息
        char* vol;                                          ///< 系统盘卷标号
        char* extern_info;                                  ///< 扩展信息，如客户端版本号等（终端信息规范中'@'之后的所有内容）
    } xlt_user_terminal_info_t;

    /**
     * @brief 查询定位结构体
     * 用于记录每个分表的查询位置，用于分页查询
     */
    typedef struct xlt_page_query_reference_t {
        uint32_t sub_table_num;                             ///< 分表数量
        uint32_t sub_table_end_points[16];                  ///< 每个分表的数据终点,即当前的数据量
        uint32_t positions[16];                             ///< 查询位置数组，每个分表对应一个位置，用于分页查询

        static xlt_page_query_reference_t create() {
            xlt_page_query_reference_t ref{};
            return ref;
        }
    } xlt_page_query_reference_t;

#pragma pack(pop)
}