--- mqtt/inc/mqttd.h 2012/04/11 16:37:16 1.2.2.4 +++ mqtt/inc/mqttd.h 2012/04/24 13:54:50 1.2.2.6 @@ -42,23 +42,36 @@ struct tagSession { char *msg; } sess_will; - /* Data Storage by QoS class */ - SLIST_HEAD(tStore, tagStore) sess_txque[3]; + /* session scheduler */ + sched_root_task_t *sess_root; + + /* session subscriptions */ + SLIST_HEAD(tStore, tagStore) sess_subscr; + TAILQ_ENTRY(tagSession) sess_node; }; typedef TAILQ_HEAD(, tagSession) sessions_t; #define SESS_ELEM_LOCK(x) pthread_mutex_lock(&(x)->sess_mtx) #define SESS_ELEM_UNLOCK(x) pthread_mutex_unlock(&(x)->sess_mtx) +#define SESS_LOCK pthread_mutex_lock(&mtx_sess) +#define SESS_UNLOCK pthread_mutex_unlock(&mtx_sess) +struct tagPub { + ait_val_t pub_name; + mqtt_msg_t pub_packet; + TAILQ_ENTRY(tagPub) pub_node; +}; +typedef TAILQ_HEAD(, tagPub) pubs_t; +#define PUBS_LOCK pthread_mutex_lock(&mtx_pub) +#define PUBS_UNLOCK pthread_mutex_unlock(&mtx_pub) + + extern sessions_t Sessions; +extern pubs_t Pubs; extern sched_root_task_t *root; extern cfg_root_t cfg; extern pthread_mutex_t mtx_sess, mtx_pub; -#define SESS_LOCK pthread_mutex_lock(&mtx_sess) -#define SESS_UNLOCK pthread_mutex_unlock(&mtx_sess) -#define PUB_LOCK pthread_mutex_lock(&mtx_pub) -#define PUB_UNLOCK pthread_mutex_unlock(&mtx_pub) #endif