From 00c5298c6d00cbce32c1e678840b5e34bb8feea7 Mon Sep 17 00:00:00 2001 From: Maxim Mamontov Date: Wed, 5 Jan 2011 16:51:47 +0200 Subject: [PATCH 1/1] =?utf8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D1=96=D0=B7=D0=BE?= =?utf8?q?=D0=B2=D0=B0=D0=BD=D0=BE=20=D0=B2=D0=BD=D1=83=D1=82=D1=80=D1=96?= =?utf8?q?=D1=88=D0=BD=D1=8E=20=D1=87=D0=B5=D1=80=D0=B3=D1=83=20=D0=BF?= =?utf8?q?=D0=BE=D0=B2=D1=96=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D1=8C=20?= =?utf8?q?=D1=96=20=D1=97=D1=97=20=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE?= =?utf8?q?=D0=BD=D1=96=D0=B7=D0=B0=D1=86=D1=96=D1=8E=20=D0=B7=20=D0=B1?= =?utf8?q?=D0=B0=D0=B7=D0=BE=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- projects/stargazer/user.cpp | 53 ++++++++++++++++++++++++++++++++++++- projects/stargazer/user.h | 2 ++ 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/projects/stargazer/user.cpp b/projects/stargazer/user.cpp index 46f6848b..93fd66dc 100644 --- a/projects/stargazer/user.cpp +++ b/projects/stargazer/user.cpp @@ -255,6 +255,24 @@ if (tariff == NULL) return -1; } +std::vector hdrsList; + +if (store->GetMessageHdrs(&hdrsList, login)) + { + printfd(__FILE__, "Error GetMessageHdrs %s\n", store->GetStrError().c_str()); + return -1; + } + +std::vector::const_iterator it; +for (it = hdrsList.begin(); it != hdrsList.end(); ++it) + { + STG_MSG msg; + if (store->GetMessage(it->id, &msg, login) == 0) + { + messages.push_back(msg); + } + } + return 0; } //----------------------------------------------------------------------------- @@ -1154,6 +1172,7 @@ if (SendMessage(*msg) == 0) WriteServLog("%s", store->GetStrError().c_str()); return -1; } + messages.push_back(*msg); } } else @@ -1166,6 +1185,7 @@ else WriteServLog("%s", store->GetStrError().c_str()); return -1; } + messages.push_back(*msg); } return 0; } @@ -1196,7 +1216,7 @@ int USER::ScanMessage() { STG_LOCKER lock(&mutex, __FILE__, __LINE__); -vector hdrsList; +/*vector hdrsList; if (store->GetMessageHdrs(&hdrsList, login)) { @@ -1241,7 +1261,38 @@ for (unsigned i = 0; i < hdrsList.size(); i++) WriteServLog("%s", store->GetStrError().c_str()); } } + }*/ + +std::list::iterator it(messages.begin()); +while (it != messages.end()) + { + if (SendMessage(*it)) + { + break; + } + it->header.repeat--; + if (it->header.repeat < 0) + { + printfd(__FILE__, "DelMessage\n"); + store->DelMessage(it->id, login); + messages.erase(it++); + } + else + { + #ifndef DEBUG + //TODO: gcc v. 4.x generate ICE on x86_64 + it->header.lastSendTime = time(NULL); + #else + it->header.lastSendTime = stgTime; + #endif + if (store->EditMessage(*it, login)) + { + printfd(__FILE__, "EditMessage Error %s\n", store->GetStrError().c_str()); + } + ++it; + } } + return 0; } //----------------------------------------------------------------------------- diff --git a/projects/stargazer/user.h b/projects/stargazer/user.h index 8b0c4dba..496baa72 100644 --- a/projects/stargazer/user.h +++ b/projects/stargazer/user.h @@ -241,6 +241,8 @@ private: const map * ipIndex; + list messages; + bool deleted; time_t lastWriteStat; // ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÊ ÚÁÐÉÓÉ ÓÔÁÔÉÓÔÉËÉ -- 2.44.2