#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
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
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
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
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
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
\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
message["ReturnType"]="direct";\r
message["MaxSize"]="30000"; // 30K\r
\r
- m_fcp->SendMessage(message);\r
+ m_fcp->Send(message);\r
\r
}\r