version 0.3.0
[fms.git] / src / freenet / identityinserter.cpp
index f246d66..f28a738 100644 (file)
@@ -3,6 +3,9 @@
 #include "../../include/stringfunctions.h"\r
 #include "../../include/option.h"\r
 \r
+#include <Poco/DateTimeFormatter.h>\r
+#include <Poco/DateTimeParser.h>\r
+\r
 #ifdef XMEM\r
        #include <xmem.h>\r
 #endif\r
@@ -19,23 +22,20 @@ IdentityInserter::IdentityInserter(FCPv2 *fcp):IFCPConnected(fcp)
 \r
 void IdentityInserter::CheckForNeededInsert()\r
 {\r
-       DateTime now;\r
-       DateTime date;\r
-       now.SetToGMTime();\r
-       date.SetToGMTime();\r
+       Poco::DateTime now;\r
+       Poco::DateTime date;\r
+\r
        // set date to 1 hour back\r
-       date.Add(0,0,-1);\r
+       date-=Poco::Timespan(0,1,0,0,0);\r
 \r
        // Because of importance of Identity.xml, if we are now at the next day we immediately want to insert identities so change the date back to 12:00 AM so we find all identities not inserted yet today\r
-       if(date.GetDay()!=now.GetDay())\r
+       if(date.day()!=now.day())\r
        {\r
                date=now;\r
-               date.SetHour(0);\r
-               date.SetMinute(0);\r
-               date.SetSecond(0);\r
+               date.assign(date.year(),date.month(),date.day(),0,0,0);\r
        }\r
 \r
-       SQLite3DB::Recordset rs=m_db->Query("SELECT LocalIdentityID FROM tblLocalIdentity WHERE PrivateKey IS NOT NULL AND PrivateKey <> '' AND InsertingIdentity='false' AND (LastInsertedIdentity<'"+date.Format("%Y-%m-%d %H:%M:%S")+"' OR LastInsertedIdentity IS NULL) ORDER BY LastInsertedIdentity;");\r
+       SQLite3DB::Recordset rs=m_db->Query("SELECT LocalIdentityID FROM tblLocalIdentity WHERE PrivateKey IS NOT NULL AND PrivateKey <> '' AND InsertingIdentity='false' AND (LastInsertedIdentity<'"+Poco::DateTimeFormatter::format(date,"%Y-%m-%d %H:%M:%S")+"' OR LastInsertedIdentity IS NULL) ORDER BY LastInsertedIdentity;");\r
        \r
        if(rs.Empty()==false)\r
        {\r
@@ -60,10 +60,9 @@ const bool IdentityInserter::HandleMessage(FCPMessage &message)
 \r
        if(message["Identifier"].find("IdentityInserter")==0)\r
        {\r
-               DateTime now;\r
+               Poco::DateTime now;\r
                std::vector<std::string> idparts;\r
 \r
-               now.SetToGMTime();\r
                StringFunctions::Split(message["Identifier"],"|",idparts);\r
 \r
                // no action for URIGenerated\r
@@ -82,25 +81,27 @@ const bool IdentityInserter::HandleMessage(FCPMessage &message)
                {\r
                        // a little hack here - if we just inserted index yesterday and it is now the next day - we would have inserted todays date not yesterdays as LastInsertedIdentity.\r
                        // If this is the case, we will skip updating LastInsertedIdentity so that we can insert this identity again for today\r
-                       DateTime lastdate;\r
-                       lastdate.Set(idparts[4]);\r
-                       if(lastdate.GetDay()==now.GetDay())\r
+                       Poco::DateTime lastdate;\r
+                       int tzdiff=0;\r
+                       Poco::DateTimeParser::tryParse("%Y-%m-%d",idparts[4],lastdate,tzdiff);\r
+\r
+                       if(lastdate.day()==now.day())\r
                        {\r
-                               m_db->Execute("UPDATE tblLocalIdentity SET InsertingIdentity='false', LastInsertedIdentity='"+now.Format("%Y-%m-%d %H:%M:%S")+"' WHERE LocalIdentityID="+idparts[1]+";");\r
+                               m_db->Execute("UPDATE tblLocalIdentity SET InsertingIdentity='false', LastInsertedIdentity='"+Poco::DateTimeFormatter::format(now,"%Y-%m-%d %H:%M:%S")+"' WHERE LocalIdentityID="+idparts[1]+";");\r
                        }\r
                        else\r
                        {\r
                                m_db->Execute("UPDATE tblLocalIdentity SET InsertingIdentity='false' WHERE LocalIdentityID="+idparts[1]+";");\r
                        }\r
                        m_db->Execute("INSERT INTO tblLocalIdentityInserts(LocalIdentityID,Day,InsertIndex) VALUES("+idparts[1]+",'"+idparts[4]+"',"+idparts[2]+");");\r
-                       m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"IdentityInserter::HandleMessage inserted Identity xml");\r
+                       m_log->debug("IdentityInserter::HandleMessage inserted Identity xml");\r
                        return true;\r
                }\r
 \r
                if(message.GetName()=="PutFailed")\r
                {\r
                        m_db->Execute("UPDATE tblLocalIdentity SET InsertingIdentity='false' WHERE LocalIdentityID="+idparts[1]+";");\r
-                       m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"IdentityInserter::HandleMessage failure inserting Identity xml.  Code="+message["Code"]+" Description="+message["CodeDescription"]);\r
+                       m_log->debug("IdentityInserter::HandleMessage failure inserting Identity xml.  Code="+message["Code"]+" Description="+message["CodeDescription"]);\r
                        \r
                        // if code 9 (collision), then insert index into inserted table\r
                        if(message["Code"]=="9")\r
@@ -119,15 +120,14 @@ const bool IdentityInserter::HandleMessage(FCPMessage &message)
 \r
 void IdentityInserter::Initialize()\r
 {\r
-       m_lastchecked.SetToGMTime();\r
+       m_lastchecked=Poco::Timestamp();\r
 }\r
 \r
 void IdentityInserter::Process()\r
 {\r
-       DateTime now;\r
-       now.SetToGMTime();\r
+       Poco::DateTime now;\r
 \r
-       if(m_lastchecked<(now-(1.0/1440.0)))\r
+       if(m_lastchecked<(now-Poco::Timespan(0,0,1,0,0)))\r
        {\r
                CheckForNeededInsert();\r
                m_lastchecked=now;\r
@@ -144,11 +144,10 @@ void IdentityInserter::RegisterWithThread(FreenetMasterThread *thread)
 \r
 void IdentityInserter::StartInsert(const long localidentityid)\r
 {\r
-       DateTime date;\r
+       Poco::DateTime date;\r
        std::string idstring;\r
 \r
        StringFunctions::Convert(localidentityid,idstring);\r
-       date.SetToGMTime();\r
 \r
        SQLite3DB::Recordset rs=m_db->Query("SELECT Name,PrivateKey,SingleUse,PublishTrustList,PublishBoardList,PublishFreesite,FreesiteEdition FROM tblLocalIdentity WHERE LocalIdentityID="+idstring+";");\r
 \r
@@ -156,7 +155,7 @@ void IdentityInserter::StartInsert(const long localidentityid)
        {\r
                IdentityXML idxml;\r
                FCPMessage mess;\r
-               DateTime now;\r
+               Poco::DateTime now;\r
                std::string messagebase;\r
                std::string data;\r
                std::string datasizestr;\r
@@ -169,9 +168,9 @@ void IdentityInserter::StartInsert(const long localidentityid)
                std::string freesiteedition="";\r
                int edition=-1;\r
 \r
-               now.SetToGMTime();\r
+               now=Poco::Timestamp();\r
 \r
-               SQLite3DB::Recordset rs2=m_db->Query("SELECT MAX(InsertIndex) FROM tblLocalIdentityInserts WHERE LocalIdentityID="+idstring+" AND Day='"+now.Format("%Y-%m-%d")+"';");\r
+               SQLite3DB::Recordset rs2=m_db->Query("SELECT MAX(InsertIndex) FROM tblLocalIdentityInserts WHERE LocalIdentityID="+idstring+" AND Day='"+Poco::DateTimeFormatter::format(now,"%Y-%m-%d")+"';");\r
                if(rs2.Empty()==false)\r
                {\r
                        if(rs2.GetField(0)==NULL)\r
@@ -229,7 +228,7 @@ void IdentityInserter::StartInsert(const long localidentityid)
                StringFunctions::Convert(data.size(),datasizestr);\r
 \r
                mess.SetName("ClientPut");\r
-               mess["URI"]=privatekey+messagebase+"|"+now.Format("%Y-%m-%d")+"|Identity|"+indexstr+".xml";\r
+               mess["URI"]=privatekey+messagebase+"|"+Poco::DateTimeFormatter::format(now,"%Y-%m-%d")+"|Identity|"+indexstr+".xml";\r
                mess["Identifier"]="IdentityInserter|"+idstring+"|"+indexstr+"|"+mess["URI"];\r
                mess["UploadFrom"]="direct";\r
                mess["DataLength"]=datasizestr;\r