1
1
# NanoSDK
2
2
3
- ### 安装NanoSDK库
3
+ > [ 中文] ( ./README_ZH.md )
4
+
5
+ ### Install NanoSDK library
4
6
5
7
``` shell
6
8
git clone https://github.com/emqx/NanoSDK
7
9
cd NanoSDK
8
10
mkdir build
9
11
cd build
10
12
cmake -G Ninja ..
11
- # 编译TLS :
13
+ # Build with TLS :
12
14
# cmake -G Ninja -DNNG_ENABLE_TLS=ON ..
13
- # 编译SQLITE :
15
+ # Build with SQLITE :
14
16
# cmake -G Ninja -DNNG_ENABLE_SQLITE=ON ..
15
17
ninja
16
18
ninja install
17
19
```
18
20
19
- ### 创建nng_socket
21
+ ### Open and create nng_socket
20
22
21
23
``` c
22
24
nng_socket sock;
23
25
nng_mqtt_client_open (&sock);
24
26
nng_mqttv5_client_open(&sock);
25
27
```
26
28
27
- ### 创建work
29
+ ### Create work
28
30
29
- #### work定义
31
+ #### work struct
30
32
31
33
```c
32
34
struct work {
@@ -37,7 +39,7 @@ struct work {
37
39
};
38
40
```
39
41
40
- #### 为socket创建n个work
42
+ #### Create works for socket
41
43
42
44
``` c
43
45
static size_t nwork = 32 ;
@@ -49,7 +51,7 @@ for (i = 0; i < nwork; i++) {
49
51
}
50
52
```
51
53
52
- ### 创建并设置mqtt connect消息体
54
+ #### Initialize connect message
53
55
54
56
``` c
55
57
nng_msg *msg;
@@ -58,16 +60,15 @@ nng_mqtt_msg_set_packet_type(msg, NNG_MQTT_CONNECT);
58
60
nng_mqtt_msg_set_connect_keep_alive(msg, 60);
59
61
nng_mqtt_msg_set_connect_clean_session(msg, true);
60
62
nng_mqtt_msg_set_connect_proto_version(msg, opts->version);
61
- nng_mqtt_msg_set_connect_user_name(msg, "admin");
62
- nng_mqtt_msg_set_connect_password(msg, "public");
63
+ nng_mqtt_msg_set_connect_user_name(msg, "admin");
64
+ nng_mqtt_msg_set_connect_password(msg, "public");
63
65
```
64
66
65
67
66
68
67
- ### 创建并设置nng_dialer
69
+ ### Initialize nng_dialer
68
70
69
71
```c
70
-
71
72
nng_mqtt_set_connect_cb(sock, connect_cb, &sock);
72
73
nng_mqtt_set_disconnect_cb(sock, disconnect_cb, NULL);
73
74
@@ -88,15 +89,7 @@ nng_dialer_start(dialer, NNG_FLAG_NONBLOCK);
88
89
```
89
90
90
91
91
- ### 状态机回调函数
92
-
93
- > 本实例演示从初始INIT状态进入到RECV状态后进入数据接收状态
94
- >
95
- > RECV状态中获取收到的PUBLISH数据
96
- >
97
- > WAIT状态中进行清理nng_msg并重用,组装一个PUBLISH消息,设置SEND状态并进入发送回调
98
- >
99
- > SEND状态获取发送结果,并返回到RECV状态中
92
+ ### State callback function
100
93
101
94
``` c
102
95
void
@@ -179,7 +172,8 @@ client_cb(void *arg)
179
172
}
180
173
```
181
174
182
- ### 启动回调函数
175
+ ### Start callback function
176
+
183
177
```c
184
178
for (i = 0; i < nwork; i++) {
185
179
client_cb(works[i]);
@@ -190,14 +184,15 @@ for (;;) {
190
184
}
191
185
```
192
186
193
- ### 工程编译及运行
187
+ ### Building and Running
188
+
194
189
``` shell
195
190
mkdir build
196
191
cd build
197
192
cmake -G Ninja ..
198
- # 编译TLS :
193
+ # Build with TLS :
199
194
# cmake -G Ninja -DNNG_ENABLE_TLS=ON ..
200
- # 编译SQLITE :
195
+ # Build with SQLITE :
201
196
# cmake -G Ninja -DNNG_ENABLE_SQLITE=ON ..
202
197
ninja
203
198
```
@@ -211,6 +206,8 @@ mqtt_async:
211
206
[default: mqtt-tcp://127.0.0.1:1883]
212
207
-n, --parallel < number of works> (default: 32)
213
208
-v, --version < mqtt version> (default: 4)
209
+ -u, --username < username>
210
+ -P, --password < password>
214
211
--sqlite enable sqlite cache (default: false)
215
212
-s, --secure enable ssl/tls mode (default: disable)
216
213
--cacert < cafile path>
@@ -229,14 +226,16 @@ mqtt_async:
229
226
./mqtt_async --url " tls+mqtt-tcp://127.0.0.1:8883" -s --cacert ca.crt --cert server.crt --key server.key
230
227
```
231
228
232
- ### NanoSDK实现案例
229
+ ### NanoSDK Implementation case
230
+
233
231
[ nanomq_cli] ( https://github.com/emqx/nanomq/tree/master/nanomq_cli )
234
232
235
- ### 完整代码工程
233
+ ### Project source
234
+
235
+ [ mqtt-client-C-nng] ( https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-nng )
236
236
237
- [ mqtt-client-nng] ( https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-nng )
238
237
238
+ ### NanoSDK source
239
239
240
- ### NanoSDK源码
241
240
[ NanoSDK] ( https://github.com/emqx/NanoSDK )
242
241
0 commit comments