Но я хочу использовать ее с интеллектуальным указателем, поскольку предыдущие вычисления выполняются перед отправкой.
Если я упрощу пример httplib, я сделаю следующее:
Код: Выделить всё
const size_t DATA_CHUNK_SIZE = 4;
svr.Get("/stream", [&](const Request &req, Response &res) {
auto data = std::make_shared_for_overwrite(DATA_CHUNK_SIZE);
// doing calculation which potentially fail
if (!create_data_string(data, DATA_CHUNK_SIZE)) {
// return an error
return;
}
res.set_content_provider(
DATA_CHUNK_SIZE, // Content length
"text/plain", // Content type
[&, data](size_t offset, size_t length, DataSink &sink) {
sink.write(&data[offset], std::min(length, DATA_CHUNK_SIZE));
return true; // return 'false' if you want to cancel the process.
},
[data](bool success) { /* data will be released after the call */ });
});
Что вы сделаете? думать? Мне нужна проверка кода этого фрагмента кода.
Подробнее здесь: https://stackoverflow.com/questions/790 ... rt-pointer
Мобильная версия