Files
@ 9c5f59f10ce0
Branch filter:
Location: libtransport.git/backends/libyahoo2/yahoolocalaccount.cpp - annotation
9c5f59f10ce0
1.9 KiB
text/x-c++hdr
Do not call sqlite3_step again when it returned SQLITE_DONE before
6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 6b88ad945d30 |
#include "yahoolocalaccount.h"
#include "yahoohandler.h"
YahooLocalAccount::YahooLocalAccount(const std::string &user, const std::string &legacyName, const std::string &password) : user(user), id(0), conn_tag(1), handler_tag(1), status(YAHOO_STATUS_OFFLINE), msg(""), buffer("") {
id = yahoo_init_with_attributes(legacyName.c_str(), password.c_str(),
"local_host", "",
"pager_port", 5050,
NULL);
}
YahooLocalAccount::~YahooLocalAccount() {
// remove handlers
for (std::map<int, YahooHandler *>::iterator it = handlers.begin(); it != handlers.end(); it++) {
delete it->second;
}
// remove conns
for (std::map<int, boost::shared_ptr<Swift::Connection> >::iterator it = conns.begin(); it != conns.end(); it++) {
it->second->onConnectFinished.disconnect_all_slots();
it->second->onDisconnected.disconnect_all_slots();
it->second->onDataRead.disconnect_all_slots();
it->second->onDataWritten.disconnect_all_slots();
}
}
void YahooLocalAccount::login() {
yahoo_login(id, YAHOO_STATUS_AVAILABLE);
}
void YahooLocalAccount::addHandler(YahooHandler *handler) {
handlers[handler->handler_tag] = handler;
handlers_per_conn[handler->conn_tag][handler->handler_tag] = handler;
}
void YahooLocalAccount::removeOldHandlers() {
std::vector<int> handlers_to_remove;
for (std::map<int, YahooHandler *>::iterator it = handlers.begin(); it != handlers.end(); it++) {
if (it->second->remove_later) {
handlers_to_remove.push_back(it->first);
}
}
BOOST_FOREACH(int tag, handlers_to_remove) {
YahooHandler *handler = handlers[tag];
handlers.erase(tag);
handlers_per_conn[handler->conn_tag].erase(tag);
delete handler;
}
}
void YahooLocalAccount::removeConn(int conn_tag) {
for (std::map<int, YahooHandler *>::iterator it = handlers_per_conn[conn_tag].begin(); it != handlers_per_conn[conn_tag].end(); it++) {
it->second->remove_later = true;
}
removeOldHandlers();
conns.erase(conn_tag);
}
|