--- mqtt/inc/mqttd.h 2011/12/14 12:45:30 1.1.2.5 +++ mqtt/inc/mqttd.h 2012/04/11 16:37:16 1.2.2.4 @@ -14,6 +14,9 @@ struct tagStore { struct tagSession { /* client session thread id */ pthread_t sess_tid; + pthread_mutex_t sess_mtx; + /* server dispatcher */ + mqtt_srv_t *sess_srv; /* client network settings */ int sess_sock; @@ -40,18 +43,22 @@ struct tagSession { } sess_will; /* Data Storage by QoS class */ - SLIST_HEAD(qosStore, tagStore) sess_store[MQTT_QOS_RESERVED]; - + SLIST_HEAD(tStore, tagStore) sess_txque[3]; 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) extern sessions_t Sessions; extern sched_root_task_t *root; -extern sl_config cfg; -extern pthread_mutex_t mtx_sess; +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