#ifndef __MQTTD_H #define __MQTTD_H #define API_SERVER_SIDE #include struct tagStore { u_short st_msgid; mqtt_subscr_t st_subscr; SLIST_ENTRY(tagStore) st_node; }; struct tagSession { /* server dispatcher */ mqtt_srv_t *sess_srv; /* client network settings */ int sess_sock; u_short sess_ka; /* client send retry in miliseconds, if client not receive message */ u_int sess_retry; /* message work buffer */ mqtt_msg_t *sess_buf; /* authentication user info */ char sess_cid[MAX_CONNID]; char sess_user[MAX_CRED]; char sess_pass[MAX_CRED]; char sess_addr[64]; /* connect flags */ char sess_clean; struct { char flag; char qos; char retain; char *topic; char *msg; } sess_will; /* session subscriptions & send pubs */ SLIST_HEAD(tStore, tagStore) sess_subscr; TAILQ_ENTRY(tagSession) sess_node; }; typedef TAILQ_HEAD(, tagSession) sessions_t; extern sessions_t Sessions; extern sched_root_task_t *root; extern cfg_root_t cfg; /* function prototypes */ void *startSession(sched_task_t *task); #endif