MQTTClient_publish_async.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 #if !defined(_WIN32)
23 #include <unistd.h>
24 #else
25 #include <windows.h>
26 #endif
27 
28 #define ADDRESS "tcp://mqtt.eclipse.org:1883"
29 #define CLIENTID "ExampleClientPub"
30 #define TOPIC "MQTT Examples"
31 #define PAYLOAD "Hello World!"
32 #define QOS 1
33 #define TIMEOUT 10000L
34 
36 
38 {
39  printf("Message with token value %d delivery confirmed\n", dt);
40  deliveredtoken = dt;
41 }
42 
43 int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
44 {
45  printf("Message arrived\n");
46  printf(" topic: %s\n", topicName);
47  printf(" message: %.*s\n", message->payloadlen, (char*)message->payload);
48  MQTTClient_freeMessage(&message);
49  MQTTClient_free(topicName);
50  return 1;
51 }
52 
53 void connlost(void *context, char *cause)
54 {
55  printf("\nConnection lost\n");
56  printf(" cause: %s\n", cause);
57 }
58 
59 int main(int argc, char* argv[])
60 {
65  int rc;
66 
67  if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID,
69  {
70  printf("Failed to create client, return code %d\n", rc);
71  rc = EXIT_FAILURE;
72  goto exit;
73  }
74 
76  {
77  printf("Failed to set callbacks, return code %d\n", rc);
78  rc = EXIT_FAILURE;
79  goto destroy_exit;
80  }
81 
82  conn_opts.keepAliveInterval = 20;
83  conn_opts.cleansession = 1;
84  if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
85  {
86  printf("Failed to connect, return code %d\n", rc);
87  rc = EXIT_FAILURE;
88  goto destroy_exit;
89  }
90 
91  pubmsg.payload = PAYLOAD;
92  pubmsg.payloadlen = (int)strlen(PAYLOAD);
93  pubmsg.qos = QOS;
94  pubmsg.retained = 0;
95  deliveredtoken = 0;
96  if ((rc = MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token)) != MQTTCLIENT_SUCCESS)
97  {
98  printf("Failed to publish message, return code %d\n", rc);
99  rc = EXIT_FAILURE;
100  }
101  else
102  {
103  printf("Waiting for publication of %s\n"
104  "on topic %s for client with ClientID: %s\n",
106  while (deliveredtoken != token)
107  {
108  #if defined(_WIN32)
109  Sleep(100);
110  #else
111  usleep(10000L);
112  #endif
113  }
114  }
115 
116  if ((rc = MQTTClient_disconnect(client, 10000)) != MQTTCLIENT_SUCCESS)
117  {
118  printf("Failed to disconnect, return code %d\n", rc);
119  rc = EXIT_FAILURE;
120  }
121 
122 destroy_exit:
123  MQTTClient_destroy(&client);
124 
125 exit:
126  return rc;
127 }
#define TOPIC
void delivered(void *context, MQTTClient_deliveryToken dt)
#define QOS
#define MQTTCLIENT_SUCCESS
Definition: MQTTClient.h:131
int MQTTClient_connect(MQTTClient handle, MQTTClient_connectOptions *options)
Definition: MQTTClient.c:1644
int MQTTClient_disconnect(MQTTClient handle, int timeout)
Definition: MQTTClient.c:1908
#define MQTTClient_message_initializer
Definition: MQTTClient.h:327
MQTTAsync_connectOptions conn_opts
Definition: paho_c_sub.c:191
int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
#define PAYLOAD
int MQTTClient_setCallbacks(MQTTClient handle, void *context, MQTTClient_connectionLost *cl, MQTTClient_messageArrived *ma, MQTTClient_deliveryComplete *dc)
Definition: MQTTClient.c:1032
MQTTClient_deliveryToken deliveredtoken
int MQTTClient_publishMessage(MQTTClient handle, const char *topicName, MQTTClient_message *message, MQTTClient_deliveryToken *deliveryToken)
Definition: MQTTClient.c:2432
void connlost(void *context, char *cause)
int main(int argc, char *argv[])
#define CLIENTID
void MQTTClient_freeMessage(MQTTClient_message **message)
Definition: MQTTClient.c:601
void * MQTTClient
Definition: MQTTClient.h:246
void MQTTClient_destroy(MQTTClient *handle)
Definition: MQTTClient.c:556
MQTTAsync client
Definition: test6.c:276
dictionary context
Definition: test2.py:57
void MQTTClient_free(void *memory)
Definition: MQTTClient.c:612
#define ADDRESS
#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


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