#ifndef __COMMON_SOCKET_H
#define __COMMON_SOCKET_H

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

#define TCP_SERVER_ADDR   "183.129.159.163"
#define TCP_SERVER_PORT   10140

#define UTC_AT_2000_01_01_00_00_00 946684800   // 2000年1月1日 00:00:00的UTC时间戳
typedef struct _common_socket_var_s common_socket_var_t;

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 MQTT_topic_s
{
	char binding_port;
	char *pub_topic;
	char *sub_topic;
} MQTT_topic_t;

typedef struct _connect_config_s 
{
	struct list_head list;
	socket_type_e type;
	socket_session_t *socket_client;
	char *addr;
	int port;
	char sn[SN_MAX_LEN];
	common_config_t common_cfg;
	mqtt_session_t* session;
	MQTT_topic_t mqtt_cfg;
	time_t last_send;
	common_socket_var_t *var;
} connect_config_t;

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

#endif
