Lines Matching refs:pub

164 static void mqtt_sn_publish_destroy(struct mqtt_sn_client *client, struct mqtt_sn_publish *pub)  in mqtt_sn_publish_destroy()  argument
166 sys_slist_find_and_remove(&client->publish, &pub->next); in mqtt_sn_publish_destroy()
167 k_mem_slab_free(&publishes, (void *)pub); in mqtt_sn_publish_destroy()
172 struct mqtt_sn_publish *pub; in mqtt_sn_publish_destroy_all() local
176 pub = SYS_SLIST_CONTAINER(next, pub, next); in mqtt_sn_publish_destroy_all()
177 k_mem_slab_free(&publishes, (void *)pub); in mqtt_sn_publish_destroy_all()
183 struct mqtt_sn_publish *pub; in mqtt_sn_publish_create() local
185 if (k_mem_slab_alloc(&publishes, (void **)&pub, K_NO_WAIT)) { in mqtt_sn_publish_create()
190 memset(pub, 0, sizeof(*pub)); in mqtt_sn_publish_create()
193 if (data->size > sizeof(pub->pubdata)) { in mqtt_sn_publish_create()
198 memcpy(pub->pubdata, data->data, data->size); in mqtt_sn_publish_create()
199 pub->datalen = data->size; in mqtt_sn_publish_create()
202 mqtt_sn_con_init(&pub->con); in mqtt_sn_publish_create()
204 return pub; in mqtt_sn_publish_create()
210 struct mqtt_sn_publish *pub; in mqtt_sn_publish_find_by_msg_id() local
212 SYS_SLIST_FOR_EACH_CONTAINER(&client->publish, pub, next) { in mqtt_sn_publish_find_by_msg_id()
213 if (pub->con.msg_id == msg_id) { in mqtt_sn_publish_find_by_msg_id()
214 return pub; in mqtt_sn_publish_find_by_msg_id()
224 struct mqtt_sn_publish *pub; in mqtt_sn_publish_find_by_topic() local
226 SYS_SLIST_FOR_EACH_CONTAINER(&client->publish, pub, next) { in mqtt_sn_publish_find_by_topic()
227 if (pub->topic == topic) { in mqtt_sn_publish_find_by_topic()
228 return pub; in mqtt_sn_publish_find_by_topic()
295 struct mqtt_sn_publish *pub; in mqtt_sn_topic_destroy() local
298 while ((pub = mqtt_sn_publish_find_by_topic(client, topic)) != NULL) { in mqtt_sn_topic_destroy()
299 LOG_WRN("Destroying publish msg_id %d", pub->con.msg_id); in mqtt_sn_topic_destroy()
300 mqtt_sn_publish_destroy(client, pub); in mqtt_sn_topic_destroy()
309 struct mqtt_sn_publish *pub; in mqtt_sn_topic_destroy_all() local
315 while ((pub = mqtt_sn_publish_find_by_topic(client, topic)) != NULL) { in mqtt_sn_topic_destroy_all()
316 LOG_WRN("Destroying publish msg_id %d", pub->con.msg_id); in mqtt_sn_topic_destroy_all()
317 mqtt_sn_publish_destroy(client, pub); in mqtt_sn_topic_destroy_all()
536 static void mqtt_sn_do_publish(struct mqtt_sn_client *client, struct mqtt_sn_publish *pub, bool dup) in mqtt_sn_do_publish() argument
540 if (!client || !pub) { in mqtt_sn_do_publish()
549 LOG_INF("Publishing to topic ID %d", pub->topic->topic_id); in mqtt_sn_do_publish()
551 p.params.publish.data.data = pub->pubdata; in mqtt_sn_do_publish()
552 p.params.publish.data.size = pub->datalen; in mqtt_sn_do_publish()
553 p.params.publish.msg_id = pub->con.msg_id; in mqtt_sn_do_publish()
554 p.params.publish.retain = pub->retain; in mqtt_sn_do_publish()
555 p.params.publish.topic_id = pub->topic->topic_id; in mqtt_sn_do_publish()
556 p.params.publish.topic_type = pub->topic->type; in mqtt_sn_do_publish()
557 p.params.publish.qos = pub->qos; in mqtt_sn_do_publish()
643 struct mqtt_sn_publish *pub, *pubs; in process_pubs() local
648 SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&client->publish, pub, pubs, next) { in process_pubs()
649 LOG_HEXDUMP_DBG(pub->topic->name, pub->topic->namelen, in process_pubs()
651 LOG_HEXDUMP_DBG(pub->pubdata, pub->datalen, "Processing publish data"); in process_pubs()
653 if (pub->con.last_attempt == 0) { in process_pubs()
657 next_attempt = pub->con.last_attempt + T_RETRY_MSEC; in process_pubs()
663 switch (pub->topic->state) { in process_pubs()
666 if (!pub->con.retries--) { in process_pubs()
671 mqtt_sn_do_publish(client, pub, dup); in process_pubs()
672 if (pub->qos == MQTT_SN_QOS_0 || pub->qos == MQTT_SN_QOS_M1) { in process_pubs()
674 mqtt_sn_publish_destroy(client, pub); in process_pubs()
678 pub->con.last_attempt = now; in process_pubs()
1217 struct mqtt_sn_publish *pub; in mqtt_sn_publish() local
1247 pub = mqtt_sn_publish_create(data); in mqtt_sn_publish()
1248 if (!pub) { in mqtt_sn_publish()
1253 pub->qos = qos; in mqtt_sn_publish()
1254 pub->retain = retain; in mqtt_sn_publish()
1255 pub->topic = topic; in mqtt_sn_publish()
1257 sys_slist_append(&client->publish, &pub->next); in mqtt_sn_publish()
1465 struct mqtt_sn_publish *pub = mqtt_sn_publish_find_by_msg_id(client, p->msg_id); in handle_puback() local
1467 if (!pub) { in handle_puback()
1472 mqtt_sn_publish_destroy(client, pub); in handle_puback()
1478 struct mqtt_sn_publish *pub = mqtt_sn_publish_find_by_msg_id(client, p->msg_id); in handle_pubrec() local
1480 if (!pub) { in handle_pubrec()
1485 pub->con.last_attempt = k_uptime_get(); in handle_pubrec()
1486 pub->con.retries = N_RETRY; in handle_pubrec()
1504 struct mqtt_sn_publish *pub = mqtt_sn_publish_find_by_msg_id(client, p->msg_id); in handle_pubcomp() local
1506 if (!pub) { in handle_pubcomp()
1511 mqtt_sn_publish_destroy(client, pub); in handle_pubcomp()