version 0.3.29
[fms.git] / src / freenet / fmsversionrequester.cpp
index 7632998..0d72722 100644 (file)
@@ -6,17 +6,17 @@
 #include <Poco/Timestamp.h>\r
 #include <Poco/Timespan.h>\r
 \r
-FMSVersionRequester::FMSVersionRequester()\r
+FMSVersionRequester::FMSVersionRequester(SQLite3DB::DB *db):IDatabase(db)\r
 {\r
        Initialize();\r
 }\r
 \r
-FMSVersionRequester::FMSVersionRequester(FCPv2 *fcp):IFCPConnected(fcp)\r
+FMSVersionRequester::FMSVersionRequester(SQLite3DB::DB *db, FCPv2::Connection *fcp):IDatabase(db),IFCPConnected(fcp)\r
 {\r
        Initialize();\r
 }\r
 \r
-const bool FMSVersionRequester::HandleAllData(FCPMessage &message)\r
+const bool FMSVersionRequester::HandleAllData(FCPv2::Message &message)\r
 {\r
        std::vector<char> data;\r
        long datalength;\r
@@ -25,23 +25,16 @@ const bool FMSVersionRequester::HandleAllData(FCPMessage &message)
        StringFunctions::Convert(message["DataLength"],datalength);\r
 \r
        // wait for all data to be received from connection\r
-       while(m_fcp->Connected() && m_fcp->ReceiveBufferSize()<datalength)\r
-       {\r
-               m_fcp->Update(1);\r
-       }\r
+       m_fcp->WaitForBytes(1000,datalength);\r
 \r
        // if we got disconnected- return immediately\r
-       if(m_fcp->Connected()==false)\r
+       if(m_fcp->IsConnected()==false)\r
        {\r
                return false;\r
        }\r
 \r
        // receive the file\r
-       data.resize(datalength);\r
-       if(data.size()>0)\r
-       {\r
-               m_fcp->ReceiveRaw(&data[0],datalength);\r
-       }\r
+       m_fcp->Receive(data,datalength);\r
 \r
        // update latest edition #\r
        std::vector<std::string> parts;\r
@@ -49,7 +42,8 @@ const bool FMSVersionRequester::HandleAllData(FCPMessage &message)
        if(parts.size()>2)\r
        {\r
                std::string editionstr=parts[2];\r
-               Option::Instance()->Set("FMSVersionEdition",editionstr);\r
+               Option option(m_db);\r
+               option.Set("FMSVersionEdition",editionstr);\r
        }\r
 \r
        // parse file into xml and update the database\r
@@ -76,7 +70,7 @@ const bool FMSVersionRequester::HandleAllData(FCPMessage &message)
        return true;\r
 }\r
 \r
-const bool FMSVersionRequester::HandleGetFailed(FCPMessage &message)\r
+const bool FMSVersionRequester::HandleGetFailed(FCPv2::Message &message)\r
 {\r
        std::vector<std::string> parts;\r
        StringFunctions::Split(message["Identifier"],"/",parts);\r
@@ -87,7 +81,8 @@ const bool FMSVersionRequester::HandleGetFailed(FCPMessage &message)
                if(parts.size()>2)\r
                {\r
                        std::string editionstr=parts[2];\r
-                       Option::Instance()->Set("FMSVersionEdition",editionstr);\r
+                       Option option(m_db);\r
+                       option.Set("FMSVersionEdition",editionstr);\r
                }\r
                m_log->debug("FMSVersionRequester::HandleGetFailed Fatal GetFailed for "+message["Identifier"]);\r
        }\r
@@ -95,7 +90,7 @@ const bool FMSVersionRequester::HandleGetFailed(FCPMessage &message)
        return true;\r
 }\r
 \r
-const bool FMSVersionRequester::HandleMessage(FCPMessage &message)\r
+const bool FMSVersionRequester::HandleMessage(FCPv2::Message &message)\r
 {\r
        if(message["Identifier"].find(m_fcpuniquename)==0)\r
        {\r
@@ -154,13 +149,14 @@ void FMSVersionRequester::RegisterWithThread(FreenetMasterThread *thread)
 \r
 void FMSVersionRequester::StartRequest()\r
 {\r
-       FCPMessage message;\r
+       FCPv2::Message message;\r
        std::string key="";\r
        std::string editionstr="0";\r
        int edition=0;\r
        \r
-       Option::Instance()->Get("FMSVersionKey",key);\r
-       if(Option::Instance()->Get("FMSVersionEdition",editionstr))\r
+       Option option(m_db);\r
+       option.Get("FMSVersionKey",key);\r
+       if(option.Get("FMSVersionEdition",editionstr))\r
        {\r
                StringFunctions::Convert(editionstr,edition);\r
                edition++;\r
@@ -174,6 +170,6 @@ void FMSVersionRequester::StartRequest()
        message["ReturnType"]="direct";\r
        message["MaxSize"]="30000";             // 30K\r
 \r
-       m_fcp->SendMessage(message);\r
+       m_fcp->Send(message);\r
 \r
 }\r