: public TCPConnection {
public:
std::string message = "";
void start() override {
auto StrongThis = shared_from_this();
boost::asio::async_write(_socket, boost::asio::buffer(message),
StrongThis {
if (error) {
std::cout << "Failed to send message\n";
} else {
std::cout << "Sent " << bytesTransfered << "bytes of data!!!!\n";
}
});
}
using TCPConnection::TCPConnection;
};
class LocalChessServer : public TCPServer {
public:
using TCPServer::TCPServer;
protected:
void startAccept() override {
auto connection = LocalTCPConnection::Create(ioContext);
acceptor.async_accept(connection->socket(), connection, this{
if (!error){
//acceptConnection(this);
connection->start();
}
startAccept();
});
}
};
}
int main(int argc, char* argv[]) {
Chess::LocalChessServer server{Chess::IPV::V6, 1337};
server.run();
}
Почему тут используется TCPConnection::start(), а не LocalTCPConnection::start() ? Как починить?
А что не работает?
Может просто запускают локальный шахматный сервер, не хотят светить наружу порт
startAccept
King's Pawn Opening
у вас видимо копирование лямбду попортило. там на самом деле должно быть [this] { if (!error) { ... ?
В представленном коде вся реализация LocalTCPConnection или что-то пропущено?
если так, то локальный connection в этой лямбде не виден, используется какой-то другой (член TCPConnection?)
auto connection = LocalTCPConnection::Create(ioContext); объект какого класса вы ожидаете, что тут будет создан?
LocalTCPConnection
А где реализация Create для этого?
там в теории не важно, т.к. start виртуальный
А всё, поняла, спасибо
Обсуждают сегодня