Commit a3162cc7 authored by Ian Craggs's avatar Ian Craggs

Merge pull request #129 from guilhermeferreira/fix-samples

Fix samples
parents 01cda138 32e8eaa2
...@@ -87,7 +87,7 @@ HEADERS_A = $(HEADERS) ...@@ -87,7 +87,7 @@ HEADERS_A = $(HEADERS)
SAMPLE_FILES_C = stdinpub stdoutsub pubsync pubasync subasync SAMPLE_FILES_C = stdinpub stdoutsub pubsync pubasync subasync
SYNC_SAMPLES = ${addprefix ${blddir}/samples/,${SAMPLE_FILES_C}} SYNC_SAMPLES = ${addprefix ${blddir}/samples/,${SAMPLE_FILES_C}}
SAMPLE_FILES_A = stdoutsuba MQTTAsync_subscribe MQTTAsync_publish SAMPLE_FILES_A = stdinpuba stdoutsuba MQTTAsync_subscribe MQTTAsync_publish
ASYNC_SAMPLES = ${addprefix ${blddir}/samples/,${SAMPLE_FILES_A}} ASYNC_SAMPLES = ${addprefix ${blddir}/samples/,${SAMPLE_FILES_A}}
TEST_FILES_C = test1 test2 sync_client_test test_mqtt4sync TEST_FILES_C = test1 test2 sync_client_test test_mqtt4sync
......
...@@ -77,7 +77,7 @@ void onSend(void* context, MQTTAsync_successData* response) ...@@ -77,7 +77,7 @@ void onSend(void* context, MQTTAsync_successData* response)
if ((rc = MQTTAsync_disconnect(client, &opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_disconnect(client, &opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start sendMessage, return code %d\n", rc); printf("Failed to start sendMessage, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
} }
...@@ -110,7 +110,7 @@ void onConnect(void* context, MQTTAsync_successData* response) ...@@ -110,7 +110,7 @@ void onConnect(void* context, MQTTAsync_successData* response)
if ((rc = MQTTAsync_sendMessage(client, TOPIC, &pubmsg, &opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_sendMessage(client, TOPIC, &pubmsg, &opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start sendMessage, return code %d\n", rc); printf("Failed to start sendMessage, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
} }
...@@ -135,7 +135,7 @@ int main(int argc, char* argv[]) ...@@ -135,7 +135,7 @@ int main(int argc, char* argv[])
if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start connect, return code %d\n", rc); printf("Failed to start connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
printf("Waiting for publication of %s\n" printf("Waiting for publication of %s\n"
......
...@@ -126,7 +126,7 @@ void onConnect(void* context, MQTTAsync_successData* response) ...@@ -126,7 +126,7 @@ void onConnect(void* context, MQTTAsync_successData* response)
if ((rc = MQTTAsync_subscribe(client, TOPIC, QOS, &opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_subscribe(client, TOPIC, QOS, &opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start subscribe, return code %d\n", rc); printf("Failed to start subscribe, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
} }
...@@ -153,7 +153,7 @@ int main(int argc, char* argv[]) ...@@ -153,7 +153,7 @@ int main(int argc, char* argv[])
if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start connect, return code %d\n", rc); printf("Failed to start connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
while (!subscribed) while (!subscribed)
...@@ -175,7 +175,7 @@ int main(int argc, char* argv[]) ...@@ -175,7 +175,7 @@ int main(int argc, char* argv[])
if ((rc = MQTTAsync_disconnect(client, &disc_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_disconnect(client, &disc_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start disconnect, return code %d\n", rc); printf("Failed to start disconnect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
while (!disc_finished) while (!disc_finished)
#if defined(WIN32) #if defined(WIN32)
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
volatile int toStop = 0; volatile int toStop = 0;
void usage() void usage(void)
{ {
printf("MQTT stdin publisher\n"); printf("MQTT stdin publisher\n");
printf("Usage: stdinpub topicname <options>, where options are:\n"); printf("Usage: stdinpub topicname <options>, where options are:\n");
...@@ -68,7 +68,7 @@ void usage() ...@@ -68,7 +68,7 @@ void usage()
printf(" --maxdatalen 100\n"); printf(" --maxdatalen 100\n");
printf(" --username none\n"); printf(" --username none\n");
printf(" --password none\n"); printf(" --password none\n");
exit(-1); exit(EXIT_FAILURE);
} }
...@@ -78,7 +78,7 @@ void myconnect(MQTTClient* client, MQTTClient_connectOptions* opts) ...@@ -78,7 +78,7 @@ void myconnect(MQTTClient* client, MQTTClient_connectOptions* opts)
if (MQTTClient_connect(*client, opts) != 0) if (MQTTClient_connect(*client, opts) != 0)
{ {
printf("Failed to connect\n"); printf("Failed to connect\n");
exit(-1); exit(EXIT_FAILURE);
} }
printf("Connected\n"); printf("Connected\n");
} }
...@@ -194,7 +194,7 @@ int main(int argc, char** argv) ...@@ -194,7 +194,7 @@ int main(int argc, char** argv)
MQTTClient_destroy(&client); MQTTClient_destroy(&client);
return 0; return EXIT_SUCCESS;
} }
void getopts(int argc, char** argv) void getopts(int argc, char** argv)
......
...@@ -78,7 +78,7 @@ int main(int argc, char* argv[]) ...@@ -78,7 +78,7 @@ int main(int argc, char* argv[])
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{ {
printf("Failed to connect, return code %d\n", rc); printf("Failed to connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
pubmsg.payload = PAYLOAD; pubmsg.payload = PAYLOAD;
pubmsg.payloadlen = strlen(PAYLOAD); pubmsg.payloadlen = strlen(PAYLOAD);
......
...@@ -42,7 +42,7 @@ int main(int argc, char* argv[]) ...@@ -42,7 +42,7 @@ int main(int argc, char* argv[])
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{ {
printf("Failed to connect, return code %d\n", rc); printf("Failed to connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
pubmsg.payload = PAYLOAD; pubmsg.payload = PAYLOAD;
pubmsg.payloadlen = strlen(PAYLOAD); pubmsg.payloadlen = strlen(PAYLOAD);
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
* *
* Contributors: * Contributors:
* Ian Craggs - initial contribution * Ian Craggs - initial contribution
* Guilherme Maciel Ferreira - add keep alive option
*******************************************************************************/ *******************************************************************************/
/* /*
...@@ -27,8 +28,9 @@ ...@@ -27,8 +28,9 @@
--port 1883 --port 1883
--qos 0 --qos 0
--delimiters \n --delimiters \n
--clientid stdin_publisher --clientid stdin-publisher
--maxdatalen 100 --maxdatalen 100
--keepalive 10
--userid none --userid none
--password none --password none
...@@ -55,20 +57,40 @@ ...@@ -55,20 +57,40 @@
volatile int toStop = 0; volatile int toStop = 0;
void usage() struct
{
char* clientid;
char* delimiter;
int maxdatalen;
int qos;
int retained;
char* username;
char* password;
char* host;
char* port;
int verbose;
int keepalive;
} opts =
{
"stdin-publisher", "\n", 100, 0, 0, NULL, NULL, "localhost", "1883", 0, 10
};
void usage(void)
{ {
printf("MQTT stdin publisher\n"); printf("MQTT stdin publisher\n");
printf("Usage: stdinpub topicname <options>, where options are:\n"); printf("Usage: stdinpub topicname <options>, where options are:\n");
printf(" --host <hostname> (default is localhost)\n"); printf(" --host <hostname> (default is %s)\n", opts.host);
printf(" --port <port> (default is 1883)\n"); printf(" --port <port> (default is %s)\n", opts.port);
printf(" --qos <qos> (default is 0)\n"); printf(" --qos <qos> (default is %d)\n", opts.qos);
printf(" --retained (default is off)\n"); printf(" --retained (default is %s)\n", opts.retained ? "on" : "off");
printf(" --delimiter <delim> (default is \\n)"); printf(" --delimiter <delim> (default is \\n)\n");
printf(" --clientid <clientid> (default is hostname+timestamp)"); printf(" --clientid <clientid> (default is %s)\n", opts.clientid);
printf(" --maxdatalen 100\n"); printf(" --maxdatalen <bytes> (default is %d)\n", opts.maxdatalen);
printf(" --username none\n"); printf(" --username none\n");
printf(" --password none\n"); printf(" --password none\n");
exit(-1); printf(" --keepalive <seconds> (default is %d seconds)\n", opts.keepalive);
exit(EXIT_FAILURE);
} }
...@@ -78,7 +100,7 @@ void myconnect(MQTTClient* client, MQTTClient_connectOptions* opts) ...@@ -78,7 +100,7 @@ void myconnect(MQTTClient* client, MQTTClient_connectOptions* opts)
if (MQTTClient_connect(*client, opts) != 0) if (MQTTClient_connect(*client, opts) != 0)
{ {
printf("Failed to connect\n"); printf("Failed to connect\n");
exit(-1); exit(EXIT_FAILURE);
} }
} }
...@@ -89,24 +111,6 @@ void cfinish(int sig) ...@@ -89,24 +111,6 @@ void cfinish(int sig)
toStop = 1; toStop = 1;
} }
struct
{
char* clientid;
char* delimiter;
int maxdatalen;
int qos;
int retained;
char* username;
char* password;
char* host;
char* port;
int verbose;
} opts =
{
"publisher", "\n", 100, 0, 0, NULL, NULL, "localhost", "1883", 0
};
void getopts(int argc, char** argv); void getopts(int argc, char** argv);
int messageArrived(void* context, char* topicName, int topicLen, MQTTClient_message* m) int messageArrived(void* context, char* topicName, int topicLen, MQTTClient_message* m)
...@@ -130,7 +134,7 @@ int main(int argc, char** argv) ...@@ -130,7 +134,7 @@ int main(int argc, char** argv)
getopts(argc, argv); getopts(argc, argv);
sprintf(url, "%s:%s", opts.host, opts.port); sprintf(url, "%s:%s", opts.host, opts.port);
if (opts.verbose) if (opts.verbose)
printf("URL is %s\n", url); printf("URL is %s\n", url);
topic = argv[1]; topic = argv[1];
...@@ -143,7 +147,7 @@ int main(int argc, char** argv) ...@@ -143,7 +147,7 @@ int main(int argc, char** argv)
rc = MQTTClient_setCallbacks(client, NULL, NULL, messageArrived, NULL); rc = MQTTClient_setCallbacks(client, NULL, NULL, messageArrived, NULL);
conn_opts.keepAliveInterval = 10; conn_opts.keepAliveInterval = opts.keepalive;
conn_opts.reliable = 0; conn_opts.reliable = 0;
conn_opts.cleansession = 1; conn_opts.cleansession = 1;
conn_opts.username = opts.username; conn_opts.username = opts.username;
...@@ -188,9 +192,9 @@ int main(int argc, char** argv) ...@@ -188,9 +192,9 @@ int main(int argc, char** argv)
MQTTClient_disconnect(client, 0); MQTTClient_disconnect(client, 0);
MQTTClient_destroy(&client); MQTTClient_destroy(&client);
return 0; return EXIT_SUCCESS;
} }
void getopts(int argc, char** argv) void getopts(int argc, char** argv)
...@@ -268,6 +272,13 @@ void getopts(int argc, char** argv) ...@@ -268,6 +272,13 @@ void getopts(int argc, char** argv)
else else
usage(); usage();
} }
else if (strcmp(argv[count], "--keepalive") == 0)
{
if (++count < argc)
opts.keepalive = atoi(argv[count]);
else
usage();
}
count++; count++;
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
* *
* Contributors: * Contributors:
* Ian Craggs - initial contribution * Ian Craggs - initial contribution
* Guilherme Maciel Ferreira - add keep alive option
*******************************************************************************/ *******************************************************************************/
/* /*
...@@ -27,8 +28,9 @@ ...@@ -27,8 +28,9 @@
--port 1883 --port 1883
--qos 0 --qos 0
--delimiters \n --delimiters \n
--clientid stdin_publisher --clientid stdin-publisher-async
--maxdatalen 100 --maxdatalen 100
--keepalive 10
--userid none --userid none
--password none --password none
...@@ -54,31 +56,6 @@ ...@@ -54,31 +56,6 @@
volatile int toStop = 0; volatile int toStop = 0;
void usage()
{
printf("MQTT stdin publisher\n");
printf("Usage: stdinpub topicname <options>, where options are:\n");
printf(" --host <hostname> (default is localhost)\n");
printf(" --port <port> (default is 1883)\n");
printf(" --qos <qos> (default is 0)\n");
printf(" --retained (default is off)\n");
printf(" --delimiter <delim> (default is \\n)");
printf(" --clientid <clientid> (default is hostname+timestamp)");
printf(" --maxdatalen 100\n");
printf(" --username none\n");
printf(" --password none\n");
exit(-1);
}
void cfinish(int sig)
{
signal(SIGINT, NULL);
toStop = 1;
}
struct struct
{ {
char* clientid; char* clientid;
...@@ -90,12 +67,39 @@ struct ...@@ -90,12 +67,39 @@ struct
char* password; char* password;
char* host; char* host;
char* port; char* port;
int verbose; int verbose;
int keepalive;
} opts = } opts =
{ {
"publisher", "\n", 100, 0, 0, NULL, NULL, "localhost", "1883", 0 "stdin-publisher-async", "\n", 100, 0, 0, NULL, NULL, "localhost", "1883", 0, 10
}; };
void usage(void)
{
printf("MQTT stdin publisher\n");
printf("Usage: stdinpub topicname <options>, where options are:\n");
printf(" --host <hostname> (default is %s)\n", opts.host);
printf(" --port <port> (default is %s)\n", opts.port);
printf(" --qos <qos> (default is %d)\n", opts.qos);
printf(" --retained (default is %s)\n", opts.retained ? "on" : "off");
printf(" --delimiter <delim> (default is \\n)\n");
printf(" --clientid <clientid> (default is %s)\n", opts.clientid);
printf(" --maxdatalen <bytes> (default is %d)\n", opts.maxdatalen);
printf(" --username none\n");
printf(" --password none\n");
printf(" --keepalive <seconds> (default is 10 seconds)\n");
exit(EXIT_FAILURE);
}
void cfinish(int sig)
{
signal(SIGINT, NULL);
toStop = 1;
}
void getopts(int argc, char** argv); void getopts(int argc, char** argv);
int messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* m) int messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* m)
...@@ -139,7 +143,7 @@ void myconnect(MQTTAsync* client) ...@@ -139,7 +143,7 @@ void myconnect(MQTTAsync* client)
int rc = 0; int rc = 0;
printf("Connecting\n"); printf("Connecting\n");
conn_opts.keepAliveInterval = 10; conn_opts.keepAliveInterval = opts.keepalive;
conn_opts.cleansession = 1; conn_opts.cleansession = 1;
conn_opts.username = opts.username; conn_opts.username = opts.username;
conn_opts.password = opts.password; conn_opts.password = opts.password;
...@@ -152,7 +156,7 @@ void myconnect(MQTTAsync* client) ...@@ -152,7 +156,7 @@ void myconnect(MQTTAsync* client)
if ((rc = MQTTAsync_connect(*client, &conn_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_connect(*client, &conn_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start connect, return code %d\n", rc); printf("Failed to start connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
while (connected == 0) while (connected == 0)
#if defined(WIN32) #if defined(WIN32)
...@@ -201,7 +205,7 @@ void connectionLost(void* context, char* cause) ...@@ -201,7 +205,7 @@ void connectionLost(void* context, char* cause)
if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start connect, return code %d\n", rc); printf("Failed to start connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
} }
...@@ -394,7 +398,7 @@ int main(int argc, char** argv) ...@@ -394,7 +398,7 @@ int main(int argc, char** argv)
if ((rc = MQTTAsync_disconnect(client, &disc_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_disconnect(client, &disc_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start disconnect, return code %d\n", rc); printf("Failed to start disconnect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
while (!disconnected) while (!disconnected)
...@@ -404,9 +408,9 @@ int main(int argc, char** argv) ...@@ -404,9 +408,9 @@ int main(int argc, char** argv)
usleep(10000L); usleep(10000L);
#endif #endif
MQTTAsync_destroy(&client); MQTTAsync_destroy(&client);
return 0; return EXIT_SUCCESS;
} }
void getopts(int argc, char** argv) void getopts(int argc, char** argv)
...@@ -484,6 +488,13 @@ void getopts(int argc, char** argv) ...@@ -484,6 +488,13 @@ void getopts(int argc, char** argv)
else else
usage(); usage();
} }
else if (strcmp(argv[count], "--keepalive") == 0)
{
if (++count < argc)
opts.keepalive = atoi(argv[count]);
else
usage();
}
count++; count++;
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Ian Craggs - initial contribution * Ian Craggs - initial contribution
* Ian Craggs - change delimiter option from char to string * Ian Craggs - change delimiter option from char to string
* Guilherme Maciel Ferreira - add keep alive option
*******************************************************************************/ *******************************************************************************/
/* /*
...@@ -29,7 +30,9 @@ ...@@ -29,7 +30,9 @@
--port 1883 --port 1883
--qos 2 --qos 2
--delimiter \n --delimiter \n
--clientid stdout_subscriber --clientid stdout-subscriber
--showtopics off
--keepalive 10
--userid none --userid none
--password none --password none
...@@ -55,19 +58,38 @@ ...@@ -55,19 +58,38 @@
volatile int toStop = 0; volatile int toStop = 0;
void usage() struct opts_struct
{
char* clientid;
int nodelimiter;
char* delimiter;
int qos;
char* username;
char* password;
char* host;
char* port;
int showtopics;
int keepalive;
} opts =
{
"stdout-subscriber", 0, "\n", 2, NULL, NULL, "localhost", "1883", 0, 10
};
void usage(void)
{ {
printf("MQTT stdout subscriber\n"); printf("MQTT stdout subscriber\n");
printf("Usage: stdoutsub topicname <options>, where options are:\n"); printf("Usage: stdoutsub topicname <options>, where options are:\n");
printf(" --host <hostname> (default is localhost)\n"); printf(" --host <hostname> (default is %s)\n", opts.host);
printf(" --port <port> (default is 1883)\n"); printf(" --port <port> (default is %s)\n", opts.port);
printf(" --qos <qos> (default is 2)\n"); printf(" --qos <qos> (default is %d)\n", opts.qos);
printf(" --delimiter <delim> (default is \\n)\n"); printf(" --delimiter <delim> (default is \\n)\n");
printf(" --clientid <clientid> (default is hostname+timestamp)\n"); printf(" --clientid <clientid> (default is %s)\n", opts.clientid);
printf(" --username none\n"); printf(" --username none\n");
printf(" --password none\n"); printf(" --password none\n");
printf(" --showtopics <on or off> (default is on if the topic has a wildcard, else off)\n"); printf(" --showtopics <on or off> (default is on if the topic has a wildcard, else off)\n");
exit(-1); printf(" --keepalive <seconds> (default is %d seconds)\n", opts.keepalive);
exit(EXIT_FAILURE);
} }
...@@ -77,7 +99,7 @@ void myconnect(MQTTClient* client, MQTTClient_connectOptions* opts) ...@@ -77,7 +99,7 @@ void myconnect(MQTTClient* client, MQTTClient_connectOptions* opts)
if ((rc = MQTTClient_connect(*client, opts)) != 0) if ((rc = MQTTClient_connect(*client, opts)) != 0)
{ {
printf("Failed to connect, return code %d\n", rc); printf("Failed to connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
} }
...@@ -88,23 +110,6 @@ void cfinish(int sig) ...@@ -88,23 +110,6 @@ void cfinish(int sig)
toStop = 1; toStop = 1;
} }
struct opts_struct
{
char* clientid;
int nodelimiter;
char* delimiter;
int qos;
char* username;
char* password;
char* host;
char* port;
int showtopics;
} opts =
{
"stdout-subscriber", 0, "\n", 2, NULL, NULL, "localhost", "1883", 0
};
void getopts(int argc, char** argv); void getopts(int argc, char** argv);
int main(int argc, char** argv) int main(int argc, char** argv)
...@@ -120,9 +125,9 @@ int main(int argc, char** argv) ...@@ -120,9 +125,9 @@ int main(int argc, char** argv)
topic = argv[1]; topic = argv[1];
if (strchr(topic, '#') || strchr(topic, '+')) if (strchr(topic, '#') || strchr(topic, '+'))
opts.showtopics = 1; opts.showtopics = 1;
if (opts.showtopics) if (opts.showtopics)
printf("topic is %s\n", topic); printf("topic is %s\n", topic);
getopts(argc, argv); getopts(argc, argv);
...@@ -133,7 +138,7 @@ int main(int argc, char** argv) ...@@ -133,7 +138,7 @@ int main(int argc, char** argv)
signal(SIGINT, cfinish); signal(SIGINT, cfinish);
signal(SIGTERM, cfinish); signal(SIGTERM, cfinish);
conn_opts.keepAliveInterval = 10; conn_opts.keepAliveInterval = opts.keepalive;
conn_opts.reliable = 0; conn_opts.reliable = 0;
conn_opts.cleansession = 1; conn_opts.cleansession = 1;
conn_opts.username = opts.username; conn_opts.username = opts.username;
...@@ -154,7 +159,7 @@ int main(int argc, char** argv) ...@@ -154,7 +159,7 @@ int main(int argc, char** argv)
{ {
if (opts.showtopics) if (opts.showtopics)
printf("%s\t", topicName); printf("%s\t", topicName);
if (opts.nodelimiter) if (opts.nodelimiter)
printf("%.*s", message->payloadlen, (char*)message->payload); printf("%.*s", message->payloadlen, (char*)message->payload);
else else
printf("%.*s%s", message->payloadlen, (char*)message->payload, opts.delimiter); printf("%.*s%s", message->payloadlen, (char*)message->payload, opts.delimiter);
...@@ -170,9 +175,9 @@ int main(int argc, char** argv) ...@@ -170,9 +175,9 @@ int main(int argc, char** argv)
MQTTClient_disconnect(client, 0); MQTTClient_disconnect(client, 0);
MQTTClient_destroy(&client); MQTTClient_destroy(&client);
return 0; return EXIT_SUCCESS;
} }
void getopts(int argc, char** argv) void getopts(int argc, char** argv)
...@@ -253,6 +258,13 @@ void getopts(int argc, char** argv) ...@@ -253,6 +258,13 @@ void getopts(int argc, char** argv)
else else
usage(); usage();
} }
else if (strcmp(argv[count], "--keepalive") == 0)
{
if (++count < argc)
opts.keepalive = atoi(argv[count]);
else
usage();
}
count++; count++;
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
* Contributors: * Contributors:
* Ian Craggs - initial contribution * Ian Craggs - initial contribution
* Ian Craggs - fix for bug 413429 - connectionLost not called * Ian Craggs - fix for bug 413429 - connectionLost not called
* Guilherme Maciel Ferreira - add keep alive option
*******************************************************************************/ *******************************************************************************/
/* /*
...@@ -29,7 +30,9 @@ ...@@ -29,7 +30,9 @@
--port 1883 --port 1883
--qos 2 --qos 2
--delimiter \n --delimiter \n
--clientid stdout_subscriber --clientid stdout-subscriber-async
--showtopics off
--keepalive 10
--userid none --userid none
--password none --password none
...@@ -70,33 +73,35 @@ void cfinish(int sig) ...@@ -70,33 +73,35 @@ void cfinish(int sig)
struct struct
{ {
char* clientid; char* clientid;
int nodelimiter; int nodelimiter;
char delimiter; char delimiter;
int qos; int qos;
char* username; char* username;
char* password; char* password;
char* host; char* host;
char* port; char* port;
int showtopics; int showtopics;
int keepalive;
} opts = } opts =
{ {
"stdout-subscriber", 1, '\n', 2, NULL, NULL, "localhost", "1883", 0 "stdout-subscriber-async", 1, '\n', 2, NULL, NULL, "localhost", "1883", 0, 10
}; };
void usage() void usage(void)
{ {
printf("MQTT stdout subscriber\n"); printf("MQTT stdout subscriber\n");
printf("Usage: stdoutsub topicname <options>, where options are:\n"); printf("Usage: stdoutsub topicname <options>, where options are:\n");
printf(" --host <hostname> (default is localhost)\n"); printf(" --host <hostname> (default is %s)\n", opts.host);
printf(" --port <port> (default is 1883)\n"); printf(" --port <port> (default is %s)\n", opts.port);
printf(" --qos <qos> (default is 2)\n"); printf(" --qos <qos> (default is %d)\n", opts.qos);
printf(" --delimiter <delim> (default is no delimiter)\n"); printf(" --delimiter <delim> (default is no delimiter)\n");
printf(" --clientid <clientid> (default is hostname+timestamp)\n"); printf(" --clientid <clientid> (default is %s)\n", opts.clientid);
printf(" --username none\n"); printf(" --username none\n");
printf(" --password none\n"); printf(" --password none\n");
printf(" --showtopics <on or off> (default is on if the topic has a wildcard, else off)\n"); printf(" --showtopics <on or off> (default is on if the topic has a wildcard, else off)\n");
exit(-1); printf(" --keepalive <seconds> (default is 10 seconds)\n");
exit(EXIT_FAILURE);
} }
...@@ -184,6 +189,13 @@ void getopts(int argc, char** argv) ...@@ -184,6 +189,13 @@ void getopts(int argc, char** argv)
else else
usage(); usage();
} }
else if (strcmp(argv[count], "--keepalive") == 0)
{
if (++count < argc)
opts.keepalive = atoi(argv[count]);
else
usage();
}
count++; count++;
} }
...@@ -201,7 +213,7 @@ int messageArrived(void *context, char *topicName, int topicLen, MQTTAsync_messa ...@@ -201,7 +213,7 @@ int messageArrived(void *context, char *topicName, int topicLen, MQTTAsync_messa
fflush(stdout); fflush(stdout);
MQTTAsync_freeMessage(&message); MQTTAsync_freeMessage(&message);
MQTTAsync_free(topicName); MQTTAsync_free(topicName);
return 1; return 1;
} }
...@@ -247,7 +259,7 @@ void onConnect(void* context, MQTTAsync_successData* response) ...@@ -247,7 +259,7 @@ void onConnect(void* context, MQTTAsync_successData* response)
if ((rc = MQTTAsync_subscribe(client, topic, opts.qos, &ropts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_subscribe(client, topic, opts.qos, &ropts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start subscribe, return code %d\n", rc); printf("Failed to start subscribe, return code %d\n", rc);
finished = 1; finished = 1;
} }
} }
...@@ -296,7 +308,7 @@ int main(int argc, char** argv) ...@@ -296,7 +308,7 @@ int main(int argc, char** argv)
signal(SIGINT, cfinish); signal(SIGINT, cfinish);
signal(SIGTERM, cfinish); signal(SIGTERM, cfinish);
conn_opts.keepAliveInterval = 10; conn_opts.keepAliveInterval = opts.keepalive;
conn_opts.cleansession = 1; conn_opts.cleansession = 1;
conn_opts.username = opts.username; conn_opts.username = opts.username;
conn_opts.password = opts.password; conn_opts.password = opts.password;
...@@ -306,7 +318,7 @@ int main(int argc, char** argv) ...@@ -306,7 +318,7 @@ int main(int argc, char** argv)
if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_connect(client, &conn_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start connect, return code %d\n", rc); printf("Failed to start connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
while (!subscribed) while (!subscribed)
...@@ -330,10 +342,10 @@ int main(int argc, char** argv) ...@@ -330,10 +342,10 @@ int main(int argc, char** argv)
if ((rc = MQTTAsync_disconnect(client, &disc_opts)) != MQTTASYNC_SUCCESS) if ((rc = MQTTAsync_disconnect(client, &disc_opts)) != MQTTASYNC_SUCCESS)
{ {
printf("Failed to start disconnect, return code %d\n", rc); printf("Failed to start disconnect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
while (!disconnected) while (!disconnected)
#if defined(WIN32) #if defined(WIN32)
Sleep(100); Sleep(100);
#else #else
...@@ -343,7 +355,7 @@ int main(int argc, char** argv) ...@@ -343,7 +355,7 @@ int main(int argc, char** argv)
exit: exit:
MQTTAsync_destroy(&client); MQTTAsync_destroy(&client);
return 0; return EXIT_SUCCESS;
} }
...@@ -77,7 +77,7 @@ int main(int argc, char* argv[]) ...@@ -77,7 +77,7 @@ int main(int argc, char* argv[])
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{ {
printf("Failed to connect, return code %d\n", rc); printf("Failed to connect, return code %d\n", rc);
exit(-1); exit(EXIT_FAILURE);
} }
printf("Subscribing to topic %s\nfor client %s using QoS%d\n\n" printf("Subscribing to topic %s\nfor client %s using QoS%d\n\n"
"Press Q<Enter> to quit\n\n", TOPIC, CLIENTID, QOS); "Press Q<Enter> to quit\n\n", TOPIC, CLIENTID, QOS);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment