Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
paho.mqtt.c
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
eclipse
paho.mqtt.c
Commits
d5c96a27
Commit
d5c96a27
authored
Jul 25, 2018
by
Ian Craggs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More sample updates #504
parent
6f0edc21
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
285 additions
and
176 deletions
+285
-176
Makefile
Makefile
+2
-2
Thread.c
src/Thread.c
+3
-1
paho_c_pub.c
src/samples/paho_c_pub.c
+112
-74
paho_c_sub.c
src/samples/paho_c_sub.c
+32
-36
paho_cs_pub.c
src/samples/paho_cs_pub.c
+18
-22
paho_cs_sub.c
src/samples/paho_cs_sub.c
+18
-22
pubsub_opts.c
src/samples/pubsub_opts.c
+83
-15
pubsub_opts.h
src/samples/pubsub_opts.h
+17
-4
No files found.
Makefile
View file @
d5c96a27
...
...
@@ -210,13 +210,13 @@ ${ASYNC_SSL_TESTS}: ${blddir}/test/%: ${srcdir}/../test/%.c $(MQTTLIB_CS_TARGET)
${SYNC_SAMPLES}
:
${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_C_TARGET)
${
CC
}
-o
$@
$<
-l
${
MQTTLIB_CS
}
${
FLAGS_EXES
}
${SYNC_UTILS}
:
${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_CS_TARGET)
${SYNC_UTILS}
:
${blddir}/samples/%: ${srcdir}/samples/%.c $
{srcdir}/samples/pubsub_opts.c $
(MQTTLIB_CS_TARGET)
${
CC
}
-o
$@
$<
-l
${
MQTTLIB_CS
}
${
FLAGS_EXES
}
${
srcdir
}
/samples/pubsub_opts.c
${ASYNC_SAMPLES}
:
${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET)
${
CC
}
-o
$@
$<
-l
${
MQTTLIB_AS
}
${
FLAGS_EXES
}
${ASYNC_UTILS}
:
${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_AS_TARGET)
${ASYNC_UTILS}
:
${blddir}/samples/%: ${srcdir}/samples/%.c $
{srcdir}/samples/pubsub_opts.c $
(MQTTLIB_AS_TARGET)
${
CC
}
-o
$@
$<
-l
${
MQTTLIB_AS
}
${
FLAGS_EXES
}
${
srcdir
}
/samples/pubsub_opts.c
$(blddir_work)/VersionInfo.h
:
$(srcdir)/VersionInfo.h.in
...
...
src/Thread.c
View file @
d5c96a27
...
...
@@ -381,10 +381,12 @@ int Thread_signal_cond(cond_type condvar)
{
int
rc
=
0
;
FUNC_ENTRY
;
pthread_mutex_lock
(
&
condvar
->
mutex
);
rc
=
pthread_cond_signal
(
&
condvar
->
cond
);
pthread_mutex_unlock
(
&
condvar
->
mutex
);
FUNC_EXIT_RC
(
rc
);
return
rc
;
}
...
...
@@ -394,10 +396,10 @@ int Thread_signal_cond(cond_type condvar)
*/
int
Thread_wait_cond
(
cond_type
condvar
,
int
timeout
)
{
FUNC_ENTRY
;
int
rc
=
0
;
struct
timespec
cond_timeout
;
FUNC_ENTRY
;
#if defined(OSX)
clock_gettime
(
CLOCK_REALTIME
,
&
cond_timeout
);
#else
...
...
src/samples/paho_c_pub.c
View file @
d5c96a27
...
...
@@ -40,33 +40,17 @@ volatile int toStop = 0;
struct
pubsub_opts
opts
=
{
MQTTVERSION_DEFAULT
,
0
,
NULL
,
"paho-c-pub"
,
"
\n
"
,
100
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
0
,
10
,
1
,
0
,
0
,
"
\n
"
,
100
,
/* debug/app options */
NULL
,
NULL
,
1
,
0
,
0
,
/* message options */
MQTTVERSION_DEFAULT
,
NULL
,
"paho-c-pub"
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
10
,
/* MQTT options */
NULL
,
NULL
,
0
,
0
,
/* will options */
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
/* TLS options */
0
,
{
NULL
,
NULL
},
/*
publish propertie
s */
0
,
{
NULL
,
NULL
},
/*
MQTT V5 option
s */
};
void
usage
(
void
)
{
printf
(
"Eclipse Paho MQTT C publisher
\n
"
"Usage: paho_c_pub <topicname> <options>, where options are:
\n
"
" -t (--topic) MQTT topic to publish to
\n
"
" -h (--host) host to connect to (default is %s)
\n
"
" -p (--port) network port to connect to (default is %s)
\n
"
" -c (--connection) connection string, overrides host/port e.g wss://hostname:port/ws
\n
"
" -q (--qos) MQTT QoS to publish on (0, 1 or 2) (default is %d)
\n
"
" -r (--retained) use MQTT retain option? (default is %s)
\n
"
" -i (--clientid) <clientid> (default is %s)
\n
"
" -u (--username) MQTT username (default is none)
\n
"
" -P (--password) MQTT password (default is none)
\n
"
" -k (--keepalive) MQTT keepalive timeout value (default is %d seconds)
\n
"
" --delimiter <delim> (default is
\\
n)
\n
"
" --maxdatalen <bytes> (default is %d)
\n
"
,
opts
.
host
,
opts
.
port
,
opts
.
qos
,
opts
.
retained
?
"on"
:
"off"
,
opts
.
clientid
,
opts
.
maxdatalen
,
opts
.
keepalive
);
exit
(
EXIT_FAILURE
);
}
MQTTAsync_responseOptions
pub_opts
=
MQTTAsync_responseOptions_initializer
;
MQTTProperty
property
;
MQTTProperties
props
=
MQTTProperties_initializer
;
void
mysleep
(
int
ms
)
...
...
@@ -107,6 +91,7 @@ void onDisconnect(void* context, MQTTAsync_successData* response)
static
int
connected
=
0
;
void
myconnect
(
MQTTAsync
client
);
int
mypublish
(
MQTTAsync
client
,
int
datalen
,
char
*
data
);
void
onConnectFailure5
(
void
*
context
,
MQTTAsync_failureData5
*
response
)
{
...
...
@@ -129,15 +114,33 @@ void onConnectFailure(void* context, MQTTAsync_failureData* response)
void
onConnect5
(
void
*
context
,
MQTTAsync_successData5
*
response
)
{
MQTTAsync
client
=
(
MQTTAsync
)
context
;
int
rc
=
0
;
if
(
opts
.
verbose
)
printf
(
"Connected
\n
"
);
if
(
opts
.
null_message
==
1
)
rc
=
mypublish
(
client
,
0
,
""
);
else
if
(
opts
.
message
)
rc
=
mypublish
(
client
,
strlen
(
opts
.
message
),
opts
.
message
);
connected
=
1
;
}
void
onConnect
(
void
*
context
,
MQTTAsync_successData
*
response
)
{
MQTTAsync
client
=
(
MQTTAsync
)
context
;
int
rc
=
0
;
if
(
opts
.
verbose
)
printf
(
"Connected
\n
"
);
if
(
opts
.
null_message
==
1
)
rc
=
mypublish
(
client
,
0
,
""
);
else
if
(
opts
.
message
)
rc
=
mypublish
(
client
,
strlen
(
opts
.
message
),
opts
.
message
);
connected
=
1
;
}
...
...
@@ -163,6 +166,10 @@ void onPublish5(void* context, MQTTAsync_successData5* response)
{
if
(
opts
.
verbose
)
printf
(
"Publish succeeded, reason code %d
\n
"
,
response
->
reasonCode
);
if
(
opts
.
null_message
||
opts
.
message
||
opts
.
filename
)
toStop
=
1
;
published
=
1
;
}
...
...
@@ -171,6 +178,10 @@ void onPublish(void* context, MQTTAsync_successData* response)
{
if
(
opts
.
verbose
)
printf
(
"Publish succeeded
\n
"
);
if
(
opts
.
null_message
||
opts
.
message
||
opts
.
filename
)
toStop
=
1
;
published
=
1
;
}
...
...
@@ -237,27 +248,53 @@ void myconnect(MQTTAsync client)
}
int
mypublish
(
MQTTAsync
client
,
int
datalen
,
char
*
data
)
{
int
rc
;
if
(
opts
.
verbose
)
printf
(
"Publishing data of length %d
\n
"
,
datalen
);
rc
=
MQTTAsync_send
(
client
,
opts
.
topic
,
datalen
,
data
,
opts
.
qos
,
opts
.
retained
,
&
pub_opts
);
if
(
opts
.
verbose
&&
rc
!=
MQTTASYNC_SUCCESS
)
fprintf
(
stderr
,
"Error from MQTTAsync_send %d
\n
"
,
rc
);
return
rc
;
}
void
trace_callback
(
enum
MQTTASYNC_TRACE_LEVELS
level
,
char
*
message
)
{
printf
(
"Trace : %d, %s
\n
"
,
level
,
message
);
fprintf
(
stderr
,
"Trace : %d, %s
\n
"
,
level
,
message
);
}
int
main
(
int
argc
,
char
**
argv
)
{
MQTTAsync_disconnectOptions
disc_opts
=
MQTTAsync_disconnectOptions_initializer
;
MQTTAsync_responseOptions
pub_opts
=
MQTTAsync_responseOptions_initializer
;
MQTTAsync_createOptions
create_opts
=
MQTTAsync_createOptions_initializer
;
MQTTAsync
client
;
char
*
buffer
=
NULL
;
char
*
url
=
NULL
;
int
rc
=
0
;
MQTTAsync_nameValue
*
infos
=
MQTTAsync_getVersionInfo
();
const
char
*
version
=
NULL
;
while
(
infos
->
name
)
{
if
(
strcmp
(
infos
->
name
,
"Version"
)
==
0
)
{
version
=
infos
->
value
;
break
;
}
++
infos
;
}
if
(
argc
<
2
)
usage
();
usage
(
&
opts
,
version
);
if
(
getopts
(
argc
,
argv
,
&
opts
)
!=
0
)
usage
();
usage
(
&
opts
,
version
);
if
(
opts
.
connection
)
url
=
opts
.
connection
;
...
...
@@ -281,36 +318,10 @@ int main(int argc, char** argv)
signal
(
SIGINT
,
cfinish
);
signal
(
SIGTERM
,
cfinish
);
rc
=
MQTTAsync_setCallbacks
(
client
,
client
,
NULL
,
messageArrived
,
NULL
);
myconnect
(
client
);
buffer
=
malloc
(
opts
.
maxdatalen
);
while
(
!
toStop
)
{
int
data_len
=
0
;
int
delim_len
=
0
;
delim_len
=
(
int
)
strlen
(
opts
.
delimiter
);
do
{
buffer
[
data_len
++
]
=
getchar
();
if
(
data_len
>
delim_len
)
{
if
(
strncmp
(
opts
.
delimiter
,
&
buffer
[
data_len
-
delim_len
],
delim_len
)
==
0
)
break
;
}
}
while
(
data_len
<
opts
.
maxdatalen
);
if
(
opts
.
verbose
)
printf
(
"Publishing data of length %d
\n
"
,
data_len
);
if
(
opts
.
MQTTVersion
>=
MQTTVERSION_5
)
{
MQTTProperty
property
;
MQTTProperties
props
=
MQTTProperties_initializer
;
pub_opts
.
onSuccess5
=
onPublish5
;
pub_opts
.
onFailure5
=
onPublishFailure5
;
...
...
@@ -336,13 +347,40 @@ int main(int argc, char** argv)
pub_opts
.
onSuccess
=
onPublish
;
pub_opts
.
onFailure
=
onPublishFailure
;
}
rc
=
MQTTAsync_send
(
client
,
opts
.
topic
,
data_len
,
buffer
,
opts
.
qos
,
opts
.
retained
,
&
pub_opts
);
if
(
opts
.
verbose
&&
rc
!=
MQTTASYNC_SUCCESS
)
printf
(
"Error from MQTTAsync_send %d
\n
"
,
rc
);
myconnect
(
client
);
while
(
!
toStop
)
{
int
data_len
=
0
;
int
delim_len
=
0
;
static
int
count
=
0
;
if
(
opts
.
stdin_lines
)
{
buffer
=
malloc
(
opts
.
maxdatalen
);
delim_len
=
(
int
)
strlen
(
opts
.
delimiter
);
do
{
buffer
[
data_len
++
]
=
getchar
();
if
(
data_len
>
delim_len
)
{
if
(
strncmp
(
opts
.
delimiter
,
&
buffer
[
data_len
-
delim_len
],
delim_len
)
==
0
)
break
;
}
}
while
(
data_len
<
opts
.
maxdatalen
);
rc
=
mypublish
(
client
,
data_len
,
buffer
);
}
else
mysleep
(
100
);
}
if
(
opts
.
verbose
)
printf
(
"Stopping
\n
"
);
if
(
opts
.
message
==
0
&&
opts
.
null_message
==
0
&&
opts
.
filename
==
0
)
free
(
buffer
);
if
(
opts
.
MQTTVersion
>=
MQTTVERSION_5
)
...
...
@@ -351,7 +389,7 @@ int main(int argc, char** argv)
disc_opts
.
onSuccess
=
onDisconnect
;
if
((
rc
=
MQTTAsync_disconnect
(
client
,
&
disc_opts
))
!=
MQTTASYNC_SUCCESS
)
{
printf
(
"Failed to start disconnect, return code %d
\n
"
,
rc
);
fprintf
(
stderr
,
"Failed to start disconnect, return code %d
\n
"
,
rc
);
exit
(
EXIT_FAILURE
);
}
...
...
src/samples/paho_c_sub.c
View file @
d5c96a27
...
...
@@ -39,7 +39,6 @@
#endif
volatile
int
finished
=
0
;
char
*
topic
=
NULL
;
int
subscribed
=
0
;
int
disconnected
=
0
;
...
...
@@ -62,29 +61,14 @@ void cfinish(int sig)
struct
pubsub_opts
opts
=
{
MQTTVERSION_DEFAULT
,
0
,
NULL
,
"paho-c-sub"
,
"
\n
"
,
100
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
0
,
10
,
0
,
0
,
0
,
"
\n
"
,
100
,
/* debug/app options */
NULL
,
NULL
,
1
,
0
,
0
,
/* message options */
MQTTVERSION_DEFAULT
,
NULL
,
"paho-c-sub"
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
10
,
/* MQTT options */
NULL
,
NULL
,
0
,
0
,
/* will options */
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
/* TLS options */
0
,
{
NULL
,
NULL
},
/*
publish propertie
s */
0
,
{
NULL
,
NULL
},
/*
MQTT V5 option
s */
};
void
usage
(
void
)
{
printf
(
"MQTT stdout subscriber
\n
"
);
printf
(
"Usage: stdoutsub 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
(
" --delimiter <delim> (default is no delimiter)
\n
"
);
printf
(
" --clientid <clientid> (default is %s)
\n
"
,
opts
.
clientid
);
printf
(
" --username none
\n
"
);
printf
(
" --password none
\n
"
);
printf
(
" --verbose <on or off> (default is on if the topic has a wildcard, else off)
\n
"
);
printf
(
" --keepalive <seconds> (default is 10 seconds)
\n
"
);
exit
(
EXIT_FAILURE
);
}
void
logProperties
(
MQTTProperties
*
props
)
{
...
...
@@ -161,28 +145,28 @@ void onSubscribe(void* context, MQTTAsync_successData* response)
void
onSubscribeFailure5
(
void
*
context
,
MQTTAsync_failureData5
*
response
)
{
printf
(
"Subscribe failed, rc %d reason code %d
\n
"
,
response
->
code
,
response
->
reasonCode
);
fprintf
(
stderr
,
"Subscribe failed, rc %d reason code %d
\n
"
,
response
->
code
,
response
->
reasonCode
);
finished
=
1
;
}
void
onSubscribeFailure
(
void
*
context
,
MQTTAsync_failureData
*
response
)
{
printf
(
"Subscribe failed, rc %d
\n
"
,
response
->
code
);
fprintf
(
stderr
,
"Subscribe failed, rc %d
\n
"
,
response
->
code
);
finished
=
1
;
}
void
onConnectFailure5
(
void
*
context
,
MQTTAsync_failureData5
*
response
)
{
printf
(
"Connect failed, rc %d reason code %d
\n
"
,
response
->
code
,
response
->
reasonCode
);
fprintf
(
stderr
,
"Connect failed, rc %d reason code %d
\n
"
,
response
->
code
,
response
->
reasonCode
);
finished
=
1
;
}
void
onConnectFailure
(
void
*
context
,
MQTTAsync_failureData
*
response
)
{
printf
(
"Connect failed, rc %d
\n
"
,
response
?
response
->
code
:
-
99
);
fprintf
(
stderr
,
"Connect failed, rc %d
\n
"
,
response
?
response
->
code
:
-
99
);
finished
=
1
;
}
...
...
@@ -194,14 +178,14 @@ void onConnect5(void* context, MQTTAsync_successData5* response)
int
rc
;
if
(
opts
.
verbose
)
printf
(
"Subscribing to topic %s with client %s at QoS %d
\n
"
,
topic
,
opts
.
clientid
,
opts
.
qos
);
printf
(
"Subscribing to topic %s with client %s at QoS %d
\n
"
,
opts
.
topic
,
opts
.
clientid
,
opts
.
qos
);
copts
.
onSuccess5
=
onSubscribe5
;
copts
.
onFailure5
=
onSubscribeFailure5
;
copts
.
context
=
client
;
if
((
rc
=
MQTTAsync_subscribe
(
client
,
topic
,
opts
.
qos
,
&
copts
))
!=
MQTTASYNC_SUCCESS
)
if
((
rc
=
MQTTAsync_subscribe
(
client
,
opts
.
topic
,
opts
.
qos
,
&
copts
))
!=
MQTTASYNC_SUCCESS
)
{
printf
(
"Failed to start subscribe, return code %d
\n
"
,
rc
);
fprintf
(
stderr
,
"Failed to start subscribe, return code %d
\n
"
,
rc
);
finished
=
1
;
}
}
...
...
@@ -214,14 +198,14 @@ void onConnect(void* context, MQTTAsync_successData* response)
int
rc
;
if
(
opts
.
verbose
)
printf
(
"Subscribing to topic %s with client %s at QoS %d
\n
"
,
topic
,
opts
.
clientid
,
opts
.
qos
);
printf
(
"Subscribing to topic %s with client %s at QoS %d
\n
"
,
opts
.
topic
,
opts
.
clientid
,
opts
.
qos
);
ropts
.
onSuccess
=
onSubscribe
;
ropts
.
onFailure
=
onSubscribeFailure
;
ropts
.
context
=
client
;
if
((
rc
=
MQTTAsync_subscribe
(
client
,
topic
,
opts
.
qos
,
&
ropts
))
!=
MQTTASYNC_SUCCESS
)
if
((
rc
=
MQTTAsync_subscribe
(
client
,
opts
.
topic
,
opts
.
qos
,
&
ropts
))
!=
MQTTASYNC_SUCCESS
)
{
printf
(
"Failed to start subscribe, return code %d
\n
"
,
rc
);
fprintf
(
stderr
,
"Failed to start subscribe, return code %d
\n
"
,
rc
);
finished
=
1
;
}
}
...
...
@@ -231,7 +215,7 @@ MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
void
trace_callback
(
enum
MQTTASYNC_TRACE_LEVELS
level
,
char
*
message
)
{
printf
(
"Trace : %d, %s
\n
"
,
level
,
message
);
fprintf
(
stderr
,
"Trace : %d, %s
\n
"
,
level
,
message
);
}
...
...
@@ -243,14 +227,26 @@ int main(int argc, char** argv)
MQTTAsync_SSLOptions
ssl_opts
=
MQTTAsync_SSLOptions_initializer
;
int
rc
=
0
;
char
*
url
=
NULL
;
MQTTAsync_nameValue
*
infos
=
MQTTAsync_getVersionInfo
();
const
char
*
version
=
NULL
;
while
(
infos
->
name
)
{
if
(
strcmp
(
infos
->
name
,
"Version"
)
==
0
)
{
version
=
infos
->
value
;
break
;
}
++
infos
;
}
if
(
argc
<
2
)
usage
();
usage
(
&
opts
,
version
);
if
(
getopts
(
argc
,
argv
,
&
opts
)
!=
0
)
usage
();
usage
(
&
opts
,
version
);
if
(
strchr
(
topic
,
'#'
)
||
strchr
(
topic
,
'+'
))
if
(
strchr
(
opts
.
topic
,
'#'
)
||
strchr
(
opts
.
topic
,
'+'
))
opts
.
verbose
=
1
;
if
(
opts
.
connection
)
...
...
@@ -321,7 +317,7 @@ int main(int argc, char** argv)
if
((
rc
=
MQTTAsync_connect
(
client
,
&
conn_opts
))
!=
MQTTASYNC_SUCCESS
)
{
printf
(
"Failed to start connect, return code %d
\n
"
,
rc
);
fprintf
(
stderr
,
"Failed to start connect, return code %d
\n
"
,
rc
);
exit
(
EXIT_FAILURE
);
}
...
...
@@ -337,7 +333,7 @@ int main(int argc, char** argv)
disc_opts
.
onSuccess
=
onDisconnect
;
if
((
rc
=
MQTTAsync_disconnect
(
client
,
&
disc_opts
))
!=
MQTTASYNC_SUCCESS
)
{
printf
(
"Failed to start disconnect, return code %d
\n
"
,
rc
);
fprintf
(
stderr
,
"Failed to start disconnect, return code %d
\n
"
,
rc
);
exit
(
EXIT_FAILURE
);
}
...
...
src/samples/paho_cs_pub.c
View file @
d5c96a27
...
...
@@ -47,31 +47,15 @@ void cfinish(int sig)
struct
pubsub_opts
opts
=
{
MQTTVERSION_DEFAULT
,
0
,
NULL
,
"paho-cs-pub"
,
"
\n
"
,
100
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
0
,
10
,
1
,
0
,
0
,
"
\n
"
,
100
,
/* debug/app options */
NULL
,
NULL
,
1
,
0
,
0
,
/* message options */
MQTTVERSION_DEFAULT
,
NULL
,
"paho-cs-pub"
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
10
,
/* MQTT options */
NULL
,
NULL
,
0
,
0
,
/* will options */
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
/* TLS options */
0
,
{
NULL
,
NULL
},
/*
publish propertie
s */
0
,
{
NULL
,
NULL
},
/*
MQTT V5 option
s */
};
void
usage
(
void
)
{
printf
(
"MQTT stdout subscriber
\n
"
);
printf
(
"Usage: stdoutsub 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
(
" --delimiter <delim> (default is no delimiter)
\n
"
);
printf
(
" --clientid <clientid> (default is %s)
\n
"
,
opts
.
clientid
);
printf
(
" --username none
\n
"
);
printf
(
" --password none
\n
"
);
printf
(
" --verbose <on or off> (default is on if the topic has a wildcard, else off)
\n
"
);
printf
(
" --keepalive <seconds> (default is 10 seconds)
\n
"
);
exit
(
EXIT_FAILURE
);
}
int
myconnect
(
MQTTClient
*
client
)
{
MQTTClient_connectOptions
conn_opts
=
MQTTClient_connectOptions_initializer
;
...
...
@@ -159,12 +143,24 @@ int main(int argc, char** argv)
char
*
buffer
=
NULL
;
int
rc
=
0
;
char
*
url
;
MQTTClient_nameValue
*
infos
=
MQTTClient_getVersionInfo
();
const
char
*
version
=
NULL
;
while
(
infos
->
name
)
{
if
(
strcmp
(
infos
->
name
,
"Version"
)
==
0
)
{
version
=
infos
->
value
;
break
;
}
++
infos
;
}
if
(
argc
<
2
)
usage
();
usage
(
&
opts
,
version
);
if
(
getopts
(
argc
,
argv
,
&
opts
)
!=
0
)
usage
();
usage
(
&
opts
,
version
);
if
(
opts
.
connection
)
url
=
opts
.
connection
;
...
...
src/samples/paho_cs_sub.c
View file @
d5c96a27
...
...
@@ -43,31 +43,15 @@ volatile int toStop = 0;
struct
pubsub_opts
opts
=
{
MQTTVERSION_DEFAULT
,
0
,
NULL
,
"paho-cs-sub"
,
"
\n
"
,
100
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
0
,
10
,
0
,
0
,
0
,
"
\n
"
,
100
,
/* debug/app options */
NULL
,
NULL
,
1
,
0
,
0
,
/* message options */
MQTTVERSION_DEFAULT
,
NULL
,
"paho-cs-sub"
,
0
,
0
,
NULL
,
NULL
,
"localhost"
,
"1883"
,
NULL
,
10
,
/* MQTT options */
NULL
,
NULL
,
0
,
0
,
/* will options */
0
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
/* TLS options */
0
,
{
NULL
,
NULL
},
/*
publish propertie
s */
0
,
{
NULL
,
NULL
},
/*
MQTT V5 option
s */
};
void
usage
(
void
)
{
printf
(
"MQTT stdout subscriber
\n
"
);
printf
(
"Usage: stdoutsub 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
(
" --delimiter <delim> (default is
\\
n)
\n
"
);
printf
(
" --clientid <clientid> (default is %s)
\n
"
,
opts
.
clientid
);
printf
(
" --username none
\n
"
);
printf
(
" --password none
\n
"
);
printf
(
" --showtopics <on or off> (default is on if the topic has a wildcard, else off)
\n
"
);
printf
(
" --keepalive <seconds> (default is %d seconds)
\n
"
,
opts
.
keepalive
);
exit
(
EXIT_FAILURE
);
}
void
myconnect
(
MQTTClient
*
client
,
MQTTClient_connectOptions
*
opts
)
{
int
rc
=
0
;
...
...
@@ -93,9 +77,21 @@ int main(int argc, char** argv)
char
*
topic
=
NULL
;
int
rc
=
0
;
char
url
[
100
];
MQTTClient_nameValue
*
infos
=
MQTTClient_getVersionInfo
();
const
char
*
version
=
NULL
;
while
(
infos
->
name
)
{
if
(
strcmp
(
infos
->
name
,
"Version"
)
==
0
)
{
version
=
infos
->
value
;
break
;
}
++
infos
;
}
if
(
argc
<
2
)
usage
();
usage
(
&
opts
,
version
);
topic
=
argv
[
1
];
...
...
@@ -105,7 +101,7 @@ int main(int argc, char** argv)
printf
(
"topic is %s
\n
"
,
topic
);
if
(
getopts
(
argc
,
argv
,
&
opts
)
!=
0
)
usage
();
usage
(
&
opts
,
version
);
sprintf
(
url
,
"%s:%s"
,
opts
.
host
,
opts
.
port
);
...
...
src/samples/pubsub_opts.c
View file @
d5c96a27
...
...
@@ -22,6 +22,31 @@
#include <stdlib.h>
void
usage
(
struct
pubsub_opts
*
opts
,
const
char
*
version
)
{
printf
(
"Eclipse Paho MQTT C %s
\n
"
,
opts
->
publisher
?
"publisher"
:
"subscriber"
);
printf
(
"Eclipse Paho C library version %s
\n
"
,
version
);
printf
(
"Usage: paho_c_pub <topicname> <options>, where options are:
\n
"
" -t (--topic) MQTT topic to publish to
\n
"
" -h (--host) host to connect to (default is %s)
\n
"
" -p (--port) network port to connect to (default is %s)
\n
"
" -c (--connection) connection string, overrides host/port e.g wss://hostname:port/ws
\n
"
" -q (--qos) MQTT QoS to publish on (0, 1 or 2) (default is %d)
\n
"
" -r (--retained) use MQTT retain option? (default is %s)
\n
"
" -i (--clientid) <clientid> (default is %s)
\n
"
" -u (--username) MQTT username (default is none)
\n
"
" -P (--password) MQTT password (default is none)
\n
"
" -k (--keepalive) MQTT keepalive timeout value (default is %d seconds)
\n
"
" --delimiter <delim> (default is
\\
n)
\n
"
" --maxdatalen <bytes> (default is %d)
\n
"
,
opts
->
host
,
opts
->
port
,
opts
->
qos
,
opts
->
retained
?
"on"
:
"off"
,
opts
->
clientid
,
opts
->
maxdatalen
,
opts
->
keepalive
);
exit
(
EXIT_FAILURE
);
}
int
getopts
(
int
argc
,
char
**
argv
,
struct
pubsub_opts
*
opts
)
{
int
count
=
1
;
...
...
@@ -34,9 +59,7 @@ int getopts(int argc, char** argv, struct pubsub_opts* opts)
while
(
count
<
argc
)
{
if
(
strcmp
(
argv
[
count
],
"--retained"
)
==
0
||
strcmp
(
argv
[
count
],
"-r"
)
==
0
)
opts
->
retained
=
1
;
else
if
(
strcmp
(
argv
[
count
],
"--verbose"
)
==
0
||
strcmp
(
argv
[
count
],
"-v"
)
==
0
)
if
(
strcmp
(
argv
[
count
],
"--verbose"
)
==
0
||
strcmp
(
argv
[
count
],
"-v"
)
==
0
)
opts
->
verbose
=
1
;
else
if
(
strcmp
(
argv
[
count
],
"--qos"
)
==
0
||
strcmp
(
argv
[
count
],
"-q"
)
==
0
)
{
...
...
@@ -103,13 +126,6 @@ int getopts(int argc, char** argv, struct pubsub_opts* opts)
else
return
1
;
}
else
if
(
strcmp
(
argv
[
count
],
"--message-expiry"
)
==
0
)
{
if
(
++
count
<
argc
)
opts
->
message_expiry
=
atoi
(
argv
[
count
]);
else
return
1
;
}
else
if
(
strcmp
(
argv
[
count
],
"--delimiter"
)
==
0
)
{
if
(
++
count
<
argc
)
...
...
@@ -242,6 +258,20 @@ int getopts(int argc, char** argv, struct pubsub_opts* opts)
else
return
1
;
}
else
if
(
opts
->
publisher
==
0
)
{
if
(
strcmp
(
argv
[
count
],
"--no-print-retained"
)
==
0
||
strcmp
(
argv
[
count
],
"-R"
)
==
0
)
opts
->
retained
=
1
;
else
{
fprintf
(
stderr
,
"Unknown option %s
\n
"
,
argv
[
count
]);
return
1
;
}
}
else
if
(
opts
->
publisher
==
1
)
{
if
(
strcmp
(
argv
[
count
],
"--retained"
)
==
0
||
strcmp
(
argv
[
count
],
"-r"
)
==
0
)
opts
->
retained
=
1
;
else
if
(
strcmp
(
argv
[
count
],
"--user-property"
)
==
0
)
{
if
(
count
+
2
<
argc
)
...
...
@@ -252,9 +282,47 @@ int getopts(int argc, char** argv, struct pubsub_opts* opts)
else
return
1
;
}
else
if
(
strcmp
(
argv
[
count
],
"--message-expiry"
)
==
0
)
{
if
(
++
count
<
argc
)
opts
->
message_expiry
=
atoi
(
argv
[
count
]);
else
return
1
;
}
else
if
(
strcmp
(
argv
[
count
],
"-m"
)
==
0
||
strcmp
(
argv
[
count
],
"--message"
)
==
0
)
{
if
(
++
count
<
argc
)
{
opts
->
stdin_lines
=
0
;
opts
->
message
=
argv
[
count
];
}
else
return
1
;
}
else
if
(
strcmp
(
argv
[
count
],
"-f"
)
==
0
||
strcmp
(
argv
[
count
],
"--filename"
)
==
0
)
{
if
(
++
count
<
argc
)
{
opts
->
stdin_lines
=
0
;
opts
->
message
=
argv
[
count
];
}
else
return
1
;
}
else
if
(
strcmp
(
argv
[
count
],
"-n"
)
==
0
||
strcmp
(
argv
[
count
],
"--null-message"
)
==
0
)
{
opts
->
stdin_lines
=
0
;
opts
->
null_message
=
1
;
}
else
{
fprintf
(
stderr
,
"Unknown option %s
\n
"
,
argv
[
count
]);
return
1
;
}
}
else
{
printf
(
"Unknown arg
%s
\n
"
,
argv
[
count
]);
fprintf
(
stderr
,
"Unknown option
%s
\n
"
,
argv
[
count
]);
return
1
;
}
...
...
src/samples/pubsub_opts.h
View file @
d5c96a27
...
...
@@ -23,12 +23,22 @@
struct
pubsub_opts
{
int
MQTTVersion
;
/* debug app options */
int
publisher
;
/* publisher app? */
int
verbose
;
int
tracelevel
;
char
*
topic
;
char
*
clientid
;
char
*
delimiter
;
int
maxdatalen
;
/* message options */
char
*
message
;
char
*
filename
;
int
stdin_lines
;
int
stdlin_complete
;
int
null_message
;
/* MQTT options */
int
MQTTVersion
;
char
*
topic
;
char
*
clientid
;
int
qos
;
int
retained
;
char
*
username
;
...
...
@@ -36,12 +46,13 @@ struct pubsub_opts
char
*
host
;
char
*
port
;
char
*
connection
;
int
verbose
;
int
keepalive
;
/* will options */
char
*
will_topic
;
char
*
will_payload
;
int
will_qos
;
int
will_retain
;
/* TLS options */
int
insecure
;
char
*
capath
;
char
*
cert
;
...
...
@@ -49,6 +60,7 @@ struct pubsub_opts
char
*
key
;
char
*
keypass
;
char
*
ciphers
;
/* MQTT V5 options */
int
message_expiry
;
struct
{
char
*
name
;
...
...
@@ -56,6 +68,7 @@ struct pubsub_opts
}
user_property
;
};
void
usage
(
struct
pubsub_opts
*
opts
,
const
char
*
version
);
int
getopts
(
int
argc
,
char
**
argv
,
struct
pubsub_opts
*
opts
);
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment