// Zoe AIM Away Message RSS Feed Generator // // Seth King and Douglas Thrift // // $Id$ #include "Publisher.hpp" #include "Rss.hpp" Publisher::Publisher(const std::set& buddies, const Database& database, bool start) : buddies(buddies), database(database), start(start) { if (start) { publisher.Spawn(etl::Bind<0>(&Publisher::publish, this)); } } int Publisher::publish() { cerr << bright << green << "Publisher::publish()\n" << reset; // publish update(); } void Publisher::update() { Stamp stamp; ext::Handle db(dbi::Connect(database.driver, database.host, database.user, database.password, database.db)); db->Execute("DELETE FROM messages WHERE stamp<'" + (stamp - 30) + "'"); for (std::set::const_iterator buddy(buddies.begin()); buddy != buddies.end(); ++buddy) { ext::Handle messages(db->Execute(ext::String("SELECT s") + "tamp, message FROM messages WHERE id='" + lexical_cast(buddy->getId()) + "'")); std::vector messages_; while (messages->MoveNext()) messages_.push_back(AwayMessage(messages->GetString("message"), messages->GetString("stamp"))); Rss rss(*buddy, messages_, stamp); } }