#ifndef __COMMON_SOCKET_H
#define __COMMON_SOCKET_H

#include <string.h>
#include <syslog.h>
#include "ipc_session.h"
#include "lnxall_list.h"
#include "dy_utils/dy_common.h"
#include "dy_utils/dy_pp.h"
#include "dy_utils/kv_array.h"
#include "dy_socket_server_session.h"
#include "dy_utils/dy_ipc.h"

#define TCP_SERVER_ADDR   "183.129.159.163"
#ifdef DATA_SERVICE
#define TCP_SERVER_PORT   8899
#else
#define TCP_SERVER_PORT   8877
#endif
#define UTC_AT_2000_01_01_00_00_00 946684800   // 2000年1月1日 00:00:00的UTC时间戳

typedef struct _common_config_s 
{
	char binding_port;
    char *frame_header;
	int frame_header_len;
	char *frame_tail;
	char frame_tail_len;
	char *login_packet;
	char login_packet_len;
	char *heartbeat_packet;
	char heartbeat_packet_len;
	int heartbeat_interval;
} common_config_t;

typedef struct _connect_config_s 
{
	struct list_head list;
	socket_server_session_t socket_server;
	common_config_t common_cfg;
	time_t last_send;
} connect_config_t;

typedef struct _client_info_t 
{
	struct list_head list;
	char sn[SN_MAX_LEN];
	char hostname[64];
	int port;
	int socket_fd;
	char file_name[128];
	int start;
	char status[256];
} client_info_t;

typedef struct _ip_soundbox_var_s
{
    ipc_session_t* session; //内部broker的MQTT session，用于进程间通信
	struct list_head client_list;
	socket_server_session_t socket_server;
    nodes_cfg_table_t *nodes_cfg_table; //节点信息
    kv_array_t identifier_backup;
    char sn_str[SN_MAX_LEN];
    char proc_name[PROGRAM_NAME_LEN];
    char gprs_no[16];
    int heartbeat_timer;
	int node_cnt;
} ip_soundbox_var_t;

#endif
