Расширения QXMPP не вызывают

Я делаю один клиент xmpp, и у меня есть много сомнений в расширениях..

Мне нужно было получить список старых сообщений с одним пользователем, так что... Я использую класс QXmppArchiveManager для этого. Так что я делаю один класс так:

...

class QXmppArchiveManager;
class MessageController : public QXmppClient
{
...

private:
    QNetworkAccessManager *nam_;
    QXmppClient *xmppClient_;
    QXmppArchiveManager *archiveMng_;
    QDateTime m_startDate;
    QDateTime m_endDate;

protected slots:
    virtual void onConnected();
    virtual void onMessageReceived(const QXmppMessage &);
    virtual void archiveListReceived(const QList<QXmppArchiveChat> &chats, const QXmppResultSetReply &rsmReply);
}

И реализует

...
void MessageController::onConnected() //before client connects listener...
{

    QXmppResultSetQuery rsmQuery;
    rsmQuery.setMax(0);
    m_startDate = QDateTime::currentDateTime().addDays(-201);
    m_endDate = QDateTime::currentDateTime();

    archiveMng_->listCollections("", m_startDate, m_endDate, rsmQuery);

}

void MessageController::connect()
{

    xmppClient_ = new QXmppClient();
    QObject::connect( xmppClient_, SIGNAL( connected() ), this, SLOT( onConnected() ) );
    QObject::connect( xmppClient_, SIGNAL( messageReceived( QXmppMessage ) ), this, SLOT( onMessageReceived( QXmppMessage ) ) );

    archiveMng_ = new QXmppArchiveManager;
    xmppClient_->addExtension(archiveMng_); 

    QObject::connect(archiveMng_, SIGNAL(archiveChatReceived(QXmppArchiveChat, QXmppResultSetReply)),
                    SLOT(archiveChatReceived(QXmppArchiveChat, QXmppResultSetReply))); 

    QObject::connect(archiveMng_, SIGNAL(archiveListReceived(QList<QXmppArchiveChat>, QXmppResultSetReply)),
                SLOT(archiveListReceived(QList<QXmppArchiveChat>, QXmppResultSetReply))); 

    xmppClient_->logger()->setLoggingType( QXmppLogger::StdoutLogging );  

    QXmppConfiguration config;

    config.setDomain("(censored)");
    config.setHost("(censored)");
    config.setPort(5222);
    config.setUser((censored));
    config.setPassword((censored));
    config.setResource("Android-Client");

    xmppClient_->connectToServer( config );

}

void MessageController::archiveChatReceived(const QXmppArchiveChat &chat, const QXmppResultSetReply &rsmReply)
{
    qDebug() << "archiveChatReceived";
}

void MessageController::archiveListReceived(const QList<QXmppArchiveChat> &chats, const QXmppResultSetReply &rsmReply)
{
    qDebug() << "archiveListReceived";
}

Проблема в том, что... этот код не вызывается слушателями, в этом случае не вызывается "archiveListReceived".

Как я могу это исправить?

Спасибо

1 ответ

Я обнаружил проблему, в этом случае мой сервер openfire xmpp не работает для архива, так что... Я устанавливаю плагин open-archive для него!

Другие вопросы по тегам