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

📄 session_tcp_storage.cpp

📁 C++ web POSIX framewark
💻 CPP
字号:
#include "asio_config.h"// MUST BE FIRST TO COMPILE CORRECTLY UNDER CYGWIN#include "tcp_messenger.h"#include "session_tcp_storage.h"#include "session_sid.h"#include "global_config.h"namespace cppcms {unsigned session_tcp_storage::hash(string const &key){	if(conns==1) return 0;	char buf[5] = { key.at(0) , key.at(1), key.at(2), key.at(3) , 0};	unsigned val=0;	sscanf(buf,"%x",&val);	return val % conns;;}void session_tcp_storage::save(std::string const &sid,time_t timeout,std::string const &in){	time_t now=time(NULL);	if(now > timeout) {		return ;	}	tcp_operation_header h={0};	h.opcode=opcodes::session_save;	h.size=in.size() + 32;	h.operations.session_save.timeout=timeout - now;	string data=sid;	data.append(in.begin(),in.end());	get(sid).transmit(h,data);}bool session_tcp_storage::load(std::string const &sid,time_t *timeout,std::string &out){	tcp_operation_header h={0};	h.opcode=opcodes::session_load;	h.size=sid.size();	string data=sid;	get(sid).transmit(h,data);	if(h.opcode==opcodes::session_load_data) {		if(timeout) *timeout=time(NULL) + h.operations.session_data.timeout;		out.swap(data);		return true;	}	else {		return false;	}	}void session_tcp_storage::remove(std::string const &sid){	tcp_operation_header h={0};	h.opcode=opcodes::session_remove;	h.size=sid.size();	string data=sid;	get(sid).transmit(h,data);}namespace {struct builder {	vector<string> ips;	vector<int> ports;	builder(vector<string> const &ips_,vector<int> const &ports_) :		ips(ips_), ports(ports_)	{	}	boost::shared_ptr<session_api> operator()(worker_thread &w)	{		boost::shared_ptr<session_server_storage> storage(new session_tcp_storage(ips,ports));		return boost::shared_ptr<session_api>(new session_sid(storage));	}} ;} // anonsession_backend_factory session_tcp_storage::factory(cppcms_config const &conf){	return builder(conf.slist("session.tcp_ips"),conf.ilist("session.tcp_ports"));}} // cppcms

⌨️ 快捷键说明

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