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: u_short st_msgid;
11:
12: mqtt_subscr_t st_subscr;
13:
14: SLIST_ENTRY(tagStore) st_node;
15: };
16:
17: struct tagPkt {
18: ait_val_t *pkt_data;
19:
20: SLIST_ENTRY(tagPkt) pkt_node;
21: };
22:
23: struct tagSession {
24: /* server dispatcher */
25: mqtt_srv_t *sess_srv;
26:
27: /* client network settings */
28: int sess_sock;
29: u_short sess_ka;
30: /* client send retry in miliseconds, if client not receive message */
31: u_int sess_retry;
32: /* message work buffer */
33: mqtt_msg_t *sess_buf;
34:
35: /* authentication user info */
36: char sess_cid[MAX_CONNID];
37: char sess_user[MAX_CRED];
38: char sess_pass[MAX_CRED];
39: char sess_addr[64];
40:
41: /* connect flags */
42: char sess_clean;
43: struct {
44: char flag;
45: char qos;
46: char retain;
47: char *topic;
48: char *msg;
49: } sess_will;
50:
51: /* session subscriptions & send pubs */
52: SLIST_HEAD(tStore, tagStore) sess_subscr;
53: SLIST_HEAD(tPkt, tagPkt) sess_sndpkt;
54:
55: TAILQ_ENTRY(tagSession) sess_node;
56: };
57: typedef TAILQ_HEAD(, tagSession) sessions_t;
58:
59:
60: extern sessions_t Sessions;
61: extern sched_root_task_t *root;
62: extern cfg_root_t cfg;
63:
64:
65: /* function prototypes */
66: void *startSession(sched_task_t *task);
67:
68:
69: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>