version 0.2.17
[fms.git] / include / freenet / iindexinserter.h
index d7093a3..edcc86b 100644 (file)
 #include "ifcpmessagehandler.h"\r
 #include "iperiodicprocessor.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
+       virtual ~IIndexInserter()               {}\r
 \r
        virtual void FCPConnected();\r
        virtual void FCPDisconnected();\r
@@ -31,7 +36,7 @@ protected:
        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 StartInsert(const IDTYPE &id)=0;\r
        virtual void CheckForNeededInsert()=0;\r
        virtual void RemoveFromInsertList(const IDTYPE id);\r
 \r
@@ -61,11 +66,11 @@ void IIndexInserter<IDTYPE>::FCPConnected()
        // 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->WriteLog(LogFile::LOGLEVEL_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->WriteLog(LogFile::LOGLEVEL_FATAL,"IIndexInserter<IDTYPE>::FCPConnected fcpuniquename contains | character!  This is not a valid character!");\r
        }\r
 \r
        m_inserting.clear();\r
@@ -106,6 +111,7 @@ const bool IIndexInserter<IDTYPE>::HandleMessage(FCPMessage &message)
                        StringFunctions::Split(message["Identifier"],"|",idparts);\r
                        StringFunctions::Convert(idparts[1],id);\r
                        RemoveFromInsertList(id);\r
+                       m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"IIndexInserter<IDTYPE>::HandleMessage IdentifierCollision for "+m_fcpuniquename+" "+message["Identifier"]);\r
                        return true;\r
                }\r
        }\r
@@ -117,7 +123,7 @@ template <class IDTYPE>
 void IIndexInserter<IDTYPE>::InitializeIIndexInserter()\r
 {\r
        m_fcpuniquename="";\r
-       Option::instance()->Get("MessageBase",m_messagebase);\r
+       Option::Instance()->Get("MessageBase",m_messagebase);\r
        m_lastchecked.SetToGMTime();\r
 }\r
 \r
@@ -145,7 +151,7 @@ void IIndexInserter<IDTYPE>::RegisterWithThread(FreenetMasterThread *thread)
 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