--- trunk/Publisher.cpp 2004/07/20 07:52:33 33 +++ trunk/Publisher.cpp 2004/07/20 23:49:06 34 @@ -7,13 +7,10 @@ #include "Publisher.hpp" #include "Rss.hpp" -Publisher::Publisher(const std::set& buddies, const Database& database, - bool start) : buddies(buddies), database(database), start(start) +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)); - } + if (start) publisher.Spawn(etl::Bind<0>(&Publisher::publish, this)); } int Publisher::publish() @@ -24,7 +21,7 @@ int Publisher::publish() while (true) { - Stamp start, now; + double next(api::GetWallTimerSeconds() + Hour(1)), now; update(); @@ -32,9 +29,9 @@ int Publisher::publish() { sleep(Minute(1)); - now = Stamp(); + now = api::GetWallTimerSeconds(); } - while (now < start + Hour(1)); + while (now < next); } } @@ -43,21 +40,18 @@ void Publisher::update() cerr << bright << yellow << "Publisher::update()\n" << reset; Stamp stamp; - ext::Handle db(dbi::Connect(database.driver, database.host, - database.user, database.password, database.db)); + ext::Handle db(dbi::Connect(database.driver, database.host, database.user, database.password, + database.db)); - db->Execute("DELETE FROM messages WHERE stamp<'" + (stamp - Day(30)) + "'"); + db->Execute("DELETE FROM messages WHERE stamp<'" + ext::String(stamp - Day(30)) + "'"); - for (std::set::const_iterator buddy(buddies.begin()); buddy != - buddies.end(); ++buddy) + 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()) + "'")); + ext::Handle messages(db->Execute("SELECT stamp, message FROM messages WHERE id='" + + lexical_cast(buddy->getId()) + "'")); std::vector messages_; - while (messages->MoveNext()) - messages_.push_back(AwayMessage(messages->GetString("message"), + while (messages->MoveNext()) messages_.push_back(AwayMessage(messages->GetString("message"), messages->GetString("stamp"))); Rss rss(*buddy, messages_, stamp);