#ifndef XMLDOCUMENTROWSCACHE_H #define XMLDOCUMENTROWSCACHE_H #include #include #include #include #include #include class XmlDocumentCache { public: typedef std::set Queued; typedef boost::shared_ptr DocumentPtr; typedef boost::function0 ReturnDocument; typedef std::map Documents; protected: static Queued queued; static Documents documents; void queue(const Glib::ustring & url, const char * encoding, ExecContext *) const; virtual CurlPtr newCurl(ExecContext *) const = 0; virtual bool asHtml(ExecContext * ec) const = 0; virtual bool withWarnings(ExecContext * ec) const = 0; protected: DocumentPtr getDocument(const Glib::ustring & url, const char * encoding, ExecContext * ec) const; private: static CurlBulkFetcher cbf; friend class XmlDocumentCachePopulator; friend class XmlDocumentCacheClearer; }; #endif