forked from blue/squawk
offline avatars in mucs
This commit is contained in:
parent
29c7d31c89
commit
21c7d65027
16 changed files with 225 additions and 45 deletions
|
@ -675,7 +675,7 @@ bool Core::Archive::dropAvatar(const std::string& resource)
|
|||
}
|
||||
}
|
||||
|
||||
bool Core::Archive::setAvatar(const QByteArray& data, bool generated, const QString& resource)
|
||||
bool Core::Archive::setAvatar(const QByteArray& data, AvatarInfo& newInfo, bool generated, const QString& resource)
|
||||
{
|
||||
if (!opened) {
|
||||
throw Closed("setAvatar", jid.toStdString());
|
||||
|
@ -726,7 +726,9 @@ bool Core::Archive::setAvatar(const QByteArray& data, bool generated, const QStr
|
|||
|
||||
MDB_val lmdbKey, lmdbData;
|
||||
QByteArray value;
|
||||
AvatarInfo newInfo(ext, newHash, generated);
|
||||
newInfo.type = ext;
|
||||
newInfo.hash = newHash;
|
||||
newInfo.autogenerated = generated;
|
||||
newInfo.serialize(&value);
|
||||
lmdbKey.mv_size = res.size();
|
||||
lmdbKey.mv_data = (char*)res.c_str();
|
||||
|
@ -802,6 +804,33 @@ bool Core::Archive::readAvatarInfo(Core::Archive::AvatarInfo& target, const std:
|
|||
}
|
||||
}
|
||||
|
||||
void Core::Archive::readAllResourcesAvatars(std::map<QString, AvatarInfo>& data) const
|
||||
{
|
||||
if (!opened) {
|
||||
throw Closed("readAllResourcesAvatars", jid.toStdString());
|
||||
}
|
||||
|
||||
int rc;
|
||||
MDB_val lmdbKey, lmdbData;
|
||||
MDB_txn *txn;
|
||||
MDB_cursor* cursor;
|
||||
mdb_txn_begin(environment, NULL, MDB_RDONLY, &txn);
|
||||
mdb_cursor_open(txn, avatars, &cursor);
|
||||
rc = mdb_cursor_get(cursor, &lmdbKey, &lmdbData, MDB_FIRST);
|
||||
|
||||
do {
|
||||
std::string sId((char*)lmdbKey.mv_data, lmdbKey.mv_size);
|
||||
QString res(sId.c_str());
|
||||
if (res != jid) {
|
||||
data.emplace(res, AvatarInfo());
|
||||
data[res].deserialize((char*)lmdbData.mv_data, lmdbData.mv_size);
|
||||
}
|
||||
} while (mdb_cursor_get(cursor, &lmdbKey, &lmdbData, MDB_NEXT) == 0);
|
||||
|
||||
mdb_cursor_close(cursor);
|
||||
mdb_txn_abort(txn);
|
||||
}
|
||||
|
||||
Core::Archive::AvatarInfo Core::Archive::getAvatarInfo(const QString& resource) const
|
||||
{
|
||||
if (!opened) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue