⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread_cache.h

📁 C++ web POSIX framewark
💻 H
字号:
#ifndef THREAD_CHACHE_H#define THREAD_CHACHE_H#include "base_cache.h"#include "cache_interface.h"#include "pthread.h"#include <map>#include <list>namespace cppcms {using namespace std;class thread_cache : public base_cache {	pthread_mutex_t lru_mutex;	pthread_rwlock_t access_lock;	struct container {		string data;		typedef std::map<string,container>::iterator pointer;		list<pointer>::iterator lru;		list<multimap<string,pointer>::iterator> triggers;		multimap<time_t,pointer>::iterator timeout;	};	typedef container::pointer pointer;	std::map<string,container> primary;	multimap<string,pointer> triggers;	typedef multimap<string,pointer>::iterator triggers_ptr;	multimap<time_t,pointer> timeout;	typedef multimap<time_t,pointer>::iterator timeout_ptr;	list<pointer> lru;	typedef list<pointer>::iterator lru_ptr;	unsigned limit;	string *get(string const &key,set<string> *triggers);	void delete_node(pointer p);	void print_all();	bool debug_mode;	int fd;public:	void set_debug_mode(int fd) { debug_mode=true; this->fd=fd; };	thread_cache(unsigned pages=0) : limit(pages) {		pthread_mutex_init(&lru_mutex,NULL);		pthread_rwlock_init(&access_lock,NULL);		debug_mode=false;	};	void set_size(unsigned l) { limit=l; };	virtual bool fetch_page(string const &key,string &output,bool gzip);	virtual bool fetch(string const &key,archive &a,set<string> &tags);	virtual void rise(string const &trigger);	virtual void clear();	virtual void stats(unsigned &keys,unsigned &triggers);	virtual void store(string const &key,set<string> const &triggers,time_t timeout,archive const &a);	virtual ~thread_cache();};class thread_cache_factory : public cache_factory{	thread_cache *cache;public:	thread_cache_factory(unsigned n) : cache(new thread_cache(n)) {};	virtual base_cache *get() const { return cache; };	virtual void del(base_cache *p) const { };	virtual ~thread_cache_factory() { delete cache; };};}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -