+ InitKey(Z_InitRequest *req);
+ 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;
+ };
+ class SessionShared::Worker {
+ public:
+ Worker(SessionShared::Rep *rep);
+ void operator() (void);
+ private:
+ SessionShared::Rep *m_p;
+ };
+ class SessionShared::BackendSet {
+ public:
+ std::string m_result_set_id;
+ Databases m_databases;
+ int m_result_set_size;
+ yazpp_1::Yaz_Z_Query m_query;
+ time_t m_time_last_use;
+ void timestamp();
+ BackendSet(
+ const std::string &result_set_id,
+ const Databases &databases,
+ const yazpp_1::Yaz_Z_Query &query);
+ bool search(
+ Package &frontend_package,
+ const Z_APDU *apdu_req,
+ const BackendInstancePtr bp);
+ };
+ class SessionShared::BackendInstance {
+ friend class Rep;
+ friend class BackendClass;
+ friend class BackendSet;
+ public:
+ mp::Session m_session;
+ BackendSetList m_sets;
+ bool m_in_use;
+ int m_sequence_this;
+ int m_result_set_sequence;
+ time_t m_time_last_use;
+ mp::Package * m_close_package;
+ ~BackendInstance();
+ };
+ class SessionShared::BackendClass : boost::noncopyable {
+ friend class Rep;
+ friend struct Frontend;
+ bool m_named_result_sets;
+ BackendInstanceList m_backend_list;
+ BackendInstancePtr create_backend(const Package &package);
+ void remove_backend(BackendInstancePtr b);
+ BackendInstancePtr get_backend(const Package &package);
+ void use_backend(BackendInstancePtr b);
+ void release_backend(BackendInstancePtr b);
+ void expire();
+ yazpp_1::GDU m_init_request;
+ yazpp_1::GDU m_init_response;
+ boost::mutex m_mutex_backend_class;
+ int m_sequence_top;
+ time_t m_backend_set_ttl;
+ time_t m_backend_expiry_ttl;
+ size_t m_backend_set_max;
+ public:
+ BackendClass(const yazpp_1::GDU &init_request,
+ int resultset_ttl,
+ int resultset_max,
+ int session_ttl);
+ ~BackendClass();
+ };
+ class SessionShared::FrontendSet {
+ Databases m_databases;
+ yazpp_1::Yaz_Z_Query m_query;
+ public:
+ const Databases &get_databases();
+ const yazpp_1::Yaz_Z_Query &get_query();
+ FrontendSet(
+ const Databases &databases,
+ const yazpp_1::Yaz_Z_Query &query);
+ FrontendSet();