Lines Matching defs:wsi
249 lws_mqtt_set_client_established(struct lws *wsi)
251 lws_role_transition(wsi, LWSIFR_CLIENT, LRS_ESTABLISHED,
254 if (user_callback_handle_rxflow(wsi->a.protocol->callback,
255 wsi, LWS_CALLBACK_MQTT_CLIENT_ESTABLISHED,
256 wsi->user_space, NULL, 0) < 0) {
265 lws_validity_confirmed(wsi);
268 lws_set_timeout(wsi, NO_PENDING_TIMEOUT, 0);
372 lwsl_info("%s: Created mysub %p for wsi->mqtt %p\n",
385 lwsl_info("%s: Called to remove subs from wsi->mqtt %p\n",
396 lwsl_info("%s: Removing sub %p from wsi->mqtt %p\n",
406 * This fires if the wsi did a PUBLISH under QoS1 or QoS2, but no PUBACK or
416 lwsl_notice("%s: %s\n", __func__, lws_wsi_tag(mqtt->wsi));
418 if (mqtt->wsi->a.protocol->callback(mqtt->wsi, LWS_CALLBACK_MQTT_RESEND,
419 mqtt->wsi->user_space, NULL, 0))
420 lws_set_timeout(mqtt->wsi, 1, LWS_TO_KILL_ASYNC);
429 lwsl_debug("%s: %s\n", __func__, lws_wsi_tag(mqtt->wsi));
431 if (mqtt->wsi->a.protocol->callback(mqtt->wsi,
433 mqtt->wsi->user_space, NULL, 0))
434 lws_set_timeout(mqtt->wsi, 1, LWS_TO_KILL_ASYNC);
443 lwsl_debug("%s: %s\n", __func__, lws_wsi_tag(mqtt->wsi));
445 if (mqtt->wsi->a.protocol->callback(mqtt->wsi,
447 mqtt->wsi->user_space, NULL, 0))
448 lws_set_timeout(mqtt->wsi, 1, LWS_TO_KILL_ASYNC);
526 _lws_mqtt_rx_parser(struct lws *wsi, lws_mqtt_parser_t *par,
554 if (lwsi_state(wsi) == LRS_MQTTC_AWAIT_CONNACK &&
571 __func__, lws_wsi_tag(wsi),
729 wsi->mqtt->ack_pkt_id = par->cpkt_id;
765 wsi->mqtt->ack_pkt_id = par->cpkt_id;
801 wsi->mqtt->ack_pkt_id = par->cpkt_id;
810 if (lwsi_role_client(wsi) && wsi->mqtt->inside_subscribe) {
863 assert(!wsi->mqtt->rx_cpkt_param);
864 wsi->mqtt->rx_cpkt_param = lws_zalloc(
866 if (!wsi->mqtt->rx_cpkt_param)
868 pub = (lws_mqtt_publish_param_t *)wsi->mqtt->rx_cpkt_param;
905 lws_free_set_NULL(wsi->mqtt->rx_cpkt_param);
913 (lws_mqtt_publish_param_t *)wsi->mqtt->rx_cpkt_param;
923 wsi->mqtt->peer_ack_pkt_id = par->cpkt_id;
938 (lws_mqtt_publish_param_t *)wsi->mqtt->rx_cpkt_param;
950 if (!lwsi_role_client(wsi)) {
978 lws_mqttc_t *c = &wsi->mqtt->client;
1014 wsi->mqtt->session_resumed = ((unsigned int)par->cpkt_flags &
1048 if (!lwsi_role_client(wsi)) {
1081 wsi->mqtt->ack_pkt_id = par->cpkt_id;
1118 if (!lwsi_role_client(wsi)) {
1151 wsi->mqtt->ack_pkt_id = par->cpkt_id;
1270 * it, our wsi lifecycle alone can no longer
1274 * stream, create a new wsi to take over the
1275 * nwsi duties and turn our wsi into a child of
1278 * The nwsi gets a mostly empty wsi->nwsi used
1284 lws_set_timeout(wsi, 0, 0);
1286 w = lws_create_new_server_wsi(wsi->a.vhost,
1287 wsi->tsi, "mqtt_sid1");
1294 wsi->mux.highest_sid = 1;
1295 lws_wsi_mux_insert(w, wsi, wsi->mux.highest_sid++);
1297 wsi->mux_substream = 1;
1300 wsi->client_mux_migrated = 1;
1301 wsi->told_user_closed = 1; /* don't tell nwsi closed */
1304 lwsi_set_state(wsi, LRS_ESTABLISHED);
1305 lwsi_set_role(w, lwsi_role(wsi));
1308 w->flags = wsi->flags;
1311 w->mqtt = wsi->mqtt;
1312 wsi->mqtt = lws_zalloc(sizeof(*wsi->mqtt), "nwsi mqtt");
1313 if (!wsi->mqtt)
1315 w->mqtt->wsi = w;
1316 w->a.protocol = wsi->a.protocol;
1320 w->user_space = wsi->user_space;
1321 wsi->user_space = NULL;
1323 wsi->user_space_externally_allocated;
1326 w->a.opaque_user_data = wsi->a.opaque_user_data;
1327 wsi->a.opaque_user_data = NULL;
1328 w->stash = wsi->stash;
1329 wsi->stash = NULL;
1334 __func__, lws_wsi_tag(wsi),
1347 lws_validity_confirmed(wsi);
1350 lws_wsi_mux_apply_queue(wsi);
1355 wsi->mux.child_list = w->mux.sibling_list;
1356 wsi->mux.child_count--;
1376 wsi->mux.child_list) {
1417 wsi->mqtt->send_pubrel = 1;
1418 lws_callback_on_writable(wsi);
1426 wsi->mux.child_list) {
1445 lws_validity_confirmed(wsi);
1451 wsi->mqtt->send_pubcomp = 1;
1452 lws_callback_on_writable(wsi);
1465 wsi->mux.child_list) {
1509 lws_validity_confirmed(wsi);
1520 lws_validity_confirmed(wsi);
1533 wsi->mux.child_list) {
1561 lws_validity_confirmed(wsi);
1575 wsi->mux.child_list) {
1620 lws_validity_confirmed(wsi);
1628 wsi->mqtt->rx_cpkt_param;
1641 n = wsi->role_ops->rx_cb[lwsi_role_server(wsi)];
1648 wsi->mux.child_list) {
1658 lws_free_set_NULL(wsi->mqtt->rx_cpkt_param);
1684 wsi->mqtt->send_puback = 1;
1685 lws_callback_on_writable(wsi);
1688 wsi->mqtt->send_pubrec = 1;
1689 lws_callback_on_writable(wsi);
1694 lws_free_set_NULL(wsi->mqtt->rx_cpkt_param);
1887 lws_callback_on_writable(wsi);
1957 lws_mqtt_client_send_publish(struct lws *wsi, lws_mqtt_publish_param_t *pub,
1960 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
1962 struct lws *nwsi = lws_get_network_wsi(wsi);
1971 if (lwsi_state(wsi) != LRS_ESTABLISHED) {
1973 lws_wsi_tag(wsi), lwsi_state(wsi));
1978 if (wsi->mqtt->inside_payload) {
1987 wsi->mqtt->inside_payload = 0;
2013 (wsi->a.context->pt_serv_buf_size - LWS_PRE)) {
2045 wsi->mqtt->ack_pkt_id = pub->packet_id = nwsi->mqtt->pkt_id;
2047 (int)wsi->mqtt->ack_pkt_id);
2062 nwsi->mqtt->inside_payload = wsi->mqtt->inside_payload = 1;
2076 lws_callback_on_writable(wsi);
2081 wsi->mqtt->inside_payload = nwsi->mqtt->inside_payload = 0;
2084 wsi->mqtt->unacked_publish = 1;
2094 if (wsi->a.protocol->callback(wsi, LWS_CALLBACK_MQTT_ACK,
2095 wsi->user_space, NULL, 0)) {
2103 wsi->mqtt->sul_qos_puback_pubrec_wait.cb = lws_mqtt_publish_resend;
2104 __lws_sul_insert_us(&pt->pt_sul_owner[wsi->conn_validity_wakesuspend],
2105 &wsi->mqtt->sul_qos_puback_pubrec_wait,
2109 if (wsi->mqtt->inside_shadow) {
2110 wsi->mqtt->sul_shadow_wait.cb = lws_mqtt_shadow_timeout;
2111 __lws_sul_insert_us(&pt->pt_sul_owner[wsi->conn_validity_wakesuspend],
2112 &wsi->mqtt->sul_shadow_wait,
2120 lws_mqtt_client_send_subcribe(struct lws *wsi, lws_mqtt_subscribe_param_t *sub)
2122 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
2124 struct lws *nwsi = lws_get_network_wsi(wsi);
2137 switch (lwsi_state(wsi)) {
2153 * are new to the wsi.
2170 * Attach the topic we're subscribing to, to wsi->mqtt
2172 if (!lws_mqtt_create_sub(wsi->mqtt, sub->topic[n].name)) {
2186 wsi->a.protocol->callback,
2187 wsi, LWS_CALLBACK_MQTT_SUBSCRIBED,
2188 wsi->user_space, NULL, 0) < 0) {
2215 wsi->mqtt->sub_size = (uint16_t)rem_len;
2225 wsi->a.context->pt_serv_buf_size) {
2235 wsi->mqtt->ack_pkt_id = sub->packet_id = ++nwsi->mqtt->pkt_id;
2238 lws_ser_wu16be(p, wsi->mqtt->ack_pkt_id);
2240 nwsi->mqtt->client.aws_iot = wsi->mqtt->client.aws_iot;
2292 if (wsi->mqtt->inside_resume_session)
2299 wsi->mqtt->inside_subscribe = 1;
2305 lws_mqtt_client_send_unsubcribe(struct lws *wsi,
2308 struct lws_context_per_thread *pt = &wsi->a.context->pt[(int)wsi->tsi];
2310 struct lws *nwsi = lws_get_network_wsi(wsi);
2321 switch (lwsi_state(wsi)) {
2347 wsi->a.protocol->callback,
2348 wsi, LWS_CALLBACK_MQTT_UNSUBSCRIBED,
2349 wsi->user_space, NULL, 0) < 0) {
2352 * caller still has the wsi. Inform the
2385 wsi->mqtt->sub_size = (uint16_t)rem_len;
2395 wsi->a.context->pt_serv_buf_size) {
2405 wsi->mqtt->ack_pkt_id = ++nwsi->mqtt->pkt_id;
2407 (int)wsi->mqtt->ack_pkt_id);
2408 lws_ser_wu16be(p, wsi->mqtt->ack_pkt_id);
2410 nwsi->mqtt->client.aws_iot = wsi->mqtt->client.aws_iot;
2452 wsi->mqtt->inside_unsubscribe = 1;
2454 wsi->mqtt->sul_unsuback_wait.cb = lws_mqtt_unsuback_timeout;
2455 __lws_sul_insert_us(&pt->pt_sul_owner[wsi->conn_validity_wakesuspend],
2456 &wsi->mqtt->sul_unsuback_wait,
2468 lws_wsi_mqtt_adopt(struct lws *parent_wsi, struct lws *wsi)
2478 wsi->client_mux_substream = 1;
2481 lws_wsi_mux_insert(wsi, parent_wsi, wsi->mux.my_sid);
2483 if (lws_ensure_user_space(wsi))
2486 lws_mqtt_set_client_established(wsi);
2487 lws_callback_on_writable(wsi);
2489 return wsi;
2493 parent_wsi->mux.child_list = wsi->mux.sibling_list;
2496 if (wsi->user_space)
2497 lws_free_set_NULL(wsi->user_space);
2499 wsi->a.protocol->callback(wsi, LWS_CALLBACK_WSI_DESTROY, NULL, NULL, 0);
2500 lws_free(wsi);