X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ffreenet%2Ffmsversionrequester.cpp;h=0d72722a6ef3485aeb5178781c0538096790fa91;hb=59a5414ec47a2932a7802fcd1d98c4d80166564f;hp=027d5300da1e1dfe7d8cf61b4087a1c7c0d81760;hpb=76805933f794915a72b7f0a21b12af6654759f4f;p=fms.git diff --git a/src/freenet/fmsversionrequester.cpp b/src/freenet/fmsversionrequester.cpp index 027d530..0d72722 100644 --- a/src/freenet/fmsversionrequester.cpp +++ b/src/freenet/fmsversionrequester.cpp @@ -6,17 +6,17 @@ #include #include -FMSVersionRequester::FMSVersionRequester() +FMSVersionRequester::FMSVersionRequester(SQLite3DB::DB *db):IDatabase(db) { Initialize(); } -FMSVersionRequester::FMSVersionRequester(FCPv2 *fcp):IFCPConnected(fcp) +FMSVersionRequester::FMSVersionRequester(SQLite3DB::DB *db, FCPv2::Connection *fcp):IDatabase(db),IFCPConnected(fcp) { Initialize(); } -const bool FMSVersionRequester::HandleAllData(FCPMessage &message) +const bool FMSVersionRequester::HandleAllData(FCPv2::Message &message) { std::vector data; long datalength; @@ -25,20 +25,16 @@ const bool FMSVersionRequester::HandleAllData(FCPMessage &message) StringFunctions::Convert(message["DataLength"],datalength); // wait for all data to be received from connection - while(m_fcp->Connected() && m_fcp->ReceiveBufferSize()Update(1); - } + m_fcp->WaitForBytes(1000,datalength); // if we got disconnected- return immediately - if(m_fcp->Connected()==false) + if(m_fcp->IsConnected()==false) { return false; } // receive the file - data.resize(datalength); - m_fcp->ReceiveRaw(&data[0],datalength); + m_fcp->Receive(data,datalength); // update latest edition # std::vector parts; @@ -46,11 +42,12 @@ const bool FMSVersionRequester::HandleAllData(FCPMessage &message) if(parts.size()>2) { std::string editionstr=parts[2]; - Option::Instance()->Set("FMSVersionEdition",editionstr); + Option option(m_db); + option.Set("FMSVersionEdition",editionstr); } // parse file into xml and update the database - if(xml.ParseXML(std::string(data.begin(),data.end()))==true) + if(data.size()>0 && xml.ParseXML(std::string(data.begin(),data.end()))==true) { SQLite3DB::Statement st=m_db->Prepare("REPLACE INTO tblFMSVersion(Major,Minor,Release,Notes,Changes,PageKey,SourceKey) VALUES(?,?,?,?,?,?,?);"); @@ -73,7 +70,7 @@ const bool FMSVersionRequester::HandleAllData(FCPMessage &message) return true; } -const bool FMSVersionRequester::HandleGetFailed(FCPMessage &message) +const bool FMSVersionRequester::HandleGetFailed(FCPv2::Message &message) { std::vector parts; StringFunctions::Split(message["Identifier"],"/",parts); @@ -84,7 +81,8 @@ const bool FMSVersionRequester::HandleGetFailed(FCPMessage &message) if(parts.size()>2) { std::string editionstr=parts[2]; - Option::Instance()->Set("FMSVersionEdition",editionstr); + Option option(m_db); + option.Set("FMSVersionEdition",editionstr); } m_log->debug("FMSVersionRequester::HandleGetFailed Fatal GetFailed for "+message["Identifier"]); } @@ -92,7 +90,7 @@ const bool FMSVersionRequester::HandleGetFailed(FCPMessage &message) return true; } -const bool FMSVersionRequester::HandleMessage(FCPMessage &message) +const bool FMSVersionRequester::HandleMessage(FCPv2::Message &message) { if(message["Identifier"].find(m_fcpuniquename)==0) { @@ -151,13 +149,14 @@ void FMSVersionRequester::RegisterWithThread(FreenetMasterThread *thread) void FMSVersionRequester::StartRequest() { - FCPMessage message; + FCPv2::Message message; std::string key=""; std::string editionstr="0"; int edition=0; - Option::Instance()->Get("FMSVersionKey",key); - if(Option::Instance()->Get("FMSVersionEdition",editionstr)) + Option option(m_db); + option.Get("FMSVersionKey",key); + if(option.Get("FMSVersionEdition",editionstr)) { StringFunctions::Convert(editionstr,edition); edition++; @@ -171,6 +170,6 @@ void FMSVersionRequester::StartRequest() message["ReturnType"]="direct"; message["MaxSize"]="30000"; // 30K - m_fcp->SendMessage(message); + m_fcp->Send(message); }