Skip to content

Commit bcab28c

Browse files
authored
Merge pull request #633 from bryghtlabs-richard/feat/websocketBeginEnd
Feat/websocket: begin end thread events (IDFGH-13507)
2 parents 60817dd + d7fa24b commit bcab28c

File tree

5 files changed

+22
-2
lines changed

5 files changed

+22
-2
lines changed

components/esp_websocket_client/esp_websocket_client.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,7 @@ static void esp_websocket_client_task(void *pv)
972972

973973
client->state = WEBSOCKET_STATE_INIT;
974974
xEventGroupClearBits(client->status_bits, STOPPED_BIT | CLOSE_FRAME_SENT_BIT);
975+
esp_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_BEGIN, NULL, 0);
975976
int read_select = 0;
976977
while (client->run) {
977978
if (xSemaphoreTakeRecursive(client->lock, lock_timeout) != pdPASS) {
@@ -1106,6 +1107,7 @@ static void esp_websocket_client_task(void *pv)
11061107
}
11071108
}
11081109

1110+
esp_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_FINISH, NULL, 0);
11091111
esp_transport_close(client->transport);
11101112
xEventGroupSetBits(client->status_bits, STOPPED_BIT);
11111113
client->state = WEBSOCKET_STATE_UNKNOW;

components/esp_websocket_client/examples/linux/main/websocket_linux.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ static void websocket_event_handler(void *handler_args, esp_event_base_t base, i
2525
{
2626
esp_websocket_event_data_t *data = (esp_websocket_event_data_t *)event_data;
2727
switch (event_id) {
28+
case WEBSOCKET_EVENT_BEGIN:
29+
ESP_LOGI(TAG, "WEBSOCKET_EVENT_BEGIN");
30+
break;
2831
case WEBSOCKET_EVENT_CONNECTED:
2932
ESP_LOGI(TAG, "WEBSOCKET_EVENT_CONNECTED");
3033
break;
@@ -59,6 +62,9 @@ static void websocket_event_handler(void *handler_args, esp_event_base_t base, i
5962
log_error_if_nonzero("captured as transport's socket errno", data->error_handle.esp_transport_sock_errno);
6063
}
6164
break;
65+
case WEBSOCKET_EVENT_FINISH:
66+
ESP_LOGI(TAG, "WEBSOCKET_EVENT_FINISH");
67+
break;
6268
}
6369
}
6470

components/esp_websocket_client/examples/target/main/websocket_example.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ static void websocket_event_handler(void *handler_args, esp_event_base_t base, i
7474
{
7575
esp_websocket_event_data_t *data = (esp_websocket_event_data_t *)event_data;
7676
switch (event_id) {
77+
case WEBSOCKET_EVENT_BEGIN:
78+
ESP_LOGI(TAG, "WEBSOCKET_EVENT_BEGIN");
79+
break;
7780
case WEBSOCKET_EVENT_CONNECTED:
7881
ESP_LOGI(TAG, "WEBSOCKET_EVENT_CONNECTED");
7982
break;
@@ -122,6 +125,9 @@ static void websocket_event_handler(void *handler_args, esp_event_base_t base, i
122125
log_error_if_nonzero("captured as transport's socket errno", data->error_handle.esp_transport_sock_errno);
123126
}
124127
break;
128+
case WEBSOCKET_EVENT_FINISH:
129+
ESP_LOGI(TAG, "WEBSOCKET_EVENT_FINISH");
130+
break;
125131
}
126132
}
127133

components/esp_websocket_client/include/esp_websocket_client.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ typedef enum {
3636
WEBSOCKET_EVENT_DATA, /*!< When receiving data from the server, possibly multiple portions of the packet */
3737
WEBSOCKET_EVENT_CLOSED, /*!< The connection has been closed cleanly */
3838
WEBSOCKET_EVENT_BEFORE_CONNECT, /*!< The event occurs before connecting */
39+
WEBSOCKET_EVENT_BEGIN, /*!< The event occurs once after thread creation, before event loop */
40+
WEBSOCKET_EVENT_FINISH, /*!< The event occurs once after event loop, before thread destruction */
3941
WEBSOCKET_EVENT_MAX
4042
} esp_websocket_event_id_t;
4143

docs/esp_websocket_client/en/index.rst

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,14 @@ For more options on :cpp:type:`esp_websocket_client_config_t`, please refer to A
9191

9292
Events
9393
------
94+
* `WEBSOCKET_EVENT_BEGIN': The client thread is running.
95+
* `WEBSOCKET_EVENT_BEFORE_CONNECT`: The client is about to connect.
9496
* `WEBSOCKET_EVENT_CONNECTED`: The client has successfully established a connection to the server. The client is now ready to send and receive data. Contains no event data.
95-
* `WEBSOCKET_EVENT_DISCONNECTED`: The client has aborted the connection due to the transport layer failing to read data, e.g. because the server is unavailable. Contains no event data.
9697
* `WEBSOCKET_EVENT_DATA`: The client has successfully received and parsed a WebSocket frame. The event data contains a pointer to the payload data, the length of the payload data as well as the opcode of the received frame. A message may be fragmented into multiple events if the length exceeds the buffer size. This event will also be posted for non-payload frames, e.g. pong or connection close frames.
97-
* `WEBSOCKET_EVENT_ERROR`: Not used in the current implementation of the client.
98+
* `WEBSOCKET_EVENT_ERROR`: The client has experienced an error. Examples include transport write or read failures.
99+
* `WEBSOCKET_EVENT_DISCONNECTED`: The client has aborted the connection due to the transport layer failing to read data, e.g. because the server is unavailable. Contains no event data.
100+
* `WEBSOCKET_EVENT_CLOSED`: The connection has been closed cleanly.
101+
* `WEBSOCKET_EVENT_FINISH': The client thread is about to exit.
98102

99103
If the client handle is needed in the event handler it can be accessed through the pointer passed to the event handler:
100104

0 commit comments

Comments
 (0)