C++ Boost Asio удаление хранилища Sesion-соединение в векторе на сервереC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++ Boost Asio удаление хранилища Sesion-соединение в векторе на сервере

Сообщение Anonymous »


У меня две совмещенные проблемы
[*]Я не знаю, как завершить работу функции чтения, если она не получила никаких данных, прервать соединение и уведомить сервер. [*]При удалении сеанса класса из вектора m_storageSession, расположенного на сервере классов, после завершения получения данных std::vector m_StorageSession;
void Server::startAcceptNewConnectionAsync() { m_Acceptor.async_accept( [это](boost::system::error_code aError_code, boost::asio::ip::tcp::socket aSocket) { если (!aError_code) { boost::asio::ip::tcp::endpoint endpoint = aSocket.remote_endpoint(); std::shared_ptr newSession = std::make_shared (это, m_SessionID.GetFreeID(), endpoint.address().to_string(), endpoint.port(), std::move(aSocket)); newSession->start(); m_StorageSession.push_back(newSession); } startAcceptNewConnectionAsync(); }); } void Server::notificationAbautCloseConnectionSession(const size_t& theIdSession) { for (int i = 0; i getIdSession() == theIdSession) { m_SessionID.DeleteSession(m_StorageSession->getIdSession()); m_StorageSession->закрыть(); перерыв; } } } Сессия::~Сессия() { если (m_Owner) { m_Owner-> notificationAbautCloseConnectionSession (m_IdSession); // Сервер*m_Владелец } } void Session::do_read() { автоматически себя (shared_from_this()); m_Socket.async_read_some(boost::asio::buffer(m_FrameCommunicationDataIn.getBuforData() + m_FrameCommunicationDataIn.getIndexSaveDataInBuffor(), m_FrameCommunicationDataIn.getSizeBufforData()), [this, self](boost::system::error_code ec, std::size_t length) { если (!ec) { если (длина!= 0) { m_FrameCommunicationDataIn.setAmauntCopyDataIn(длина); новыеДанныеИзСессии(); } еще { это->~Сессия(); } do_read(); } }); } Я хочу, чтобы сеанс уведомил сервер о том, что он завершил получение данных и сервер удалил их из вектора.
Ответить

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

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

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

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

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