| 271 | } |
| 272 | |
| 273 | bool mqtt_aclient::read_callback(char* data, int len) { |
| 274 | if (data == NULL || len <= 0) { |
| 275 | logger_error("invalid data=%p, len=%d", data, len); |
| 276 | return false; |
| 277 | } |
| 278 | |
| 279 | while (true) { |
| 280 | int left = handle_data(data, len); |
| 281 | if (left < 0) { |
| 282 | header_->reset(); |
| 283 | return false; |
| 284 | } else if (left > 0) { |
| 285 | data += len - left; |
| 286 | len = left; |
| 287 | } else { |
| 288 | return true; |
| 289 | } |
| 290 | } |
| 291 | } |
| 292 | |
| 293 | int mqtt_aclient::handle_data(char* data, int len) { |
| 294 | int left; |