File:  [ELWIX - Embedded LightWeight unIX -] / mqtt / inc / mqttd.h
Revision 1.2.2.7: download - view: text, annotated - select for diffs - revision graph
Wed Apr 25 16:36:25 2012 UTC (12 years, 2 months ago) by misho
Branches: mqtt1_1
remove KASession func and add same function from libaitmqtt

    1: #ifndef __MQTTD_H
    2: #define __MQTTD_H
    3: 
    4: 
    5: #define API_SERVER_SIDE
    6: #include <mqttapi.h>
    7: 
    8: 
    9: struct tagStore {
   10: 	char				st_qos;
   11: 	u_short				st_msgid;
   12: 
   13: 	mqtt_subscr_t			st_subscr;
   14: 
   15: 	SLIST_ENTRY(tagStore)		st_node;
   16: };
   17: 
   18: struct tagSession {
   19: 	/* client session thread id */
   20: 	pthread_t			sess_tid;
   21: 	pthread_mutex_t			sess_mtx;
   22: 	/* server dispatcher */
   23: 	mqtt_srv_t			*sess_srv;
   24: 
   25: 	/* client network settings */
   26: 	int				sess_sock;
   27: 	u_short				sess_ka;
   28: 	/* client send retry in miliseconds, if client not receive message */
   29: 	u_int				sess_retry;
   30: 	/* message work buffer */
   31: 	mqtt_msg_t			*sess_buf;
   32: 
   33: 	/* authentication user info */
   34: 	char				sess_cid[MAX_CONNID];
   35: 	char				sess_user[MAX_CRED];
   36: 	char				sess_pass[MAX_CRED];
   37: 	char				sess_addr[64];
   38: 
   39: 	/* connect flags */
   40: 	char				sess_clean;
   41: 	struct {
   42: 		char			flag;
   43: 		char			qos;
   44: 		char			retain;
   45: 		char			*topic;
   46: 		char			*msg;
   47: 	} sess_will;
   48: 
   49: 	/* session subscriptions */
   50: 	SLIST_HEAD(tStore, tagStore)	sess_subscr;
   51: 
   52: 	TAILQ_ENTRY(tagSession)		sess_node;
   53: };
   54: typedef TAILQ_HEAD(, tagSession) sessions_t;
   55: #define SESS_ELEM_LOCK(x)	pthread_mutex_lock(&(x)->sess_mtx)
   56: #define SESS_ELEM_UNLOCK(x)	pthread_mutex_unlock(&(x)->sess_mtx)
   57: #define SESS_LOCK		pthread_mutex_lock(&mtx_sess)
   58: #define SESS_UNLOCK		pthread_mutex_unlock(&mtx_sess)
   59: 
   60: struct tagPub {
   61: 	ait_val_t		pub_name;
   62: 	mqtt_msg_t		pub_packet;
   63: 
   64: 	TAILQ_ENTRY(tagPub)	pub_node;
   65: };
   66: typedef TAILQ_HEAD(, tagPub)	pubs_t;
   67: #define PUBS_LOCK		pthread_mutex_lock(&mtx_pub)
   68: #define PUBS_UNLOCK		pthread_mutex_unlock(&mtx_pub)
   69: 
   70: 
   71: extern sessions_t Sessions;
   72: extern pubs_t Pubs;
   73: extern sched_root_task_t *root;
   74: extern cfg_root_t cfg;
   75: extern pthread_mutex_t mtx_sess, mtx_pub;
   76: 
   77: 
   78: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>