version 0.3.29
[fms.git] / include / freenet / iindexrequester.h
index b74e69a..1966407 100644 (file)
@@ -14,6 +14,8 @@
 #include <Poco/Timestamp.h>\r
 #include <Poco/Timespan.h>\r
 \r
+#include <algorithm>\r
+\r
 #ifdef XMEM\r
        #include <xmem.h>\r
 #endif\r
@@ -22,13 +24,13 @@ template <class IDTYPE>
 class IIndexRequester:public IFreenetRegistrable,public IFCPConnected,public IFCPMessageHandler,public IPeriodicProcessor,public IDatabase,public ILogger\r
 {\r
 public:\r
-       IIndexRequester();\r
-       IIndexRequester(FCPv2 *fcp);\r
+       IIndexRequester(SQLite3DB::DB *db);\r
+       IIndexRequester(SQLite3DB::DB *db, FCPv2::Connection *fcp);\r
        virtual ~IIndexRequester()              {}\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
@@ -39,8 +41,8 @@ protected:
        virtual void Initialize()=0;            // initialize m_maxrequests and m_fcpuniquename\r
        virtual void PopulateIDList()=0;\r
        virtual void StartRequest(const IDTYPE &id)=0;\r
-       virtual const bool HandleAllData(FCPMessage &message)=0;\r
-       virtual const bool HandleGetFailed(FCPMessage &message)=0;\r
+       virtual const bool HandleAllData(FCPv2::Message &message)=0;\r
+       virtual const bool HandleGetFailed(FCPv2::Message &message)=0;\r
        virtual void RemoveFromRequestList(const IDTYPE id);\r
 \r
        Poco::DateTime m_tempdate;\r
@@ -51,19 +53,19 @@ protected:
        std::vector<IDTYPE> m_requesting;               // list of ids we are currently requesting from\r
 \r
        // these MUST be populated by child class\r
-       long m_maxrequests;\r
+       int m_maxrequests;\r
        std::string m_fcpuniquename;\r
 \r
 };\r
 \r
 template <class IDTYPE>\r
-IIndexRequester<IDTYPE>::IIndexRequester()\r
+IIndexRequester<IDTYPE>::IIndexRequester(SQLite3DB::DB *db):IDatabase(db)\r
 {\r
        InitializeIIndexRequester();\r
 }\r
 \r
 template <class IDTYPE>\r
-IIndexRequester<IDTYPE>::IIndexRequester(FCPv2 *fcp):IFCPConnected(fcp)\r
+IIndexRequester<IDTYPE>::IIndexRequester(SQLite3DB::DB *db, FCPv2::Connection *fcp):IDatabase(db),IFCPConnected(fcp)\r
 {\r
        InitializeIIndexRequester();\r
 }\r
@@ -82,7 +84,7 @@ void IIndexRequester<IDTYPE>::FCPConnected()
        }\r
        if(m_fcpuniquename.find("|")!=std::string::npos)\r
        {\r
-               m_log->fatal("IIndexRequester<IDTYPE>::FCPConnected fcpuniquename contains | character!  This is not a valid character!");\r
+               m_log->fatal("IIndexRequester<IDTYPE>::FCPConnected fcpuniquename "+m_fcpuniquename+" contains | character!  This is not a valid character!");\r
        }\r
 \r
        m_lastreceived=Poco::Timestamp();\r
@@ -98,7 +100,7 @@ void IIndexRequester<IDTYPE>::FCPDisconnected()
 }\r
 \r
 template <class IDTYPE>\r
-const bool IIndexRequester<IDTYPE>::HandleMessage(FCPMessage &message)\r
+const bool IIndexRequester<IDTYPE>::HandleMessage(FCPv2::Message &message)\r
 {\r
 \r
        if(message["Identifier"].find(m_fcpuniquename)==0)\r
@@ -141,8 +143,9 @@ void IIndexRequester<IDTYPE>::InitializeIIndexRequester()
 {\r
        m_maxrequests=-1;\r
        m_fcpuniquename="";\r
+       Option option(m_db);\r
 \r
-       Option::Instance()->Get("MessageBase",m_messagebase);\r
+       option.Get("MessageBase",m_messagebase);\r
        m_tempdate=Poco::Timestamp();\r
        m_lastreceived=Poco::Timestamp();\r
        m_lastpopulated=Poco::Timestamp();\r
@@ -208,11 +211,8 @@ void IIndexRequester<IDTYPE>::RegisterWithThread(FreenetMasterThread *thread)
 template <class IDTYPE>\r
 void IIndexRequester<IDTYPE>::RemoveFromRequestList(const IDTYPE id)\r
 {\r
-       typename std::vector<IDTYPE>::iterator i=m_requesting.begin();\r
-       while(i!=m_requesting.end() && (*i)!=id)\r
-       {\r
-               i++;\r
-       }\r
+       typename std::vector<IDTYPE>::iterator i=std::find(m_requesting.begin(),m_requesting.end(),id);\r
+\r
        if(i!=m_requesting.end())\r
        {\r
                m_requesting.erase(i);\r