[CVS] RPM: rpm-5_4: rpm/ CHANGES configure.ac rpm/rpmio/ rpmmqtt.c rpm...
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 11-Jul-2016 22:26:53 Branch: rpm-5_4 Handle: 2016071120265300 Modified files: (Branch: rpm-5_4) rpm CHANGES configure.ac rpm/rpmio rpmmqtt.c rpmmqtt.h tmqtt.c Log: - mqtt: add a WITH_MOSQUITTO implementation. Summary: RevisionChanges Path 1.3501.2.516+1 -0 rpm/CHANGES 2.472.2.153 +20 -2 rpm/configure.ac 1.1.2.20+1790 -347 rpm/rpmio/rpmmqtt.c 1.1.2.18+134 -22rpm/rpmio/rpmmqtt.h 1.1.2.13+5 -6 rpm/rpmio/tmqtt.c patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3501.2.515 -r1.3501.2.516 CHANGES --- rpm/CHANGES 7 Jul 2016 14:34:56 - 1.3501.2.515 +++ rpm/CHANGES 11 Jul 2016 20:26:53 - 1.3501.2.516 @@ -1,4 +1,5 @@ 5.4.17 -> 5.4.18: +- jbj: mqtt: add a WITH_MOSQUITTO implementation. - jbj: blake2: upgrade to 20160619 release. - jbj: macros: stub-in rpmmc/rpmme pools for MacroContext/MacroEntry. - jbj: mqtt: prepare for MacroContext sub-classing. @@ . patch -p0 <<'@@ .' Index: rpm/configure.ac $ cvs diff -u -r2.472.2.152 -r2.472.2.153 configure.ac --- rpm/configure.ac 29 Jun 2016 12:17:57 - 2.472.2.152 +++ rpm/configure.ac 11 Jul 2016 20:26:53 - 2.472.2.153 @@ -2246,10 +2246,28 @@ # MQTT RPM_CHECK_LIB( -[MQTT], [mqtt], +[Paho], [paho], [paho-mqtt3as], [MQTTAsync_create], [MQTTAsync.h], [no,external:none], [], -[ AC_DEFINE(WITH_MQTT, 1, [Define if building with MQTT]) +[ AC_DEFINE(WITH_PAHO, 1, [Define if building with MQTT+PAHO]) +], []) +RPM_CHECK_LIB( +[Mosquitto], [mosquitto], +[mosquitto], [mosquitto_lib_init], [mosquitto.h], +[no,external:none], [], +[ AC_DEFINE(WITH_MOSQUITTO, 1, [Define if building with MQTT+MOSQUITTO]) +], []) +RPM_CHECK_LIB( +[RabbitMQ], [rabbitmq], +[rabbitmq], [amqp_new_connection], [amqp.h], +[no,external:none], [], +[ AC_DEFINE(WITH_RABBITMQ, 1, [Define if building with MQTT+RABBITMQ]) +], []) +RPM_CHECK_LIB( +[ZeroMQ], [zeromq], +[zmq], [zmq_ctx_new], [zmq.h], +[no,external:none], [], +[ AC_DEFINE(WITH_ZEROMQ, 1, [Define if building with MQTT+ZEROMQ]) ], []) # Libgit2 @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmmqtt.c $ cvs diff -u -r1.1.2.19 -r1.1.2.20 rpmmqtt.c --- rpm/rpmio/rpmmqtt.c 10 Jul 2016 16:16:04 - 1.1.2.19 +++ rpm/rpmio/rpmmqtt.c 11 Jul 2016 20:26:53 - 1.1.2.20 @@ -3,6 +3,15 @@ */ #include "system.h" + +#undef WITH_PAHO +#undef WITH_RABBITMQ +#undef WITH_ZEROMQ + +#if defined(WITH_PAHO) || defined(WITH_MOSQUITTO) || defined(WITH_RABBITMQ) || defined(WITH_ZEROMQ) +#define WITH_MQTT +#endif + #include #include #include @@ -19,17 +28,25 @@ #include #include -#ifdef WITH_MQTT +#ifdef WITH_PAHO #include #endif +#ifdef WITH_MOSQUITTO +#include +#endif +#ifdef WITH_RABBITMQ +#include +#endif +#ifdef WITH_ZEROMQ +#include +#endif #define _RPMMQTT_INTERNAL #include #include "debug.h" -int _rpmmqtt_debug = 1; -#define SPEW(_list) if (mqtt->debug || _rpmmqtt_debug < 0) fprintf _list +int _rpmmqtt_debug; #define F_ISSET(_f, _FLAG) (((_f) & ((MQTT_FLAGS_##_FLAG) & ~0x4000)) != MQTT_FLAGS_NONE) #define MF_ISSET(_FLAG) F_ISSET(mqtt->flags, _FLAG) @@ -121,8 +138,8 @@ return t; } -#define _ENTRY(_v) { MQTT_FLAGS_##_v, #_v, } static KEY MqttFlags[] = { +#define _ENTRY(_v) { MQTT_FLAGS_##_v, #_v, } _ENTRY(CLEAN), _ENTRY(EOL), _ENTRY(NOSTALE), @@ -133,8 +150,8 @@ _ENTRY(RETAIN), _ENTRY(WILL_RETAIN), _ENTRY(BUFFER), -}; #undef _ENTRY +}; static size_t nMqttFlags = sizeof(MqttFlags) / sizeof(MqttFlags[0]); static const char * fmtMqttFlags(uint32_t flags) @@ -146,33 +163,10 @@ } #define _MQTTFLAGS(_flags) fmtMqttFlags(_flags) -#define _ENTRY(_v) { MQTTASYNC_##_v, #_v, } -static KEY rpmmqtt_errs[] = { -#ifdef WITH_MQTT -_ENTRY(SUCCESS), -_ENTRY(FAILURE), -
[CVS] RPM: rpm-5_4: rpm/ CHANGES configure.ac rpm/rpmio/ rpmmqtt.c rpm...
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 27-Jun-2016 20:27:10 Branch: rpm-5_4 Handle: 2016062718271000 Modified files: (Branch: rpm-5_4) rpm CHANGES configure.ac rpm/rpmio rpmmqtt.c rpmmqtt.h Log: - mqtt: stub-in a paho-mqtt client. Summary: RevisionChanges Path 1.3501.2.507+2 -0 rpm/CHANGES 2.472.2.151 +8 -0 rpm/configure.ac 1.1.2.2 +166 -2 rpm/rpmio/rpmmqtt.c 1.1.2.2 +11 -1 rpm/rpmio/rpmmqtt.h patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3501.2.506 -r1.3501.2.507 CHANGES --- rpm/CHANGES 27 Jun 2016 03:10:03 - 1.3501.2.506 +++ rpm/CHANGES 27 Jun 2016 18:27:10 - 1.3501.2.507 @@ -1,4 +1,6 @@ 5.4.17 -> 5.4.18: +- jbj: mqtt: stub-in a paho-mqtt client. +- jbj: build: add/use RPMIOPOOL_ macros where possible. - jbj: lib: add/use RPMIOPOOL_ macros where possible. - jbj: rpmdb: add/use RPMIOPOOL_ macros where possible. - jbj: rpmdb: rename dbiIndex -> rpmdbi type, dbiFoo() -> rpmdbiFoo(). @@ . patch -p0 <<'@@ .' Index: rpm/configure.ac $ cvs diff -u -r2.472.2.150 -r2.472.2.151 configure.ac --- rpm/configure.ac 24 Jun 2016 19:08:22 - 2.472.2.150 +++ rpm/configure.ac 27 Jun 2016 18:27:10 - 2.472.2.151 @@ -2244,6 +2244,14 @@ fi ], [ AC_MSG_WARN([No Neon library found, using unsupported configuration]) ]) +# MQTT +RPM_CHECK_LIB( +[MQTT], [mqtt], +[paho-mqtt3c], [MQTTClient_create], [MQTTClient.h], +[no,external:none], [], +[ AC_DEFINE(WITH_MQTT, 1, [Define if building with MQTT]) +], []) + # Libgit2 # XXX internal needs *.a/*.la files to merge into -lrpmmisc RPM_CHECK_LIB( @@ . patch -p0 <<'@@ .' Index: rpm/rpmio/rpmmqtt.c $ cvs diff -u -r1.1.2.1 -r1.1.2.2 rpmmqtt.c --- rpm/rpmio/rpmmqtt.c 27 Jun 2016 03:05:58 - 1.1.2.1 +++ rpm/rpmio/rpmmqtt.c 27 Jun 2016 18:27:10 - 1.1.2.2 @@ -3,6 +3,9 @@ */ #include "system.h" +#include +#include +#include #include/* for *Pool methods */ #include @@ -12,20 +15,91 @@ #include "debug.h" +int _rpmmqtt_debug = 0; + +static int Xcheck(rpmmqtt mqtt, const char * msg, int rc, + int printit, const char * func, const char * fn, unsigned ln) +{ + +if (printit || rc) { + fprintf(stderr, "error: %s:%s:%u: MQTTClient_%s(%d)\n", + func, fn, ln, msg, rc); +} +return rc; +} +#define check(_o, _m, _rc) \ +Xcheck(_o, _m, _rc, _rpmmqtt_debug, __FUNCTION__, __FILE__, __LINE__) + static void rpmmqttFini(void * _mqtt) { rpmmqtt mqtt = (rpmmqtt) _mqtt; +#ifdef WITH_MQTT +{MQTTClient C = (MQTTClient) mqtt->C; + int xx; + mqtt->msecs = 1; + xx = check(mqtt, "disconnect", + MQTTClient_disconnect(C, mqtt->msecs)); + MQTTClient_destroy(); +} +#endif +mqtt->C = NULL; + if (mqtt->av) (void) argvFree((ARGV_t)mqtt->av); mqtt->av = NULL; mqtt->flags = 0; } -int _rpmmqtt_debug = 0; - RPMIOPOOL_MODULE(mqtt) +static int rpmmqttMessageArrived(void * _mqtt, char * topic, int topicLen, + void * _message) +{ +rpmmqtt mqtt = (rpmmqtt) _mqtt; +FILE * fp = stderr; +int rc = 1; + +(void)mqtt; + +fprintf(fp, "Message arrived\n"); +fprintf(fp, " topic: %s\n", topic); + +#ifdef WITH_MQTT +MQTTClient_message *message = _message; +const char * s = message->payload; + +fprintf(fp, " message: "); +for (int i = 0; i < message->payloadlen; i++) +fprintf(fp, "%c", s[i]); +fprintf(fp, "\n"); + +MQTTClient_freeMessage(); +MQTTClient_free(topic); +#endif + +return rc; +} + +static void rpmmqttDeliveryComplete(void * _mqtt, int token) +{ +rpmmqtt mqtt = (rpmmqtt) _mqtt; +FILE * fp = stderr; +fprintf(fp, "Message with token value %d delivery confirmed\n", token); +mqtt->token = token; +} + +static void rpmmqttConnlost(void * _mqtt, char *cause) +{ +rpmmqtt mqtt = (rpmmqtt) _mqtt; +FILE * fp = stderr; + +