Расширения 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 для него!