+ struct VirtualDB::Frontend {
+ Frontend(Rep *rep);
+ ~Frontend();
+ mp::Session m_session;
+ bool m_is_virtual;
+ bool m_in_use;
+ yazpp_1::GDU m_init_gdu;
+ std::list<BackendPtr> m_backend_list;
+ std::map<std::string,VirtualDB::Set> m_sets;
+
+ void search(Package &package, Z_APDU *apdu);
+ void present(Package &package, Z_APDU *apdu);
+ void scan(Package &package, Z_APDU *apdu);
+
+ void close(Package &package);
+ typedef std::map<std::string,VirtualDB::Set>::iterator Sets_it;
+
+ void fixup_package(Package &p, BackendPtr b);
+ void fixup_npr_record(ODR odr, Z_NamePlusRecord *npr,
+ BackendPtr b);
+ void fixup_npr_records(ODR odr, Z_Records *records,
+ BackendPtr b);
+
+ BackendPtr lookup_backend_from_databases(
+ std::list<std::string> databases);
+ BackendPtr create_backend_from_databases(
+ std::list<std::string> databases,
+ int &error_code,
+ std::string &failing_database);
+
+ BackendPtr init_backend(std::list<std::string> database,
+ Package &package,
+ int &error_code, std::string &addinfo);
+ Rep *m_p;
+ };
+ class VirtualDB::Rep {
+ friend class VirtualDB;
+ friend struct Frontend;