|
|
| version 1.15.2.1, 2003/01/31 12:34:32 | version 1.21.14.1, 2005/08/05 13:03:00 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: Stylesheet manager decl. | Parser: Stylesheet manager decl. |
| Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| global sql driver manager, must be thread-safe | global sql driver manager, must be thread-safe |
| Line 10 | Line 10 |
| #ifndef PA_STYLESHEET_MANAGER_H | #ifndef PA_STYLESHEET_MANAGER_H |
| #define PA_STYLESHEET_MANAGER_H | #define PA_STYLESHEET_MANAGER_H |
| static const char* IDENT_STYLESHEET_MANAGER_H="$Date$"; | static const char * const IDENT_STYLESHEET_MANAGER_H="$Date$"; |
| #include "pa_pool.h" | |
| #include "pa_hash.h" | #include "pa_hash.h" |
| #include "pa_table.h" | #include "pa_table.h" |
| #include "pa_cache_managers.h" | #include "pa_cache_managers.h" |
| #include "pa_stack.h" | |
| // defines | #include "pa_stylesheet_connection.h" |
| // forwards | |
| class Stylesheet_connection; | |
| class Stylesheet_connection_ptr; | |
| /** XSLT stylesheet driver manager | /** XSLT stylesheet driver manager |
| maintains | maintains |
| stylesheet cache expiring unused stylesheets | stylesheet cache expiring unused stylesheets |
| */ | */ |
| class Stylesheet_manager : public Cache_manager { | class Stylesheet_manager: public Cache_manager { |
| friend class Stylesheet_connection; | friend class Stylesheet_connection; |
| public: | public: |
| Stylesheet_manager(Pool& apool); | Stylesheet_manager(); |
| virtual ~Stylesheet_manager(); | override ~Stylesheet_manager(); |
| /** | /** |
| check for disk update of "{file_spec}" or "{file_spec}.stamp", | check for disk update of "{file_spec}" or "{file_spec}.stamp", |
| if not updated return cached version[if any] otherwise load/compile/return | if not updated return cached version[if any] otherwise load/compile/return |
| */ | */ |
| Stylesheet_connection_ptr get_connection(const String& file_spec); | Stylesheet_connection_ptr get_connection(String::Body file_spec); |
| private: // cache | private: // cache |
| Stylesheet_connection *get_connection_from_cache(const String& file_spec); | Stylesheet_connection* get_connection_from_cache(String::Body file_spec); |
| void put_connection_to_cache(const String& file_spec, Stylesheet_connection& connection); | void put_connection_to_cache(String::Body file_spec, Stylesheet_connection& connection); |
| private: | private: |
| time_t prev_expiration_pass_time; | time_t prev_expiration_pass_time; |
| private: // for stylesheet | private: // for stylesheet |
| /// caches connection | /// caches connection |
| void close_connection(const String& file_spec, Stylesheet_connection& connection); | void close_connection(String::Body file_spec, Stylesheet_connection& connection); |
| public: | |
| typedef Stack<Stylesheet_connection*> connection_cache_value_type; | |
| typedef Hash<const String::Body, connection_cache_value_type*> connection_cache_type; | |
| private: | private: |
| connection_cache_type connection_cache; | |
| Hash connection_cache; | |
| public: // Cache_manager | public: // Cache_manager |
| virtual Value& get_status(Pool& pool, const String *source); | override Value* get_status(); |
| virtual void maybe_expire_cache(); | override void maybe_expire_cache(); |
| }; | }; |
| /// global | /// global |
| extern Stylesheet_manager *stylesheet_manager; | extern Stylesheet_manager* stylesheet_manager; |
| #endif | #endif |