acl  3.5.3.0
mqtt_connect.hpp
浏览该文件的文档.
1 #pragma once
2 
3 #include "mqtt_message.hpp"
4 
5 namespace acl {
6 
7 typedef enum {
15 
16 /**
17  * mqtt message object for the MQTT_CONNECT type.
18  */
20 public:
21  /**
22  * constructor for creating MQTT_CONNECT mqtt message object.
23  * @see mqtt_message
24  */
25  mqtt_connect(void);
26 
27  /**
28  * constructor for creating MQTT_CONNECT mqtt message object.
29  * @see mqtt_message
30  */
31  mqtt_connect(const mqtt_header& header);
32 
33  ~mqtt_connect(void);
34 
35 protected:
36  // @override
37  bool to_string(string& out);
38 
39  // @override
40  int update(const char* data, int dlen);
41 
42  // @override
43  bool finished(void) const {
44  return finished_;
45  }
46 
47 public:
48  void set_keep_alive(unsigned short keep_alive);
49  void set_cid(const char* cid);
50  void set_username(const char* name);
51  void set_passwd(const char* passwd);
52  void set_will_qos(mqtt_qos_t qos);
53  void set_will_topic(const char* topic);
54  void set_will_msg(const char* msg);
55  void clean_session(void);
56 
57  unsigned short get_keep_alive(void) const {
58  return keep_alive_;
59  }
60 
61  const char* get_cid(void) const {
62  return cid_.empty() ? NULL : cid_.c_str();;
63  }
64 
65  const char* get_username(void) const {
66  return username_.empty() ? NULL : username_.c_str();
67  }
68 
69  const char* get_passwd(void) const {
70  return passwd_.empty() ? NULL : passwd_.c_str();
71  }
72 
73  mqtt_qos_t get_will_qos(void) const {
74  return will_qos_;
75  }
76 
77  const char* get_will_topic(void) const {
78  return will_topic_.empty() ? NULL : will_topic_.c_str();
79  }
80 
81  const char* get_will_msg(void) const {
82  return will_msg_.empty() ? NULL : will_msg_.c_str();
83  }
84 
85  bool has_session(void) const;
86 
87 private:
88  unsigned status_;
89  bool finished_;
90  char buff_[10];
91  int dlen_;
92 
93  mqtt_qos_t will_qos_;
94  unsigned char conn_flags_;
95  unsigned short keep_alive_;
96 
97  string cid_;
98  string username_;
99  string passwd_;
100  string will_topic_;
101  string will_msg_;
102 
103 public:
104  // (internal)
105  // the methods below will be used to update mqtt message object when
106  // parsing mqtt body data.
107  int update_header_var(const char* data, int dlen);
108  int update_cid_len(const char* data, int dlen);
109  int update_cid_val(const char* data, int dlen);
110  int update_username_len(const char* data, int dlen);
111  int update_username_val(const char* data, int dlen);
112  int update_passwd_len(const char* data, int dlen);
113  int update_passwd_val(const char* data, int dlen);
114  int update_will_topic_len(const char* data, int dlen);
115  int update_will_topic_val(const char* data, int dlen);
116  int update_will_msg_len(const char* data, int dlen);
117  int update_will_msg_val(const char* data, int dlen);
118 };
119 
120 } // namespace acl
const char * get_passwd(void) const
HTTP_API void const char * name
Definition: lib_http.h:620
mqtt_conn_status_t
Definition: mqtt_connect.hpp:7
mqtt_qos_t
Definition: mqtt_header.hpp:38
unsigned short get_keep_alive(void) const
const char * get_username(void) const
bool finished(void) const
const char * get_will_msg(void) const
#define ACL_CPP_API
mqtt_qos_t get_will_qos(void) const
const char * get_cid(void) const
const char * get_will_topic(void) const