MCPcopy Create free account
hub / github.com/acl-dev/acl / send_frame_data

Method send_frame_data

lib_acl_cpp/src/http/websocket.cpp:180–218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

178//////////////////////////////////////////////////////////////////////////////
179
180bool websocket::send_frame_data(void* data, size_t len)
181{
182 if (!header_sent_) {
183 header_sent_ = true;
184 make_frame_header();
185 if (client_.write(header_buf_, header_len_) == -1) {
186 logger_error("write header error %s, len: %d",
187 last_serror(), (int) header_len_);
188 return false;
189 }
190 }
191
192 if (data == NULL || len == 0) {
193 return true;
194 }
195
196 // senity check
197 if (payload_nsent_ + len > header_.payload_len) {
198 logger_error("data len overflow=%llu > %llu, %llu, %lu",
199 payload_nsent_ + len, header_.payload_len,
200 payload_nsent_, (unsigned long) len);
201 return false;
202 }
203
204 if (header_.mask) {
205 unsigned char* mask = (unsigned char*) &header_.masking_key;
206 for (size_t i = 0; i < len; i++) {
207 ((char*) data)[i] ^= mask[(payload_nsent_ + i) % 4];
208 }
209 }
210
211 if (client_.write(data, len) == -1) {
212 logger_error("write frame data error %s", last_serror());
213 return false;
214 }
215
216 payload_nsent_ += len;
217 return true;
218}
219
220bool websocket::send_frame_data(const char* str)
221{

Callers 15

doPingMethod · 0.80
doMsgMethod · 0.80
send_fileFunction · 0.80
doPingMethod · 0.80
doMsgMethod · 0.80
sendBannderMethod · 0.80
sendBinaryMethod · 0.80
sendTextMethod · 0.80
sendPongMethod · 0.80
sendPingMethod · 0.80
ws_pingFunction · 0.80
ws_msgFunction · 0.80

Calls 2

last_serrorFunction · 0.50
writeMethod · 0.45

Tested by

no test coverage detected