MQTTClient_subscribe.c
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (c) 2012, 2020 IBM Corp.
3  *
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v2.0
6  * and Eclipse Distribution License v1.0 which accompany this distribution.
7  *
8  * The Eclipse Public License is available at
9  * https://www.eclipse.org/legal/epl-2.0/
10  * and the Eclipse Distribution License is available at
11  * http://www.eclipse.org/org/documents/edl-v10.php.
12  *
13  * Contributors:
14  * Ian Craggs - initial contribution
15  *******************************************************************************/
16 
17 #include <stdio.h>
18 #include <stdlib.h>
19 #include <string.h>
20 #include "MQTTClient.h"
21 
22 #define ADDRESS "tcp://mqtt.eclipse.org:1883"
23 #define CLIENTID "ExampleClientSub"
24 #define TOPIC "MQTT Examples"
25 #define PAYLOAD "Hello World!"
26 #define QOS 1
27 #define TIMEOUT 10000L
28 
30 
32 {
33  printf("Message with token value %d delivery confirmed\n", dt);
34  deliveredtoken = dt;
35 }
36 
37 int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
38 {
39  printf("Message arrived\n");
40  printf(" topic: %s\n", topicName);
41  printf(" message: %.*s\n", message->payloadlen, (char*)message->payload);
42  MQTTClient_freeMessage(&message);
43  MQTTClient_free(topicName);
44  return 1;
45 }
46 
47 void connlost(void *context, char *cause)
48 {
49  printf("\nConnection lost\n");
50  printf(" cause: %s\n", cause);
51 }
52 
53 int main(int argc, char* argv[])
54 {
57  int rc;
58 
59  if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID,
61  {
62  printf("Failed to create client, return code %d\n", rc);
63  rc = EXIT_FAILURE;
64  goto exit;
65  }
66 
68  {
69  printf("Failed to set callbacks, return code %d\n", rc);
70  rc = EXIT_FAILURE;
71  goto destroy_exit;
72  }
73 
74  conn_opts.keepAliveInterval = 20;
75  conn_opts.cleansession = 1;
76  if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
77  {
78  printf("Failed to connect, return code %d\n", rc);
79  rc = EXIT_FAILURE;
80  goto destroy_exit;
81  }
82 
83  printf("Subscribing to topic %s\nfor client %s using QoS%d\n\n"
84  "Press Q<Enter> to quit\n\n", TOPIC, CLIENTID, QOS);
85  if ((rc = MQTTClient_subscribe(client, TOPIC, QOS)) != MQTTCLIENT_SUCCESS)
86  {
87  printf("Failed to subscribe, return code %d\n", rc);
88  rc = EXIT_FAILURE;
89  }
90  else
91  {
92  int ch;
93  do
94  {
95  ch = getchar();
96  } while (ch!='Q' && ch != 'q');
97 
98  if ((rc = MQTTClient_unsubscribe(client, TOPIC)) != MQTTCLIENT_SUCCESS)
99  {
100  printf("Failed to unsubscribe, return code %d\n", rc);
101  rc = EXIT_FAILURE;
102  }
103  }
104 
105  if ((rc = MQTTClient_disconnect(client, 10000)) != MQTTCLIENT_SUCCESS)
106  {
107  printf("Failed to disconnect, return code %d\n", rc);
108  rc = EXIT_FAILURE;
109  }
110 destroy_exit:
111  MQTTClient_destroy(&client);
112 exit:
113  return rc;
114 }
#define MQTTCLIENT_SUCCESS
Definition: MQTTClient.h:131
int MQTTClient_connect(MQTTClient handle, MQTTClient_connectOptions *options)
Definition: MQTTClient.c:1644
volatile MQTTClient_deliveryToken deliveredtoken
int MQTTClient_disconnect(MQTTClient handle, int timeout)
Definition: MQTTClient.c:1908
int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
#define ADDRESS
MQTTAsync_connectOptions conn_opts
Definition: paho_c_sub.c:191
int MQTTClient_setCallbacks(MQTTClient handle, void *context, MQTTClient_connectionLost *cl, MQTTClient_messageArrived *ma, MQTTClient_deliveryComplete *dc)
Definition: MQTTClient.c:1032
int MQTTClient_unsubscribe(MQTTClient handle, const char *topic)
Definition: MQTTClient.c:2239
void connlost(void *context, char *cause)
void MQTTClient_freeMessage(MQTTClient_message **message)
Definition: MQTTClient.c:601
#define CLIENTID
#define QOS
void * MQTTClient
Definition: MQTTClient.h:246
void delivered(void *context, MQTTClient_deliveryToken dt)
void MQTTClient_destroy(MQTTClient *handle)
Definition: MQTTClient.c:556
MQTTAsync client
Definition: test6.c:276
int MQTTClient_subscribe(MQTTClient handle, const char *topic, int qos)
Definition: MQTTClient.c:2104
dictionary context
Definition: test2.py:57
void MQTTClient_free(void *memory)
Definition: MQTTClient.c:612
#define MQTTCLIENT_PERSISTENCE_NONE
#define MQTTClient_connectOptions_initializer
Definition: MQTTClient.h:953
int MQTTClient_deliveryToken
Definition: MQTTClient.h:257
enum MQTTReasonCodes rc
Definition: test10.c:1112
int MQTTClient_create(MQTTClient *handle, const char *serverURI, const char *clientId, int persistence_type, void *persistence_context)
Definition: MQTTClient.c:507
int main(int argc, char *argv[])
#define TOPIC


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:09