#ifndef COMMON__INCLUDED
#define COMMON__INCLUDED
#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_ds.h"
#include "dy_utils/dy_pp.h"
#include "dy_utils/dy_db.h"
#include "dy_utils/kv_array.h"
#include "dy_utils/dy_ipc.h"
#include "dy_utils/period_service.h"

#include "MetaTagSequence.pb-c.h"
#include "ValueSequence.pb-c.h"
#include "RtdEvent.pb-c.h"


#define LANZHUO_DB      "/app/lanzhuo_rtd.db"
#define LANZHUO_DB_TMPFS      "/tmp/lanzhuo_rtd.db"

typedef struct _lanzhuo_var_s
{
    mqtt_session_t* session_ext;         //外部broker的MQTT client，用于从外部订阅数据
    ipc_session_t* session_int;         //内部broker的MQTT client，用于进程间通信
    dy_db_session_t* db_session;          //用于操作DB的会话
    char *token;
    char *ep_id; // endpoint id
    char *ep_name; // endpoint name
    MetaTagSequence meta_tag_seq;
    void* meta_tag_buf;
    int meta_tag_buf_len;
    int report_timer;
    char sn_str[SN_MAX_LEN];
} lanzhuo_var_t;


extern int external_client_init(lanzhuo_var_t *var);
extern int internal_client_init(lanzhuo_var_t *var);
extern int external_mqtt_handle_recv_msg(void *obj, mqtt_message_t *mqtt_msg);


#endif /* COMMON__INCLUDED */
