Skip to content

Commit 450ca76

Browse files
committed
add return value to all send functions
1 parent c57a4c1 commit 450ca76

6 files changed

+103
-76
lines changed

src/WebSockets.cpp

+15-6
Original file line numberDiff line numberDiff line change
@@ -77,17 +77,18 @@ void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * rea
7777
* @param mask bool add dummy mask to the frame (needed for web browser)
7878
* @param fin bool can be used to send data in more then one frame (set fin on the last frame)
7979
* @param headerToPayload bool set true if the payload has reserved 14 Byte at the beginning to dynamically add the Header (payload neet to be in RAM!)
80+
* @return true if ok
8081
*/
81-
void WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool mask, bool fin, bool headerToPayload) {
82+
bool WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool mask, bool fin, bool headerToPayload) {
8283

8384
if(client->tcp && !client->tcp->connected()) {
8485
DEBUG_WEBSOCKETS("[WS][%d][sendFrame] not Connected!?\n", client->num);
85-
return;
86+
return false;
8687
}
8788

8889
if(client->status != WSC_CONNECTED) {
8990
DEBUG_WEBSOCKETS("[WS][%d][sendFrame] not in WSC_CONNECTED state!?\n", client->num);
90-
return;
91+
return false;
9192
}
9293

9394
DEBUG_WEBSOCKETS("[WS][%d][sendFrame] ------- send massage frame -------\n", client->num);
@@ -104,6 +105,7 @@ void WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * pay
104105
uint8_t * headerPtr;
105106
uint8_t * payloadPtr = payload;
106107
bool useInternBuffer = false;
108+
bool ret = true;
107109

108110
// calculate header Size
109111
if(length < 126) {
@@ -231,14 +233,20 @@ void WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * pay
231233
// header has be added to payload
232234
// payload is forced to reserved 14 Byte but we may not need all based on the length and mask settings
233235
// offset in payload is calculatetd 14 - headerSize
234-
client->tcp->write(&payloadPtr[(WEBSOCKETS_MAX_HEADER_SIZE - headerSize)], (length + headerSize));
236+
if(client->tcp->write(&payloadPtr[(WEBSOCKETS_MAX_HEADER_SIZE - headerSize)], (length + headerSize)) != (length + headerSize)) {
237+
ret = false;
238+
}
235239
} else {
236240
// send header
237-
client->tcp->write(&buffer[0], headerSize);
241+
if(client->tcp->write(&buffer[0], headerSize) != headerSize) {
242+
ret = false;
243+
}
238244

239245
if(payloadPtr && length > 0) {
240246
// send payload
241-
client->tcp->write(&payloadPtr[0], length);
247+
if(client->tcp->write(&payloadPtr[0], length) != length) {
248+
ret = false;
249+
}
242250
}
243251
}
244252

@@ -250,6 +258,7 @@ void WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * pay
250258
}
251259
#endif
252260

261+
return ret;
253262
}
254263

255264
/**

src/WebSockets.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ class WebSockets {
204204
virtual void messageRecived(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length);
205205

206206
void clientDisconnect(WSclient_t * client, uint16_t code, char * reason = NULL, size_t reasonLen = 0);
207-
void sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload = NULL, size_t length = 0, bool mask = false, bool fin = true, bool headerToPayload = false);
207+
bool sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * payload = NULL, size_t length = 0, bool mask = false, bool fin = true, bool headerToPayload = false);
208208

209209
void headerDone(WSclient_t * client);
210210

src/WebSocketsClient.cpp

+18-14
Original file line numberDiff line numberDiff line change
@@ -151,30 +151,32 @@ void WebSocketsClient::onEvent(WebSocketClientEvent cbEvent) {
151151
* @param payload uint8_t *
152152
* @param length size_t
153153
* @param headerToPayload bool (see sendFrame for more details)
154+
* @return true if ok
154155
*/
155-
void WebSocketsClient::sendTXT(uint8_t * payload, size_t length, bool headerToPayload) {
156+
bool WebSocketsClient::sendTXT(uint8_t * payload, size_t length, bool headerToPayload) {
156157
if(length == 0) {
157158
length = strlen((const char *) payload);
158159
}
159160
if(clientIsConnected(&_client)) {
160-
sendFrame(&_client, WSop_text, payload, length, true, true, headerToPayload);
161+
return sendFrame(&_client, WSop_text, payload, length, true, true, headerToPayload);
161162
}
163+
return false;
162164
}
163165

164-
void WebSocketsClient::sendTXT(const uint8_t * payload, size_t length) {
165-
sendTXT((uint8_t *) payload, length);
166+
bool WebSocketsClient::sendTXT(const uint8_t * payload, size_t length) {
167+
return sendTXT((uint8_t *) payload, length);
166168
}
167169

168-
void WebSocketsClient::sendTXT(char * payload, size_t length, bool headerToPayload) {
169-
sendTXT((uint8_t *) payload, length, headerToPayload);
170+
bool WebSocketsClient::sendTXT(char * payload, size_t length, bool headerToPayload) {
171+
return sendTXT((uint8_t *) payload, length, headerToPayload);
170172
}
171173

172-
void WebSocketsClient::sendTXT(const char * payload, size_t length) {
173-
sendTXT((uint8_t *) payload, length);
174+
bool WebSocketsClient::sendTXT(const char * payload, size_t length) {
175+
return sendTXT((uint8_t *) payload, length);
174176
}
175177

176-
void WebSocketsClient::sendTXT(String & payload) {
177-
sendTXT((uint8_t *) payload.c_str(), payload.length());
178+
bool WebSocketsClient::sendTXT(String & payload) {
179+
return sendTXT((uint8_t *) payload.c_str(), payload.length());
178180
}
179181

180182
/**
@@ -183,15 +185,17 @@ void WebSocketsClient::sendTXT(String & payload) {
183185
* @param payload uint8_t *
184186
* @param length size_t
185187
* @param headerToPayload bool (see sendFrame for more details)
188+
* @return true if ok
186189
*/
187-
void WebSocketsClient::sendBIN(uint8_t * payload, size_t length, bool headerToPayload) {
190+
bool WebSocketsClient::sendBIN(uint8_t * payload, size_t length, bool headerToPayload) {
188191
if(clientIsConnected(&_client)) {
189-
sendFrame(&_client, WSop_binary, payload, length, true, true, headerToPayload);
192+
return sendFrame(&_client, WSop_binary, payload, length, true, true, headerToPayload);
190193
}
194+
return false;
191195
}
192196

193-
void WebSocketsClient::sendBIN(const uint8_t * payload, size_t length) {
194-
sendBIN((uint8_t *) payload, length);
197+
bool WebSocketsClient::sendBIN(const uint8_t * payload, size_t length) {
198+
return sendBIN((uint8_t *) payload, length);
195199
}
196200

197201
/**

src/WebSocketsClient.h

+8-8
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,14 @@ class WebSocketsClient: private WebSockets {
5757

5858
void onEvent(WebSocketClientEvent cbEvent);
5959

60-
void sendTXT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
61-
void sendTXT(const uint8_t * payload, size_t length = 0);
62-
void sendTXT(char * payload, size_t length = 0, bool headerToPayload = false);
63-
void sendTXT(const char * payload, size_t length = 0);
64-
void sendTXT(String & payload);
65-
66-
void sendBIN(uint8_t * payload, size_t length, bool headerToPayload = false);
67-
void sendBIN(const uint8_t * payload, size_t length);
60+
bool sendTXT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
61+
bool sendTXT(const uint8_t * payload, size_t length = 0);
62+
bool sendTXT(char * payload, size_t length = 0, bool headerToPayload = false);
63+
bool sendTXT(const char * payload, size_t length = 0);
64+
bool sendTXT(String & payload);
65+
66+
bool sendBIN(uint8_t * payload, size_t length, bool headerToPayload = false);
67+
bool sendBIN(const uint8_t * payload, size_t length);
6868

6969
void disconnect(void);
7070

src/WebSocketsServer.cpp

+44-30
Original file line numberDiff line numberDiff line change
@@ -124,73 +124,80 @@ void WebSocketsServer::onEvent(WebSocketServerEvent cbEvent) {
124124
* @param payload uint8_t *
125125
* @param length size_t
126126
* @param headerToPayload bool (see sendFrame for more details)
127+
* @return true if ok
127128
*/
128-
void WebSocketsServer::sendTXT(uint8_t num, uint8_t * payload, size_t length, bool headerToPayload) {
129+
bool WebSocketsServer::sendTXT(uint8_t num, uint8_t * payload, size_t length, bool headerToPayload) {
129130
if(num >= WEBSOCKETS_SERVER_CLIENT_MAX) {
130-
return;
131+
return false;
131132
}
132133
if(length == 0) {
133134
length = strlen((const char *) payload);
134135
}
135136
WSclient_t * client = &_clients[num];
136137
if(clientIsConnected(client)) {
137-
sendFrame(client, WSop_text, payload, length, false, true, headerToPayload);
138+
return sendFrame(client, WSop_text, payload, length, false, true, headerToPayload);
138139
}
140+
return false;
139141
}
140142

141-
void WebSocketsServer::sendTXT(uint8_t num, const uint8_t * payload, size_t length) {
142-
sendTXT(num, (uint8_t *) payload, length);
143+
bool WebSocketsServer::sendTXT(uint8_t num, const uint8_t * payload, size_t length) {
144+
return sendTXT(num, (uint8_t *) payload, length);
143145
}
144146

145-
void WebSocketsServer::sendTXT(uint8_t num, char * payload, size_t length, bool headerToPayload) {
146-
sendTXT(num, (uint8_t *) payload, length, headerToPayload);
147+
bool WebSocketsServer::sendTXT(uint8_t num, char * payload, size_t length, bool headerToPayload) {
148+
return sendTXT(num, (uint8_t *) payload, length, headerToPayload);
147149
}
148150

149-
void WebSocketsServer::sendTXT(uint8_t num, const char * payload, size_t length) {
150-
sendTXT(num, (uint8_t *) payload, length);
151+
bool WebSocketsServer::sendTXT(uint8_t num, const char * payload, size_t length) {
152+
return sendTXT(num, (uint8_t *) payload, length);
151153
}
152154

153-
void WebSocketsServer::sendTXT(uint8_t num, String & payload) {
154-
sendTXT(num, (uint8_t *) payload.c_str(), payload.length());
155+
bool WebSocketsServer::sendTXT(uint8_t num, String & payload) {
156+
return sendTXT(num, (uint8_t *) payload.c_str(), payload.length());
155157
}
156158

157159
/**
158160
* send text data to client all
159161
* @param payload uint8_t *
160162
* @param length size_t
161163
* @param headerToPayload bool (see sendFrame for more details)
164+
* @return true if ok
162165
*/
163-
void WebSocketsServer::broadcastTXT(uint8_t * payload, size_t length, bool headerToPayload) {
166+
bool WebSocketsServer::broadcastTXT(uint8_t * payload, size_t length, bool headerToPayload) {
164167
WSclient_t * client;
168+
bool ret = true;
165169
if(length == 0) {
166170
length = strlen((const char *) payload);
167171
}
168172

169173
for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
170174
client = &_clients[i];
171175
if(clientIsConnected(client)) {
172-
sendFrame(client, WSop_text, payload, length, false, true, headerToPayload);
176+
if(!sendFrame(client, WSop_text, payload, length, false, true, headerToPayload)) {
177+
ret = false;
178+
}
173179
}
174180
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
175181
delay(0);
176182
#endif
177183
}
184+
return ret;
178185
}
179186

180-
void WebSocketsServer::broadcastTXT(const uint8_t * payload, size_t length) {
181-
broadcastTXT((uint8_t *) payload, length);
187+
bool WebSocketsServer::broadcastTXT(const uint8_t * payload, size_t length) {
188+
return broadcastTXT((uint8_t *) payload, length);
182189
}
183190

184-
void WebSocketsServer::broadcastTXT(char * payload, size_t length, bool headerToPayload) {
185-
broadcastTXT((uint8_t *) payload, length, headerToPayload);
191+
bool WebSocketsServer::broadcastTXT(char * payload, size_t length, bool headerToPayload) {
192+
return broadcastTXT((uint8_t *) payload, length, headerToPayload);
186193
}
187194

188-
void WebSocketsServer::broadcastTXT(const char * payload, size_t length) {
189-
broadcastTXT((uint8_t *) payload, length);
195+
bool WebSocketsServer::broadcastTXT(const char * payload, size_t length) {
196+
return broadcastTXT((uint8_t *) payload, length);
190197
}
191198

192-
void WebSocketsServer::broadcastTXT(String & payload) {
193-
broadcastTXT((uint8_t *) payload.c_str(), payload.length());
199+
bool WebSocketsServer::broadcastTXT(String & payload) {
200+
return broadcastTXT((uint8_t *) payload.c_str(), payload.length());
194201
}
195202

196203
/**
@@ -199,42 +206,49 @@ void WebSocketsServer::broadcastTXT(String & payload) {
199206
* @param payload uint8_t *
200207
* @param length size_t
201208
* @param headerToPayload bool (see sendFrame for more details)
209+
* @return true if ok
202210
*/
203-
void WebSocketsServer::sendBIN(uint8_t num, uint8_t * payload, size_t length, bool headerToPayload) {
211+
bool WebSocketsServer::sendBIN(uint8_t num, uint8_t * payload, size_t length, bool headerToPayload) {
204212
if(num >= WEBSOCKETS_SERVER_CLIENT_MAX) {
205-
return;
213+
return false;
206214
}
207215
WSclient_t * client = &_clients[num];
208216
if(clientIsConnected(client)) {
209-
sendFrame(client, WSop_binary, payload, length, false, true, headerToPayload);
217+
return sendFrame(client, WSop_binary, payload, length, false, true, headerToPayload);
210218
}
219+
return false;
211220
}
212221

213-
void WebSocketsServer::sendBIN(uint8_t num, const uint8_t * payload, size_t length) {
214-
sendBIN(num, (uint8_t *) payload, length);
222+
bool WebSocketsServer::sendBIN(uint8_t num, const uint8_t * payload, size_t length) {
223+
return sendBIN(num, (uint8_t *) payload, length);
215224
}
216225

217226
/**
218227
* send binary data to client all
219228
* @param payload uint8_t *
220229
* @param length size_t
221230
* @param headerToPayload bool (see sendFrame for more details)
231+
* @return true if ok
222232
*/
223-
void WebSocketsServer::broadcastBIN(uint8_t * payload, size_t length, bool headerToPayload) {
233+
bool WebSocketsServer::broadcastBIN(uint8_t * payload, size_t length, bool headerToPayload) {
224234
WSclient_t * client;
235+
bool ret = true;
225236
for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
226237
client = &_clients[i];
227238
if(clientIsConnected(client)) {
228-
sendFrame(client, WSop_binary, payload, length, false, true, headerToPayload);
239+
if(!sendFrame(client, WSop_binary, payload, length, false, true, headerToPayload)) {
240+
ret = false;
241+
}
229242
}
230243
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
231244
delay(0);
232245
#endif
233246
}
247+
return ret;
234248
}
235249

236-
void WebSocketsServer::broadcastBIN(const uint8_t * payload, size_t length) {
237-
broadcastBIN((uint8_t *) payload, length);
250+
bool WebSocketsServer::broadcastBIN(const uint8_t * payload, size_t length) {
251+
return broadcastBIN((uint8_t *) payload, length);
238252
}
239253

240254
/**

src/WebSocketsServer.h

+17-17
Original file line numberDiff line numberDiff line change
@@ -57,23 +57,23 @@ class WebSocketsServer: private WebSockets {
5757
void onEvent(WebSocketServerEvent cbEvent);
5858

5959

60-
void sendTXT(uint8_t num, uint8_t * payload, size_t length = 0, bool headerToPayload = false);
61-
void sendTXT(uint8_t num, const uint8_t * payload, size_t length = 0);
62-
void sendTXT(uint8_t num, char * payload, size_t length = 0, bool headerToPayload = false);
63-
void sendTXT(uint8_t num, const char * payload, size_t length = 0);
64-
void sendTXT(uint8_t num, String & payload);
65-
66-
void broadcastTXT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
67-
void broadcastTXT(const uint8_t * payload, size_t length = 0);
68-
void broadcastTXT(char * payload, size_t length = 0, bool headerToPayload = false);
69-
void broadcastTXT(const char * payload, size_t length = 0);
70-
void broadcastTXT(String & payload);
71-
72-
void sendBIN(uint8_t num, uint8_t * payload, size_t length, bool headerToPayload = false);
73-
void sendBIN(uint8_t num, const uint8_t * payload, size_t length);
74-
75-
void broadcastBIN(uint8_t * payload, size_t length, bool headerToPayload = false);
76-
void broadcastBIN(const uint8_t * payload, size_t length);
60+
bool sendTXT(uint8_t num, uint8_t * payload, size_t length = 0, bool headerToPayload = false);
61+
bool sendTXT(uint8_t num, const uint8_t * payload, size_t length = 0);
62+
bool sendTXT(uint8_t num, char * payload, size_t length = 0, bool headerToPayload = false);
63+
bool sendTXT(uint8_t num, const char * payload, size_t length = 0);
64+
bool sendTXT(uint8_t num, String & payload);
65+
66+
bool broadcastTXT(uint8_t * payload, size_t length = 0, bool headerToPayload = false);
67+
bool broadcastTXT(const uint8_t * payload, size_t length = 0);
68+
bool broadcastTXT(char * payload, size_t length = 0, bool headerToPayload = false);
69+
bool broadcastTXT(const char * payload, size_t length = 0);
70+
bool broadcastTXT(String & payload);
71+
72+
bool sendBIN(uint8_t num, uint8_t * payload, size_t length, bool headerToPayload = false);
73+
bool sendBIN(uint8_t num, const uint8_t * payload, size_t length);
74+
75+
bool broadcastBIN(uint8_t * payload, size_t length, bool headerToPayload = false);
76+
bool broadcastBIN(const uint8_t * payload, size_t length);
7777

7878
void disconnect(void);
7979
void disconnect(uint8_t num);

0 commit comments

Comments
 (0)