metaproxy  1.21.0
Public Member Functions | Public Attributes | List of all members
metaproxy_1::filter::SessionShared::BackendSet Class Reference
Collaboration diagram for metaproxy_1::filter::SessionShared::BackendSet:
Collaboration graph

Public Member Functions

void timestamp ()
 
 BackendSet (const std::string &result_set_id, const Databases &databases, const yazpp_1::Yaz_Z_Query &query, Z_OtherInformation *additionalSearchInfoRequest)
 
 ~BackendSet ()
 
bool search (Package &frontend_package, Package &search_package, const Z_APDU *apdu_req, const BackendInstancePtr bp, Z_Records **z_records)
 

Public Attributes

std::string m_result_set_id
 
Databases m_databases
 
Odr_int m_result_set_size
 
yazpp_1::Yaz_Z_Query m_query
 
time_t m_time_last_use
 
yazpp_1::RecordCache m_record_cache
 
Z_OtherInformation * additionalSearchInfoRequest
 
Z_OtherInformation * additionalSearchInfoResponse
 
NMEM mem_additionalSearchInfo
 

Detailed Description

Definition at line 75 of file filter_session_shared.cpp.

Constructor & Destructor Documentation

◆ BackendSet()

mp::filter::SessionShared::BackendSet::BackendSet ( const std::string &  result_set_id,
const Databases databases,
const yazpp_1::Yaz_Z_Query &  query,
Z_OtherInformation *  additionalSearchInfoRequest 
)

Definition at line 669 of file filter_session_shared.cpp.

References additionalSearchInfoRequest, additionalSearchInfoResponse, mem_additionalSearchInfo, and timestamp().

Here is the call graph for this function:

◆ ~BackendSet()

mp::filter::SessionShared::BackendSet::~BackendSet ( )

Definition at line 685 of file filter_session_shared.cpp.

686 {
687  nmem_destroy(mem_additionalSearchInfo);
688 }

Member Function Documentation

◆ search()

bool mp::filter::SessionShared::BackendSet::search ( Package &  frontend_package,
Package &  search_package,
const Z_APDU *  apdu_req,
const BackendInstancePtr  bp,
Z_Records **  z_records 
)

Definition at line 695 of file filter_session_shared.cpp.

701 {
702  mp::odr odr;
703  Z_APDU *apdu_req = zget_APDU(odr, Z_APDU_searchRequest);
704  Z_SearchRequest *req = apdu_req->u.searchRequest;
705 
706  req->additionalSearchInfo = additionalSearchInfoRequest;
707  req->resultSetName = odr_strdup(odr, m_result_set_id.c_str());
708  req->query = m_query.get_Z_Query();
709 
710  req->num_databaseNames = m_databases.size();
711  req->databaseNames = (char**)
712  odr_malloc(odr, req->num_databaseNames * sizeof(char *));
713  Databases::const_iterator it = m_databases.begin();
714  size_t i = 0;
715  for (; it != m_databases.end(); it++)
716  req->databaseNames[i++] = odr_strdup(odr, it->c_str());
717 
718  if (frontend_apdu->which == Z_APDU_searchRequest)
719  req->preferredRecordSyntax =
720  frontend_apdu->u.searchRequest->preferredRecordSyntax;
721 
722  search_package.request() = apdu_req;
723 
724  search_package.move();
725 
726  Z_GDU *gdu = search_package.response().get();
727  if (!search_package.session().is_closed()
728  && gdu && gdu->which == Z_GDU_Z3950
729  && gdu->u.z3950->which == Z_APDU_searchResponse)
730  {
731  Z_SearchResponse *b_resp = gdu->u.z3950->u.searchResponse;
732  *z_records = b_resp->records;
733  m_result_set_size = *b_resp->resultCount;
734 
735  additionalSearchInfoResponse = yaz_clone_z_OtherInformation(
736  b_resp->additionalSearchInfo, mem_additionalSearchInfo);
737  return true;
738  }
739  Z_APDU *f_apdu = 0;
740  const char *addinfo = "session_shared: "
741  "target closed connection during search";
742  if (frontend_apdu->which == Z_APDU_searchRequest)
743  f_apdu = odr.create_searchResponse(
744  frontend_apdu, YAZ_BIB1_TEMPORARY_SYSTEM_ERROR, addinfo);
745  else if (frontend_apdu->which == Z_APDU_presentRequest)
746  f_apdu = odr.create_presentResponse(
747  frontend_apdu, YAZ_BIB1_TEMPORARY_SYSTEM_ERROR, addinfo);
748  else
749  f_apdu = odr.create_close(
750  frontend_apdu, YAZ_BIB1_TEMPORARY_SYSTEM_ERROR, addinfo);
751  frontend_package.response() = f_apdu;
752  return false;
753 }

◆ timestamp()

void mp::filter::SessionShared::BackendSet::timestamp ( )

Definition at line 664 of file filter_session_shared.cpp.

Referenced by BackendSet().

Member Data Documentation

◆ additionalSearchInfoRequest

Z_OtherInformation* metaproxy_1::filter::SessionShared::BackendSet::additionalSearchInfoRequest

Definition at line 85 of file filter_session_shared.cpp.

Referenced by BackendSet().

◆ additionalSearchInfoResponse

Z_OtherInformation* metaproxy_1::filter::SessionShared::BackendSet::additionalSearchInfoResponse

Definition at line 86 of file filter_session_shared.cpp.

Referenced by BackendSet().

◆ m_databases

Databases metaproxy_1::filter::SessionShared::BackendSet::m_databases

Definition at line 78 of file filter_session_shared.cpp.

◆ m_query

yazpp_1::Yaz_Z_Query metaproxy_1::filter::SessionShared::BackendSet::m_query

Definition at line 80 of file filter_session_shared.cpp.

◆ m_record_cache

yazpp_1::RecordCache metaproxy_1::filter::SessionShared::BackendSet::m_record_cache

Definition at line 83 of file filter_session_shared.cpp.

◆ m_result_set_id

std::string metaproxy_1::filter::SessionShared::BackendSet::m_result_set_id

Definition at line 77 of file filter_session_shared.cpp.

◆ m_result_set_size

Odr_int metaproxy_1::filter::SessionShared::BackendSet::m_result_set_size

Definition at line 79 of file filter_session_shared.cpp.

◆ m_time_last_use

time_t metaproxy_1::filter::SessionShared::BackendSet::m_time_last_use

Definition at line 81 of file filter_session_shared.cpp.

◆ mem_additionalSearchInfo

NMEM metaproxy_1::filter::SessionShared::BackendSet::mem_additionalSearchInfo

Definition at line 87 of file filter_session_shared.cpp.

Referenced by BackendSet().


The documentation for this class was generated from the following file: