03-publish-c2b-qos2-maximum-qos-1.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <stdbool.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <mosquitto.h>
  6. static int run = -1;
  7. void on_connect(struct mosquitto *mosq, void *obj, int rc)
  8. {
  9. if(rc){
  10. exit(1);
  11. }else{
  12. rc = mosquitto_publish(mosq, NULL, "maximum/qos/qos2", strlen("message"), "message", 2, false);
  13. if(rc != MOSQ_ERR_QOS_NOT_SUPPORTED) run = 1;
  14. rc = mosquitto_publish(mosq, NULL, "maximum/qos/qos1", strlen("message"), "message", 1, false);
  15. if(rc != MOSQ_ERR_SUCCESS) run = 1;
  16. rc = mosquitto_publish(mosq, NULL, "maximum/qos/qos0", strlen("message"), "message", 0, false);
  17. if(rc != MOSQ_ERR_SUCCESS) run = 1;
  18. }
  19. }
  20. void on_publish(struct mosquitto *mosq, void *obj, int mid)
  21. {
  22. if(mid == 2){
  23. mosquitto_disconnect(mosq);
  24. }
  25. }
  26. void on_disconnect(struct mosquitto *mosq, void *obj, int rc)
  27. {
  28. run = 0;
  29. }
  30. int main(int argc, char *argv[])
  31. {
  32. int rc;
  33. struct mosquitto *mosq;
  34. int port = atoi(argv[1]);
  35. mosquitto_lib_init();
  36. mosq = mosquitto_new("publish-qos2-test", true, NULL);
  37. if(mosq == NULL){
  38. return 1;
  39. }
  40. mosquitto_int_option(mosq, MOSQ_OPT_PROTOCOL_VERSION, MQTT_PROTOCOL_V5);
  41. mosquitto_connect_callback_set(mosq, on_connect);
  42. mosquitto_disconnect_callback_set(mosq, on_disconnect);
  43. mosquitto_publish_callback_set(mosq, on_publish);
  44. rc = mosquitto_connect(mosq, "localhost", port, 60);
  45. while(run == -1){
  46. mosquitto_loop(mosq, 50, 1);
  47. }
  48. mosquitto_loop(mosq, 50, 1);
  49. mosquitto_destroy(mosq);
  50. mosquitto_lib_cleanup();
  51. return run;
  52. }