本文整理汇总了C++中buffer::string_data方法的典型用法代码示例。如果您正苦于以下问题:C++ buffer::string_data方法的具体用法?C++ buffer::string_data怎么用?C++ buffer::string_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buffer
的用法示例。
在下文中一共展示了buffer::string_data方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: read_message
bool client_handler::read_message(handler *h, buffer &buf) {
int plen = buf.length();
Log::d("read_message1");
if (serv->read_chunk(h, &buf)) {
Log::d("fd(" + inttostr(h->fd.get_fd()) + ") asked for disconnection");
disconnect();
return false;
}
Log::d("read_message2");
if (message_type == NOT_EVALUATED) {
// recalc message len
int lb = find_double_line_break(buf.string_data(), plen);
if (lb != -1) {
//Log::d("plen is " + inttostr(plen) + ", lb is " + inttostr(lb) + " in \n\"" + buf.string_data() + "\"");
std::string content_length_str;
int len;
if (extract_header(buf.string_data(), lb, "Content-Length", content_length_str)) {
len = strtoint(content_length_str);
message_type = VIA_CONTENT_LENGTH;
} else {
len = 0;
message_type = extract_header(buf.string_data(), lb, "Transfer-Encoding", content_length_str)
? VIA_TRANSFER_ENCODING : WITHOUT_BODY;
}
message_len = len + lb;
}
}
if (message_type != HTTPS_MODE) {
Log::d("read_message(" + inttostr(buf.length()) + ", " + inttostr(message_len) + ")");
}
if (message_type == NOT_EVALUATED) {
return false;
}
if (message_type == VIA_TRANSFER_ENCODING) {
while (buf.length() > message_len) {
/*Log::d("kek is " + inttostr((int) buf.string_data()[message_len - 1]) + " " +
inttostr((int) buf.string_data()[message_len]) + " " +
inttostr((int) buf.string_data()[message_len + 1]));*/
if (buf.string_data()[message_len] == '0') {
return true;
}
size_t linebreak = buf.string_data().find("\r\n", (size_t) message_len);
if (linebreak != std::string::npos) {
std::string chunklen = buf.string_data().substr((size_t) message_len, linebreak - message_len);
Log::d("Next chunk len is " + chunklen);
message_len += chunklen.length() + hextoint(chunklen) + 4;
} else {
break;
}
}
return false;
} else {
return buf.length() == message_len;
}
}