Annotation of mqtt/src/sub.c, revision 1.1.2.3
1.1.2.1 misho 1: #include "global.h"
2:
3:
4: /* ------------------------------------------------------------------- */
5:
1.1.2.2 misho 6: int
7: mqtt_msgSUBSCRIBE(mqtt_msg_t * __restrict buf, const char *csTopic, u_short msgID,
1.1.2.3 ! misho 8: u_char Dup, u_char QOS)
1.1.2.2 misho 9: {
1.1.2.3 ! misho 10: int siz = 0;
! 11: #if 0
! 12: struct mqtthdr *hdr;
! 13: mqtthdr_var_t *topic;
! 14: mqtt_v_t *mid;
! 15:
! 16: if (!buf || !csTopic)
! 17: return -1;
! 18: if (QOS > MQTT_QOS_EXACTLY) {
! 19: mqtt_SetErr(EINVAL, "Error:: invalid QoS parameter");
! 20: return -1;
! 21: }
! 22: if (!msgID && QOS != MQTT_QOS_ONCE) {
! 23: mqtt_SetErr(EINVAL, "Error:: invalid MessageID parameter must be >0");
! 24: return -1;
! 25: }
! 26:
! 27: if (mqtt_msgRealloc(buf, MQTTMSG_MAX) == -1)
! 28: return -1;
! 29: else {
! 30: hdr = (struct mqtthdr *) (buf->msg_base + siz);
! 31: siz += sizeof(struct mqtthdr);
! 32: }
! 33:
! 34: /* variable header */
! 35:
! 36: topic = (mqtthdr_var_t*) (buf->msg_base + siz);
! 37: topic->var_sb.val = htons(strlen(csTopic));
! 38: memcpy(topic->var_data, csTopic, ntohs(topic->var_sb.val));
! 39: siz += MQTTHDR_VAR_SIZEOF(topic);
! 40:
! 41: mid = (mqtt_v_t*) (buf->msg_base + siz);
! 42: mid->val = htons(msgID);
! 43: siz += sizeof(mqtt_v_t);
! 44:
! 45: /* fixed header */
! 46:
! 47: hdr->mqtt_msg.type = MQTT_TYPE_PUBLISH;
! 48: hdr->mqtt_msg.qos = QOS;
! 49: hdr->mqtt_msg.dup = Dup ? 1 : 0;
! 50: hdr->mqtt_msg.retain = Retain ? 1 : 0;
! 51: *hdr->mqtt_len = mqtt_encodeLen(siz - sizeof(struct mqtthdr));
! 52:
! 53: mqtt_msgRealloc(buf, siz);
! 54: #endif
! 55: return siz;
1.1.2.2 misho 56: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>