Diff for /mqtt/src/Attic/aitmqtt.c between versions 1.1.1.1.2.6 and 1.1.1.1.2.15

version 1.1.1.1.2.6, 2011/11/21 16:28:05 version 1.1.1.1.2.15, 2011/12/06 10:33:37
Line 39  mqtt_SetErr(int eno, char *estr, ...) Line 39  mqtt_SetErr(int eno, char *estr, ...)
         va_end(lst);          va_end(lst);
 }  }
   
   #pragma GCC visibility push(hidden)
   // _mqtt_readHEADER() read fixed header from MQTT message
   inline struct mqtthdr *
   _mqtt_readHEADER(mqtt_msg_t * __restrict buf, u_char cmd, int *bytes, int *len)
   {
           struct mqtthdr *hdr;
   
           if (!buf || !buf->msg_base || !buf->msg_len)
                   return NULL;
   
           hdr = (struct mqtthdr*) buf->msg_base;
           if (hdr->mqtt_msg.type != cmd) {
                   mqtt_SetErr(EINVAL, "Error:: wrong command #%d should be %d", 
                                   hdr->mqtt_msg.type, cmd);
                   return NULL;
           }
   
           *len = mqtt_decodeLen(hdr->mqtt_len, bytes);
           return hdr;
   }
   #pragma GCC visibility pop
   
 // ----------------------------------------------------------  // ----------------------------------------------------------
   
 /*  /*
  * mqtt_msgFree() Free MQTT message   * mqtt_msgFree() Free MQTT message
    *
  * @msg = Message buffer   * @msg = Message buffer
  * @all = !=0 Destroy entire message, if MQTT Message allocated with mqtt_msgAlloc()   * @all = !=0 Destroy entire message, if MQTT Message allocated with mqtt_msgAlloc()
  * return: none   * return: none
Line 65  mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all) Line 88  mqtt_msgFree(mqtt_msg_t ** __restrict msg, int all)
   
 /*  /*
  * mqtt_msgAlloc() Allocate memory for MQTT Message   * mqtt_msgAlloc() Allocate memory for MQTT Message
    *
  * @len = >0 Allocate buffer with length   * @len = >0 Allocate buffer with length
  * return: NULL error or Message, after use must call mqtt_msgFree() with all!=0   * return: NULL error or Message, after use must call mqtt_msgFree() with all!=0
  */   */
Line 96  mqtt_msgAlloc(u_short len) Line 120  mqtt_msgAlloc(u_short len)
   
 /*  /*
  * mqtt_msgRealloc() Reallocate MQTT message buffer   * mqtt_msgRealloc() Reallocate MQTT message buffer
    *
  * @msg = MQTT message   * @msg = MQTT message
  * @len = new length   * @len = new length
  * return: -1 error or >-1 old buffer length   * return: -1 error or >-1 old buffer length
Line 127  mqtt_msgRealloc(mqtt_msg_t * __restrict msg, u_short l Line 152  mqtt_msgRealloc(mqtt_msg_t * __restrict msg, u_short l
   
 /*  /*
  * mqtt_encodeLen() Encode number to MQTT length field   * mqtt_encodeLen() Encode number to MQTT length field
    *
  * @num = number for encode   * @num = number for encode
  * return: -1 error or >-1 length   * return: -1 error or >-1 length
  */   */
Line 153  mqtt_encodeLen(u_int num) Line 179  mqtt_encodeLen(u_int num)
   
 /*  /*
  * mqtt_decodeLen() Decode length from MQTT packet   * mqtt_decodeLen() Decode length from MQTT packet
 * @len = length *
  * @len = length from MQTT header
  * @n = sizeof bytes, if !=NULL   * @n = sizeof bytes, if !=NULL
  * return: -1 error, >-1 length of message   * return: -1 error, >-1 length of message
  */   */
 inline u_int  inline u_int
mqtt_decodeLen(u_int len, char *n)mqtt_decodeLen(void * __restrict len, int * __restrict n)
 {  {
         register u_int i, dig, mul;          register u_int i, dig, mul;
         u_int ret = 0;          u_int ret = 0;
        u_char *p = (u_char*) &len;        u_char *p = (u_char*) len;
   
        if (len > 0xffffff7f)        if (!len)
                 return (u_int) -1;                  return (u_int) -1;
   
         for (mul = 1, i = 0; i < sizeof ret; i++, mul *= 0x80) {          for (mul = 1, i = 0; i < sizeof ret; i++, mul *= 0x80) {
Line 182  mqtt_decodeLen(u_int len, char *n) Line 209  mqtt_decodeLen(u_int len, char *n)
   
 /*  /*
  * mqtt_sizeLen Return sizeof len field   * mqtt_sizeLen Return sizeof len field
    *
  * @len = length   * @len = length
  * return: -1 error, >-1 sizeof len in bytes   * return: -1 error, >-1 sizeof len in bytes
  */   */
Line 203  mqtt_sizeLen(u_int len) Line 231  mqtt_sizeLen(u_int len)
   
 /*  /*
  * mqtt_str2sub Create MQTT subscribe variable from string(s)   * mqtt_str2sub Create MQTT subscribe variable from string(s)
    *
  * @csStr = strings   * @csStr = strings
  * @strnum = number of strings elements   * @strnum = number of strings elements
  * @qoses = QoS elements applied to subscribe variable,    * @qoses = QoS elements applied to subscribe variable, 
Line 231  mqtt_str2sub(const char **csStr, u_short strnum, u_cha Line 260  mqtt_str2sub(const char **csStr, u_short strnum, u_cha
                 memset(v, 0, (items + 1) * sizeof(mqtt_subscr_t));                  memset(v, 0, (items + 1) * sizeof(mqtt_subscr_t));
   
         for (i = 0; i < items; i++) {          for (i = 0; i < items; i++) {
                v[i].sub_sb.val = htons(strlen(csStr[i]));                v[i].sub_topic._size = strlen(csStr[i]);
                v[i].sub_data = strdup(csStr[i]);                v[i].sub_topic._base = strdup(csStr[i]);
                 if (qoses && qoses[i] < MQTT_QOS_RESERVED)                  if (qoses && qoses[i] < MQTT_QOS_RESERVED)
                        v[i].sub_qos = qoses[i];                        v[i].sub_ret = qoses[i];
         }          }
   
         return v;          return v;
 }  }
   
 /*  /*
 * mqtt_freeSub() Free array from subscribe variables * mqtt_subFree() Free array from subscribe variables
  *   *
  * @subs = Subscribe variables   * @subs = Subscribe variables
  * return: none   * return: none
  */   */
 inline void  inline void
mqtt_freeSub(mqtt_subscr_t ** __restrict subs)mqtt_subFree(mqtt_subscr_t ** __restrict subs)
 {  {
         mqtt_subscr_t *v;          mqtt_subscr_t *v;
   
         if (!subs)          if (!subs)
                 return;                  return;
   
        for (v = *subs; v; v++)        for (v = *subs; v->sub_topic._base; v++) {
                free(v->sub_data);                free(v->sub_topic._base);
                 v->sub_topic._base = NULL;
                 v->sub_topic._size = 0;
 
                 if (v->sub_value._base) {
                         free(v->sub_value._base);
                         v->sub_value._base = NULL;
                         v->sub_value._size = 0;
                 }
         }
 
         free(*subs);          free(*subs);
         *subs = NULL;          *subs = NULL;
   }
   
   /*
    * mqtt_subAlloc() Create array from subscribe variables
    *
    * @num = Number of elements
    * return: NULL error or subscribe array, after use must call mqtt_subFree()
    */
   inline mqtt_subscr_t *
   mqtt_subAlloc(u_short num)
   {
           mqtt_subscr_t *s = NULL;
   
           s = malloc((num + 1) * sizeof(mqtt_subscr_t));
           if (!s) {
                   LOGERR;
                   return NULL;
           } else
                   memset(s, 0, (num + 1) * sizeof(mqtt_subscr_t));
   
           return s;
   }
   
   /*
    * mqtt_subRealloc() Reallocate array from subscribe variables
    *
    * @subs = Subscribe array
    * @num = Number of elements
    * return: NULL error or subscribe array, after use must call mqtt_subFree()
    */
   inline mqtt_subscr_t *
   mqtt_subRealloc(mqtt_subscr_t * __restrict subs, u_short num)
   {
           mqtt_subscr_t *s = NULL;
   
           s = realloc(subs, (num + 1) * sizeof(mqtt_subscr_t));
           if (!s) {
                   LOGERR;
                   return NULL;
           }
   
           return s;
 }  }

Removed from v.1.1.1.1.2.6  
changed lines
  Added in v.1.1.1.1.2.15


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>