63e12c37865ad02ce172b8f533f833c1ea1915e5
[fms.git] / src / freenet / unknownidentityrequester.cpp
1 #include "../../include/freenet/unknownidentityrequester.h"\r
2 #include "../../include/option.h"\r
3 \r
4 #ifdef XMEM\r
5         #include <xmem.h>\r
6 #endif\r
7 \r
8 UnknownIdentityRequester::UnknownIdentityRequester()\r
9 {\r
10         Initialize();\r
11 }\r
12 \r
13 UnknownIdentityRequester::UnknownIdentityRequester(FCPv2::Connection *fcp):IdentityRequester(fcp)\r
14 {\r
15         Initialize();\r
16 }\r
17 \r
18 void UnknownIdentityRequester::Initialize()\r
19 {\r
20         m_fcpuniquename="UnknownIdentityRequester";\r
21         Option::Instance()->GetInt("MaxIdentityRequests",m_maxrequests);\r
22 \r
23         // unknown identities get 1/5 of the max requests option - known identities get 4/5 + any remaining if not evenly divisible\r
24         m_maxrequests=(m_maxrequests/5);\r
25 \r
26         if(m_maxrequests<1)\r
27         {\r
28                 m_maxrequests=1;\r
29                 m_log->error("Option MaxIdentityRequests is currently set at less than 1.  It must be 1 or greater.");\r
30         }\r
31         if(m_maxrequests>100)\r
32         {\r
33                 m_log->warning("Option MaxIdentityRequests is currently set at more than 100.  This value might be incorrectly configured.");\r
34         }\r
35 }\r
36 \r
37 void UnknownIdentityRequester::PopulateIDList()\r
38 {\r
39         int id;\r
40 \r
41         // select identities we want to query (haven't seen at all) - sort by their trust level (descending)\r
42         SQLite3DB::Statement st=m_db->Prepare("SELECT IdentityID FROM tblIdentity WHERE PublicKey IS NOT NULL AND PublicKey <> '' AND LastSeen IS NULL ORDER BY LocalMessageTrust+LocalTrustListTrust DESC;");\r
43         st.Step();\r
44 \r
45         m_ids.clear();\r
46 \r
47         while(st.RowReturned())\r
48         {\r
49                 st.ResultInt(0,id);\r
50                 m_ids[id]=false;\r
51                 st.Step();\r
52         }\r
53 }\r