03-publish-c2b-qos2-disconnect.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include <cstdlib>
  2. #include <cstring>
  3. #include <mosquittopp.h>
  4. static int run = -1;
  5. static int first_connection = 1;
  6. class mosquittopp_test : public mosqpp::mosquittopp
  7. {
  8. public:
  9. mosquittopp_test(const char *id);
  10. void on_connect(int rc);
  11. void on_disconnect(int rc);
  12. void on_publish(int mid);
  13. };
  14. mosquittopp_test::mosquittopp_test(const char *id) : mosqpp::mosquittopp(id)
  15. {
  16. }
  17. void mosquittopp_test::on_connect(int rc)
  18. {
  19. if(rc){
  20. exit(1);
  21. }else{
  22. if(first_connection == 1){
  23. publish(NULL, "pub/qos2/test", strlen("message"), "message", 2, false);
  24. first_connection = 0;
  25. }
  26. }
  27. }
  28. void mosquittopp_test::on_disconnect(int rc)
  29. {
  30. if(rc){
  31. reconnect();
  32. }else{
  33. run = 0;
  34. }
  35. }
  36. void mosquittopp_test::on_publish(int mid)
  37. {
  38. disconnect();
  39. }
  40. int main(int argc, char *argv[])
  41. {
  42. struct mosquittopp_test *mosq;
  43. int port = atoi(argv[1]);
  44. mosqpp::lib_init();
  45. mosq = new mosquittopp_test("publish-qos2-test");
  46. mosq->message_retry_set(3);
  47. mosq->connect("localhost", port, 60);
  48. while(run == -1){
  49. mosq->loop();
  50. }
  51. delete mosq;
  52. delete mosq;
  53. mosqpp::lib_cleanup();
  54. return run;
  55. }