communi / libcommuni

A cross-platform IRC framework for Qt
https://communi.github.io
BSD 3-Clause "New" or "Revised" License
83 stars 37 forks source link

Add IrcSession::closeLater() #11

Closed jpnurmi closed 11 years ago

jpnurmi commented 11 years ago

Inspired by QObject::deleteLater(), consider something like this:

if (session->isConnected()) {
    session->sendCommand(IrcCommand::createQuit(reason));
    connect(session, SIGNAL(disconnected()), session, SLOT(deleteLater()));
    connect(session, SIGNAL(socketError(QAbstractSocket::SocketError)), session, SLOT(deleteLater()));
    QTimer::singleShot(timeout, session, SLOT(deleteLater()));
} else {
    session->deleteLater();
}

Open questions:

jpnurmi commented 11 years ago

C++:

session->quit(reason);
QTimer::singleShot(timeout, session, SLOT(deleteLater()));

QML:

session.quit(reason);
session.destroy(timeout);
jpnurmi commented 11 years ago

Document the recommended approach in IrcConnection::close() docs.