X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=include%2Ffreenet%2Fiindexinserter.h;h=2135e452def5e05c38127e812c3999fda673bcd3;hp=050aa3dd21bb05d96ce5e5b33c4ff58a031adf2b;hb=59a5414ec47a2932a7802fcd1d98c4d80166564f;hpb=df316253862dc50e8e5a790d9634ef90be37badb diff --git a/include/freenet/iindexinserter.h b/include/freenet/iindexinserter.h index 050aa3d..2135e45 100644 --- a/include/freenet/iindexinserter.h +++ b/include/freenet/iindexinserter.h @@ -4,13 +4,16 @@ #include "../idatabase.h" #include "../ilogger.h" #include "../option.h" -#include "../datetime.h" #include "../stringfunctions.h" #include "ifreenetregistrable.h" #include "ifcpconnected.h" #include "ifcpmessagehandler.h" #include "iperiodicprocessor.h" +#include +#include +#include + #ifdef XMEM #include #endif @@ -19,13 +22,13 @@ template class IIndexInserter:public IFreenetRegistrable,public IFCPConnected,public IFCPMessageHandler,public IPeriodicProcessor,public IDatabase,public ILogger { public: - IIndexInserter(); - IIndexInserter(FCPv2 *fcp); + IIndexInserter(SQLite3DB::DB *db); + IIndexInserter(SQLite3DB::DB *db, FCPv2::Connection *fcp); virtual ~IIndexInserter() {} virtual void FCPConnected(); virtual void FCPDisconnected(); - virtual const bool HandleMessage(FCPMessage &message); + virtual const bool HandleMessage(FCPv2::Message &message); virtual void Process(); @@ -34,28 +37,28 @@ public: protected: void InitializeIIndexInserter(); virtual void Initialize()=0; // initialize m_fcpuniquename - virtual const bool HandlePutSuccessful(FCPMessage &message)=0; - virtual const bool HandlePutFailed(FCPMessage &message)=0; - virtual void StartInsert(const IDTYPE &id)=0; + virtual const bool HandlePutSuccessful(FCPv2::Message &message)=0; + virtual const bool HandlePutFailed(FCPv2::Message &message)=0; + virtual const bool StartInsert(const IDTYPE &id)=0; virtual void CheckForNeededInsert()=0; virtual void RemoveFromInsertList(const IDTYPE id); std::vector m_inserting; // list of ids we are inserting std::string m_messagebase; - DateTime m_lastchecked; + Poco::DateTime m_lastchecked; // these MUST be populated by child class std::string m_fcpuniquename; }; template -IIndexInserter::IIndexInserter() +IIndexInserter::IIndexInserter(SQLite3DB::DB *db):IDatabase(db) { InitializeIIndexInserter(); } template -IIndexInserter::IIndexInserter(FCPv2 *fcp):IFCPConnected(fcp) +IIndexInserter::IIndexInserter(SQLite3DB::DB *db, FCPv2::Connection *fcp):IDatabase(db),IFCPConnected(fcp) { InitializeIIndexInserter(); } @@ -66,11 +69,11 @@ void IIndexInserter::FCPConnected() // make sure variables have been initialized by the derived class if(m_fcpuniquename=="") { - m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"IIndexInserter::FCPConnected fcpuniquename not initialized correctly!"); + m_log->fatal("IIndexInserter::FCPConnected fcpuniquename not initialized correctly!"); } if(m_fcpuniquename.find("|")!=std::string::npos) { - m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"IIndexInserter::FCPConnected fcpuniquename contains | character! This is not a valid character!"); + m_log->fatal("IIndexInserter::FCPConnected fcpuniquename : "+m_fcpuniquename+" contains | character! This is not a valid character!"); } m_inserting.clear(); @@ -83,11 +86,13 @@ void IIndexInserter::FCPDisconnected() } template -const bool IIndexInserter::HandleMessage(FCPMessage &message) +const bool IIndexInserter::HandleMessage(FCPv2::Message &message) { if(message["Identifier"].find(m_fcpuniquename)==0) { + m_log->trace("IIndexInserter::HandleMessage "+m_fcpuniquename+" received "+message.GetName()+" ID="+message["Identifier"]+" URI="+message["URI"]); + if(message.GetName()=="URIGenerated") { return true; @@ -111,6 +116,7 @@ const bool IIndexInserter::HandleMessage(FCPMessage &message) StringFunctions::Split(message["Identifier"],"|",idparts); StringFunctions::Convert(idparts[1],id); RemoveFromInsertList(id); + m_log->debug("IIndexInserter::HandleMessage IdentifierCollision for "+m_fcpuniquename+" "+message["Identifier"]); return true; } } @@ -121,18 +127,18 @@ const bool IIndexInserter::HandleMessage(FCPMessage &message) template void IIndexInserter::InitializeIIndexInserter() { + Option option(m_db); m_fcpuniquename=""; - Option::Instance()->Get("MessageBase",m_messagebase); - m_lastchecked.SetToGMTime(); + option.Get("MessageBase",m_messagebase); + m_lastchecked=Poco::Timestamp(); } template void IIndexInserter::Process() { - DateTime now; - now.SetToGMTime(); + Poco::DateTime now; - if(m_lastchecked<(now-(1.0/1440.0))) + if(m_lastchecked<(now-Poco::Timespan(0,0,1,0,0))) { CheckForNeededInsert(); m_lastchecked=now;