#include "../idatabase.h"\r
#include "../ilogger.h"\r
#include "../option.h"\r
-#include "../datetime.h"\r
#include "../stringfunctions.h"\r
#include "ifreenetregistrable.h"\r
#include "ifcpconnected.h"\r
#include "ifcpmessagehandler.h"\r
#include "iperiodicprocessor.h"\r
\r
+#include <Poco/DateTime.h>\r
+#include <Poco/Timestamp.h>\r
+#include <Poco/Timespan.h>\r
+\r
+#ifdef XMEM\r
+ #include <xmem.h>\r
+#endif\r
+\r
template <class IDTYPE>\r
class IIndexInserter:public IFreenetRegistrable,public IFCPConnected,public IFCPMessageHandler,public IPeriodicProcessor,public IDatabase,public ILogger\r
{\r
public:\r
IIndexInserter();\r
- IIndexInserter(FCPv2 *fcp);\r
+ IIndexInserter(FCPv2::Connection *fcp);\r
+ virtual ~IIndexInserter() {}\r
\r
virtual void FCPConnected();\r
virtual void FCPDisconnected();\r
- virtual const bool HandleMessage(FCPMessage &message);\r
+ virtual const bool HandleMessage(FCPv2::Message &message);\r
\r
virtual void Process();\r
\r
protected:\r
void InitializeIIndexInserter();\r
virtual void Initialize()=0; // initialize m_fcpuniquename\r
- virtual const bool HandlePutSuccessful(FCPMessage &message)=0;\r
- virtual const bool HandlePutFailed(FCPMessage &message)=0;\r
- virtual void StartInsert(const IDTYPE &id)=0;\r
+ virtual const bool HandlePutSuccessful(FCPv2::Message &message)=0;\r
+ virtual const bool HandlePutFailed(FCPv2::Message &message)=0;\r
+ virtual const bool StartInsert(const IDTYPE &id)=0;\r
virtual void CheckForNeededInsert()=0;\r
virtual void RemoveFromInsertList(const IDTYPE id);\r
\r
std::vector<IDTYPE> m_inserting; // list of ids we are inserting\r
std::string m_messagebase;\r
- DateTime m_lastchecked;\r
+ Poco::DateTime m_lastchecked;\r
\r
// these MUST be populated by child class\r
std::string m_fcpuniquename;\r
}\r
\r
template <class IDTYPE>\r
-IIndexInserter<IDTYPE>::IIndexInserter(FCPv2 *fcp):IFCPConnected(fcp)\r
+IIndexInserter<IDTYPE>::IIndexInserter(FCPv2::Connection *fcp):IFCPConnected(fcp)\r
{\r
InitializeIIndexInserter();\r
}\r
// make sure variables have been initialized by the derived class\r
if(m_fcpuniquename=="")\r
{\r
- m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"IIndexInserter<IDTYPE>::FCPConnected fcpuniquename not initialized correctly!");\r
+ m_log->fatal("IIndexInserter<IDTYPE>::FCPConnected fcpuniquename not initialized correctly!");\r
}\r
if(m_fcpuniquename.find("|")!=std::string::npos)\r
{\r
- m_log->WriteLog(LogFile::LOGLEVEL_ERROR,"IIndexInserter<IDTYPE>::FCPConnected fcpuniquename contains | character! This is not a valid character!");\r
+ m_log->fatal("IIndexInserter<IDTYPE>::FCPConnected fcpuniquename : "+m_fcpuniquename+" contains | character! This is not a valid character!");\r
}\r
\r
m_inserting.clear();\r
}\r
\r
template <class IDTYPE>\r
-const bool IIndexInserter<IDTYPE>::HandleMessage(FCPMessage &message)\r
+const bool IIndexInserter<IDTYPE>::HandleMessage(FCPv2::Message &message)\r
{\r
\r
if(message["Identifier"].find(m_fcpuniquename)==0)\r
{\r
+ m_log->trace("IIndexInserter<IDTYPE>::HandleMessage "+m_fcpuniquename+" received "+message.GetName()+" ID="+message["Identifier"]+" URI="+message["URI"]);\r
+\r
if(message.GetName()=="URIGenerated")\r
{\r
return true;\r
StringFunctions::Split(message["Identifier"],"|",idparts);\r
StringFunctions::Convert(idparts[1],id);\r
RemoveFromInsertList(id);\r
+ m_log->debug("IIndexInserter<IDTYPE>::HandleMessage IdentifierCollision for "+m_fcpuniquename+" "+message["Identifier"]);\r
return true;\r
}\r
}\r
void IIndexInserter<IDTYPE>::InitializeIIndexInserter()\r
{\r
m_fcpuniquename="";\r
- Option::instance()->Get("MessageBase",m_messagebase);\r
- m_lastchecked.SetToGMTime();\r
+ Option::Instance()->Get("MessageBase",m_messagebase);\r
+ m_lastchecked=Poco::Timestamp();\r
}\r
\r
template <class IDTYPE>\r
void IIndexInserter<IDTYPE>::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
template <class IDTYPE>\r
void IIndexInserter<IDTYPE>::RemoveFromInsertList(const IDTYPE identityid)\r
{\r
- std::vector<IDTYPE>::iterator i=m_inserting.begin();\r
+ typename std::vector<IDTYPE>::iterator i=m_inserting.begin();\r
while(i!=m_inserting.end() && (*i)!=identityid)\r
{\r
i++;\r