Асинхронный обработчик Boost не вызываетсяC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Асинхронный обработчик Boost не вызывается

Сообщение Anonymous »

#include
#include
Я создаю пару клиент-сервер (в настоящее время простой эхо-сервер) ) и думаю, что у меня, должно быть, проблема с дизайном. Следующий код работает на моей стороне сервера, но не работает на моей стороне клиента.
Моя функция рукопожатия такая (на стороне сервера я использую bssl ::stream_base::server) :

Код: Выделить всё

void CSClient::handshake() {
mSocket.async_handshake(bssl::stream_base::client,
std::bind(&CSClient::handleHandshake, this, std::placeholders::_1));
}
Мой обработчик:

Код: Выделить всё

void CSClient::handleHandshake(bsys::error_code const& ec) {
if (!ec) {
// allow only once at a time
startClientThreadMxt.lock();
std::thread clientThread(&CSClient::startClientThread, this, std::move(mSocket));
clientThread.join();
// thread started
startClientThreadMxt.unlock();
} else {
std::string msg{"Handshake failed: "};
msg += ec.what();
DUAL_LOG_FATAL_MSG(mLog, mDebugLog, msg);
exit(FATAL_ERROR_SSL_HANDSHAKE_FAILED);
}
}

void CSClient::startClientThread(bssl::stream socket) {
std::make_sharedstd::move(socket),
std::bind(&CSClient::pollIOContext,this),
&mShutdown, mLog,mDebugLog)->start();
}
Поток успешно запускается, и вот моя процедура запуска:

Код: Выделить всё

void CSClientThread::start() {
// if we are shutting down, this doesn't need to be done
if (*mShutdown) {
return;
}
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78457008/boost-async-handler-not-being-called[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»