version 0.1.11
[fms.git] / include / freenet / iindexrequester.h
index 6ba9ae7..35c16c1 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 IIndexRequester:public IFreenetRegistrable,public IFCPConnected,public IFCPMessageHandler,public IPeriodicProcessor,public IDatabase,public ILogger\r
 {\r
 public:\r
        IIndexRequester();\r
        IIndexRequester(FCPv2 *fcp);\r
+       virtual ~IIndexRequester()              {}\r
 \r
        virtual void FCPConnected();\r
        virtual void FCPDisconnected();\r
@@ -127,20 +132,21 @@ void IIndexRequester<IDTYPE>::InitializeIIndexRequester()
        m_maxrequests=-1;\r
        m_fcpuniquename="";\r
 \r
-       Option::instance()->Get("MessageBase",m_messagebase);\r
+       Option::Instance()->Get("MessageBase",m_messagebase);\r
        m_tempdate.SetToGMTime();\r
 }\r
 \r
 template <class IDTYPE>\r
 void IIndexRequester<IDTYPE>::Process()\r
 {\r
-       // max is the smaller of the config value or the total number of identities we will request from\r
-       long max=m_maxrequests>m_ids.size() ? m_ids.size() : m_maxrequests;\r
+       // max is the smaller of the config value or the total number of ids we will request from\r
+       typename std::map<IDTYPE,bool>::size_type max=m_maxrequests>m_ids.size() ? m_ids.size() : m_maxrequests;\r
 \r
        // try to keep up to max requests going\r
        if(m_requesting.size()<max)\r
        {\r
-               std::map<IDTYPE,bool>::iterator i=m_ids.begin();\r
+               typename std::map<IDTYPE,bool>::iterator i=m_ids.begin();\r
+\r
                while(i!=m_ids.end() && (*i).second==true)\r
                {\r
                        i++;\r
@@ -160,7 +166,7 @@ void IIndexRequester<IDTYPE>::Process()
        // this will recheck for ids every minute\r
        DateTime now;\r
        now.SetToGMTime();\r
-       if(m_tempdate<(now-(1.0/1440.0)))\r
+       if(m_ids.size()==0 && m_tempdate<(now-(1.0/1440.0)))\r
        {\r
                PopulateIDList();\r
                m_tempdate=now;\r
@@ -179,7 +185,7 @@ void IIndexRequester<IDTYPE>::RegisterWithThread(FreenetMasterThread *thread)
 template <class IDTYPE>\r
 void IIndexRequester<IDTYPE>::RemoveFromRequestList(const IDTYPE id)\r
 {\r
-       std::vector<IDTYPE>::iterator i=m_requesting.begin();\r
+       typename std::vector<IDTYPE>::iterator i=m_requesting.begin();\r
        while(i!=m_requesting.end() && (*i)!=id)\r
        {\r
                i++;\r