Как передать char в websocket::stream_base::decorator в лямда функции?
У меня есть не плохо работающий код для подключения к WS серверу Собственно меня интересует вот эта часть
ws.set_option(websocket::stream_base::decorator([](websocket::request_type& req) {
req.set("Api-Key", "28369a57-7476-4d2c-9b9d-574d4282b428");
})
);
Сейчас API ключ "зашит" - я хочу передать его как char и установить, но websocket::stream_base::decorator ожидает лямда функцию только с 1 аргументом
websocket::request_type& req
Если я пытаюсь передать ключь так то получаю ошибку
read(char* buf, char* key_input) {
try
{
boost::beast::string_view key = std::string(key_input);
//todo
ws.set_option(websocket::stream_base::decorator([](websocket::request_type& req, boost::beast::string_view& key) {
req.set("Api-Key", "28369a57-7476-4d2c-9b9d-574d4282b428");
})
);
То я получаю ошибку
cannot convert from 'read::<lambda_277599cb9181424de88ebeceef4ed4a0>' to 'boost::beast::websocket::stream_base::decorator'
Собственно как я должен передавать ключ в лямда функцию в таком случае не пойму?
Ответы (1 шт):
Может определить функцию, которая принимает ключ, и на выходе даёт лямбду с захваченым ключом?
auto decorator_with_key(boost::beast::string_view& key) {
return [key](websocket::request_type& req) {
req.set("Api-Key", key);
};
}
И затем использовать как
ws.set_option(websocket::stream_base::decorator(decorator_with_key("28369a57-7476-4d2c-9b9d-574d4282b428")));