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

📄 session_file_storage.h

📁 C++ web POSIX framewark
💻 H
字号:
#ifndef SESSION_FILE_STORAGE_H#define SESSION_FILE_STORAGE_H#include <string>#include <vector>#include <boost/noncopyable.hpp>#include <boost/shared_ptr.hpp>#include <pthread.h>#include "session_storage.h"#include "session_backend_factory.h"#include "config.h"namespace cppcms {class cppcms_config;namespace storage {class io : private boost::noncopyable {protected:	std::string dir;	int lock_id(std::string const &sid) const;	std::string mkname(std::string const &sid) const;	virtual void close(int fid) const;public:	std::string const &get_dir() const { return dir; }		io(std::string d) : dir(d) {}	virtual void wrlock(std::string const &sid) const = 0;	virtual void rdlock(std::string const &sid) const = 0;	virtual void unlock(std::string const &sid) const = 0;	virtual void write(std::string const &sid,time_t timestamp,void const *buf,size_t len) const;	virtual bool read(std::string const &sid,time_t &timestamp,std::vector<unsigned char> *out) const;	virtual void unlink(std::string const &sid) const;	virtual ~io(){};};class local_io : public io {protected:	pthread_rwlock_t *locks;public:	local_io(std::string dir,pthread_rwlock_t *l);	virtual void wrlock(std::string const &sid) const;	virtual void rdlock(std::string const &sid) const;	virtual void unlock(std::string const &sid) const;};class thread_io : public local_io{	pthread_rwlock_t *create_locks();public:	thread_io(std::string dir);	~thread_io();};class nfs_io : public thread_io {	int fid;protected:	virtual void close(int fid);public:	nfs_io(std::string dir);	virtual void wrlock(std::string const &sid) const;	virtual void rdlock(std::string const &sid) const;	virtual void unlock(std::string const &sid) const;	~nfs_io();};#ifdef HAVE_PTHREADS_PSHAREDclass shmem_io : public local_io{	int creator_pid;	pthread_rwlock_t *create_locks();public:	shmem_io(std::string dir);	~shmem_io();};#endif} // storageclass session_file_storage : public session_server_storage {	boost::shared_ptr<storage::io> io;public:	static void gc(boost::shared_ptr<storage::io>);	static session_backend_factory factory(cppcms_config const &);	session_file_storage(boost::shared_ptr<storage::io> io_) : io(io_) {}	virtual void save(std::string const &sid,time_t timeout,std::string const &in);	virtual bool load(std::string const &sid,time_t *timeout,std::string &out);	virtual void remove(std::string const &sid) ;	virtual ~session_file_storage(){};};} // cppcms#endif

⌨️ 快捷键说明

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