setUserOnline implemented in sqlite3/mysql backend

This commit is contained in:
HanzZ 2011-09-11 12:09:07 +02:00
parent 0bf2d89a7f
commit 12a207a3a3
5 changed files with 22 additions and 2 deletions

View file

@ -146,6 +146,7 @@ class MySQLBackend : public StorageBackend
Statement *m_updateBuddySetting;
Statement *m_getBuddies;
Statement *m_getBuddiesSettings;
Statement *m_setUserOnline;
};
}

View file

@ -114,6 +114,7 @@ class SQLite3Backend : public StorageBackend
sqlite3_stmt *m_updateBuddySetting;
sqlite3_stmt *m_getBuddies;
sqlite3_stmt *m_getBuddiesSettings;
sqlite3_stmt *m_setUserOnline;
};
}

View file

@ -275,6 +275,7 @@ MySQLBackend::~MySQLBackend(){
delete m_setUserSetting;
delete m_updateUserSetting;
delete m_updateBuddySetting;
delete m_setUserOnline;
mysql_close(&m_conn);
}
@ -313,6 +314,8 @@ bool MySQLBackend::connect() {
m_setUserSetting = new Statement(&m_conn, "isis", "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES (?,?,?,?)");
m_updateUserSetting = new Statement(&m_conn, "sis", "UPDATE " + m_prefix + "users_settings SET value=? WHERE user_id=? AND var=?");
m_setUserOnline = new Statement(&m_conn, "bi", "UPDATE " + m_prefix + "users SET online=?, last_login=NOW() WHERE id=?");
return true;
}
@ -402,7 +405,8 @@ bool MySQLBackend::getUser(const std::string &barejid, UserInfo &user) {
}
void MySQLBackend::setUserOnline(long id, bool online) {
*m_setUserOnline << online << id;
m_setUserOnline->execute();
}
long MySQLBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) {

View file

@ -491,6 +491,14 @@ void RosterManager::sendUnavailablePresences(const Swift::JID &to) {
m_component->getStanzaChannel()->sendPresence(presence);
}
}
// in gateway mode, we have to send unavailable presence for transport
// contact
Swift::Presence::ref response = Swift::Presence::create();
response->setTo(to);
response->setFrom(m_component->getJID());
response->setType(Swift::Presence::Unavailable);
m_component->getStanzaChannel()->sendPresence(response);
}
}

View file

@ -97,6 +97,7 @@ SQLite3Backend::~SQLite3Backend(){
FINALIZE_STMT(m_setUserSetting);
FINALIZE_STMT(m_updateUserSetting);
FINALIZE_STMT(m_updateBuddySetting);
FINALIZE_STMT(m_setUserOnline);
sqlite3_close(m_db);
}
}
@ -129,6 +130,8 @@ bool SQLite3Backend::connect() {
PREP_STMT(m_setUserSetting, "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES (?,?,?,?)");
PREP_STMT(m_updateUserSetting, "UPDATE " + m_prefix + "users_settings SET value=? WHERE user_id=? AND var=?");
PREP_STMT(m_setUserOnline, "UPDATE " + m_prefix + "users SET online=?, last_login=DATETIME('NOW') WHERE id=?");
return true;
}
@ -239,7 +242,10 @@ bool SQLite3Backend::getUser(const std::string &barejid, UserInfo &user) {
}
void SQLite3Backend::setUserOnline(long id, bool online) {
BEGIN(m_setUserOnline);
BIND_INT(m_setUserOnline, (int)online);
BIND_INT(m_setUserOnline, id);
EXECUTE_STATEMENT(m_setUserOnline, "setUserOnline query");
}
long SQLite3Backend::addBuddy(long userId, const BuddyInfo &buddyInfo) {