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

Method peek_frame_data

lib_acl_cpp/src/http/websocket.cpp:649–680  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

647}
648
649int websocket::peek_frame_data(char* buf, size_t size)
650{
651 if (payload_nread_ >= header_.payload_len) {
652 reset();
653 return 0;
654 }
655
656 if (header_.payload_len < payload_nread_ + size) {
657 size = (size_t) (header_.payload_len - payload_nread_);
658 }
659
660 // ���δ������Ҫ��������Ҷ���������Ϊ�գ��򷵻�-1
661 // readn_peek ����������Ϊ true Ҫ���ڲ��Զ���ջ�����
662 if (!client_.readn_peek(peek_buf_, size, true) && peek_buf_->empty()) {
663 return -1;
664 }
665
666 acl_assert(!peek_buf_->empty());
667
668 size_t len = peek_buf_->size();
669 memcpy(buf, peek_buf_->c_str(), len);
670
671 if (header_.mask) {
672 unsigned char* mask = (unsigned char*) &header_.masking_key;
673 for (size_t i = 0; i < len; i++) {
674 buf[i] ^= mask[(payload_nread_ + i) % 4];
675 }
676 }
677
678 payload_nread_ += len;
679 return (int) len;
680}
681
682int websocket::peek_frame_data(string& buf, size_t size)
683{

Callers 4

handle_ws_pingMethod · 0.80
handle_ws_pongMethod · 0.80
handle_ws_otherMethod · 0.80
handle_ws_dataMethod · 0.80

Calls 5

memcpyFunction · 0.85
readn_peekMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected