namespace metaproxy_1 {
namespace filter {
+ // key for session.. We'll only share sessions with same InitKey
class SessionShared::InitKey {
public:
bool operator < (const SessionShared::InitKey &k) const;
InitKey(const InitKey &);
~InitKey();
private:
- InitKey &operator = (const InitKey &k);
char *m_idAuthentication_buf;
int m_idAuthentication_size;
char *m_otherInfo_buf;
int m_otherInfo_size;
ODR m_odr;
};
+ // worker thread .. for expiry of sessions
class SessionShared::Worker {
public:
Worker(SessionShared::Rep *rep);
private:
SessionShared::Rep *m_p;
};
+ // backend result set
class SessionShared::BackendSet {
public:
std::string m_result_set_id;
const Z_APDU *apdu_req,
const BackendInstancePtr bp);
};
+ // backend connection instance
class SessionShared::BackendInstance {
friend class Rep;
friend class BackendClass;
mp::Package * m_close_package;
~BackendInstance();
};
+ // backends of some class (all with same InitKey)
class SessionShared::BackendClass : boost::noncopyable {
friend class Rep;
friend struct Frontend;
BackendInstancePtr get_backend(const Package &package);
void use_backend(BackendInstancePtr b);
void release_backend(BackendInstancePtr b);
- void expire();
+ void expire_class();
yazpp_1::GDU m_init_request;
yazpp_1::GDU m_init_response;
boost::mutex m_mutex_backend_class;
int session_ttl);
~BackendClass();
};
+ // frontend result set
class SessionShared::FrontendSet {
Databases m_databases;
yazpp_1::Yaz_Z_Query m_query;
const yazpp_1::Yaz_Z_Query &query);
FrontendSet();
};
+ // frontend session
struct SessionShared::Frontend {
Frontend(Rep *rep);
~Frontend();
BackendClassPtr m_backend_class;
FrontendSets m_frontend_sets;
};
+ // representation
class SessionShared::Rep {
friend class SessionShared;
friend struct Frontend;
m_p->expire();
}
-void yf::SessionShared::BackendClass::expire()
+void yf::SessionShared::BackendClass::expire_class()
{
time_t now;
time(&now);
BackendClassMap::const_iterator b_it = m_backend_map.begin();
for (; b_it != m_backend_map.end(); b_it++)
- b_it->second->expire();
+ b_it->second->expire_class();
}
}