#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
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
// 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
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