| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | #include "common.h"#include <string>#include <memory>#include "Cookie.h"#include "WrDiskCacheEntry.h"#include "GroupId.h"namespace aria2 {class MessageDigest;class RequestGroupMan;class RequestGroup;class Option;struct DownloadResult;void createFile(const std::string& filename, size_t length);std::string readFile(const std::string& path);class CookieSorter {public:  bool operator()(const Cookie* lhs, const Cookie* rhs) const  {    if(lhs->getDomain() == rhs->getDomain()) {      return lhs->getName() < rhs->getName();    } else {      return lhs->getDomain() < rhs->getDomain();    }  }};std::unique_ptr<Cookie> createCookie(const std::string& name, const std::string& value, const std::string& domain, bool hostOnly, const std::string& path, bool secure);std::unique_ptr<Cookie> createCookie(const std::string& name, const std::string& value, time_t expiryTime, const std::string& domain, bool hostOnly, const std::string& path, bool secure);std::string fromHex(const std::string& s);#ifdef ENABLE_MESSAGE_DIGEST// Returns hex digest of contents of file denoted by filename.std::string fileHexDigest(MessageDigest* ctx, const std::string& filename);#endif // ENABLE_MESSAGE_DIGESTWrDiskCacheEntry::DataCell* createDataCell(int64_t goff,                                           const char* data,                                           size_t offset = 0);std::shared_ptr<RequestGroup> findReservedGroup(RequestGroupMan* rgman, a2_gid_t gid);std::shared_ptr<RequestGroup> getReservedGroup(RequestGroupMan* rgman, size_t index);std::shared_ptr<RequestGroup> createRequestGroup(int32_t pieceLength,                                              int64_t totalLength,                                              const std::string& path,                                              const std::string& uri,                                              const std::shared_ptr<Option>& opt);std::shared_ptr<DownloadResult> createDownloadResult(error_code::Value result, const std::string& uri);namespace {template<typename V, typename T>bool derefFind(const V& v, const T& t){  for(auto i : v) {    if(*i == *t) {      return true;    }  }  return false;}} // namespace} // namespace aria2
 |