Я хочу использовать функцию сервера httplib c++ для отправки контента с помощью поставщика контента.
Но я хочу использовать ее с интеллектуальным указателем, поскольку предыдущие вычисления выполняются перед отправкой.
Если я упрощу пример httplib, я сделаю следующее:
const size_t DATA_CHUNK_SIZE = 4;
svr.Get("/stream", [&](const Request &req, Response &res) {
std::size_t data_length = 16;
auto data = std::make_shared_for_overwrite(data_length);
// doing calculation which potentially fail
if (!create_data_string(data, data_length)) {
// return an error
return;
}
res.set_content_provider(
data_length, // 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 */ });
});
Метод работает и протестирован на реальном контенте, но я не знаю, лучше ли его использовать.
Что вы сделаете? думать? Мне нужна проверка кода этого фрагмента кода.
Обновление:
После ответа Red.Wave я обновите сценарий отправки содержимого с помощью std::string:
const size_t DATA_CHUNK_SIZE = 4;
svr.Get("/stream", [&](const Request &req, Response &res) {
std::string data;
data.resize(16);
// doing calculation which potentially fail
if (!create_data_string(data)) {
// return an error
return;
}
res.set_content_provider(
data.size(), // Content length
"text/plain", // Content type
[&, data /*
Подробнее здесь: https://stackoverflow.com/questions/790 ... rt-pointer
Httplib отправляет контент с помощью поставщика контента и интеллектуального указателя ⇐ C++
Программы на C++. Форум разработчиков
1728851052
Anonymous
Я хочу использовать функцию сервера httplib c++ для отправки контента с помощью поставщика контента.
Но я хочу использовать ее с интеллектуальным указателем, поскольку предыдущие вычисления выполняются перед отправкой.
Если я упрощу пример httplib, я сделаю следующее:
const size_t DATA_CHUNK_SIZE = 4;
svr.Get("/stream", [&](const Request &req, Response &res) {
std::size_t data_length = 16;
auto data = std::make_shared_for_overwrite(data_length);
// doing calculation which potentially fail
if (!create_data_string(data, data_length)) {
// return an error
return;
}
res.set_content_provider(
data_length, // 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 */ });
});
Метод работает и протестирован на реальном контенте, но я не знаю, лучше ли его использовать.
Что вы сделаете? думать? Мне нужна проверка кода этого фрагмента кода.
[b]Обновление:[/b]
После ответа Red.Wave я обновите сценарий отправки содержимого с помощью std::string:
const size_t DATA_CHUNK_SIZE = 4;
svr.Get("/stream", [&](const Request &req, Response &res) {
std::string data;
data.resize(16);
// doing calculation which potentially fail
if (!create_data_string(data)) {
// return an error
return;
}
res.set_content_provider(
data.size(), // Content length
"text/plain", // Content type
[&, data /*
Подробнее здесь: [url]https://stackoverflow.com/questions/79079675/httplib-send-content-with-the-content-provider-and-smart-pointer[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия