[CVS] RPM: rpm-5_4: rpm/ CHANGES configure.ac rpm/rpmio/ rpmmqtt.c rpm...

2016-07-11 Thread Jeff Johnson
  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...

2016-06-27 Thread Jeff Johnson
  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;
  +
  +