Ignore:
Timestamp:
2000-04-06T23:11:40+12:00 (24 years ago)
Author:
cs025
Message:

Corba improvements; tidied client initialisation in corbaproto and also
added a number of changes to the main trunk which somehow had not made
it into the corba branch via update before its instantiation.

Also the dated use of the GSDL_GSDLHOME macro was removed, at the expense
of some particularly poor code in corbaserver where log file creation is
now nowhere near so elegant.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/corba/gsdl/src/recpt/corbaproto.mpp

    r1068 r1074  
    22 *
    33 * corbaproto.cpp --
    4  * Copyright (C) 1999 The New Zealand Digital Library Project
     4 * Copyright (C) 2000 The New Zealand Digital Library Project
    55 *
    66 * A component of the Greenstone digital library software
     
    158158      fi ++;
    159159    }
     160
    160161      // copy the MetadataInfo map
    161162      MetadataInfo_tmap::iterator mhere = here->metadata.begin();
     
    191192      mi ++;
    192193    }
     194
     195      // Copy the classifier variables
     196      corbaconv_text_t::getCorbatext(here->classifier_metadata_type, corbainfo[i].classifierMetadataType);
     197      corbainfo[i].classifierMetadataOffset = here->classifier_metadata_offset;
    193198
    194199      // Get next Docinfo item
     
    262267      //      doc.metadata
    263268
     269      // convert metadata classifer information
     270      corbaconv_text_t::setCorbatext(doc.classifier_metadata_type,corbainfo[i].classifierMetadataType);
     271      doc.classifier_metadata_offset = corbainfo[i].classifierMetadataOffset;
     272
    264273      docinfo.push_back(doc);
    265274    }
     
    286295}
    287296
     297corbaiface_var corbaproto::getCorbaClient()
     298{
     299  char *dummyv[1] = {""};
     300  int   dummyc = 0;
     301  // CORBA variables
     302  static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
     303  static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
     304
     305  // Get ref from "naming service"
     306  ifstream in ("/tmp/account.objid");
     307  char ref[1000];
     308  in >> ref;
     309  in.close ();
     310
     311  // startup corba
     312  static CORBA::Object_var obj = orb->string_to_object (ref);
     313
     314  return corbaiface::_narrow( obj );
     315}
     316
    288317
    289318// this configure will configure each of the collection servers
     
    293322  // created
    294323
    295   //  cout << "Corbaproto::Configure" << endl;
    296 
    297   char *dummyv[1] = {""};
    298   int   dummyc = 0;
    299   // CORBA variables
    300   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    301   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    302 
    303   // Get ref from "naming service"
    304   ifstream in ("/tmp/account.objid");
    305   char ref[1000];
    306   in >> ref;
    307   in.close ();
    308 
    309   // startup corba
    310   static CORBA::Object_var obj = orb->string_to_object (ref);
    311 
    312   corbaiface_var lclient = corbaiface::_narrow( obj );
    313 
     324  // cout << "Corbaproto::Configure" << endl;
    314325  corbatext_t      corbaKey;
    315326  corbatext_tarray corbaCfgline;
    316327
     328  // get the corba client reference
     329  corbaiface_var lclient = this->getCorbaClient();
     330
     331  // convert all the requisite structures into their CORBA form
    317332  corbaconv_text_t::getCorbatext(key,corbaKey);
    318333  corbatext_arrayToCorbaArray(cfgline, &corbaCfgline);
    319334
     335  // execute the corba transaction
    320336  lclient->configure(corbaKey, corbaCfgline); 
    321337}
     
    323339// this init will configure and init each of the collection servers
    324340bool corbaproto::init (ostream &logout) {
    325   //  cout << "Corbaproto::Init" << endl;
    326 
    327   char *dummyv[1] = {""};
    328   int   dummyc = 0;
    329   // CORBA variables
    330   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    331   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    332 
    333   // Get ref from "naming service"
    334   ifstream in ("/tmp/account.objid");
    335   char ref[1000];
    336   in >> ref;
    337   in.close ();
    338 
    339   // startup corba
    340   static CORBA::Object_var obj = orb->string_to_object (ref);
    341 
    342   corbaiface_var lclient = corbaiface::_narrow( obj );
    343 
     341//  cout << "Corbaproto::Init" << endl;
     342
     343  // get the corba client reference
     344  corbaiface_var lclient = this->getCorbaClient();
     345
     346  // execute the corba transaction
    344347  return lclient->init();
    345348}
     
    353356                     ostream &/*logout*/) {
    354357
    355   //  cout << "Corbaproto::Collection list" << endl;
     358  cout << "Corbaproto::Collection list" << endl;
    356359
    357360  corbatext_tarray corba_collist;
    358   corbatext_t      collection;
    359361  text_tarray      tcollist;
    360362
    361   /*  collist.erase(collist.begin(),collist.end());
    362   err = noError;
    363 
    364   collectservermapclass::iterator here = cservers.begin();
    365   collectservermapclass::iterator end = cservers.end();
    366   while (here != end) {
    367     assert ((*here).second.c != NULL);
    368     if ((*here).second.c != NULL) {
    369       collist.push_back ((*here).second.c->get_collection_name());
    370     }
    371     here++;
    372   }
    373   */
    374   char *dummyv[1] = {""};
    375   int   dummyc = 0;
    376   // CORBA variables
    377   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    378   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    379 
    380   // Get ref from "naming service"
    381   ifstream in ("/tmp/account.objid");
    382   char ref[1000];
    383   in >> ref;
    384   in.close ();
    385 
    386   // startup corba
    387   static CORBA::Object_var obj = orb->string_to_object (ref);
    388 
    389   corbaiface_var lclient = corbaiface::_narrow( obj );
    390 
     363  // get the corba client reference
     364  corbaiface_var lclient = this->getCorbaClient();
     365
     366  // execute the corba transaction
    391367  lclient->collectionList(corba_collist);
    392368
     369  // convert the response back to normal form
    393370  corbatext_corbaArrayToArray(corba_collist, &tcollist);
    394371  collist = tcollist;
     
    399376void corbaproto::has_collection (const text_t &collection, bool &hascollection,
    400377                comerror_t &err, ostream &/*logout*/) {
    401   //  cout << "Corbaproto::Has collection" << endl;
    402 
    403   /*  hascollection = (cservers.getcollectserver(collection) != NULL);
    404   err = noError;
    405   return;*/
    406 
    407   char *dummyv[1] = {""};
    408   int   dummyc = 0;
    409   corbatext_t_var corbaCollectPtr;
     378  // cout << "Corbaproto::Has collection" << endl;
     379
    410380  corbatext_t     corbaCollection;
    411381  corbaComError corbaError;
    412382  CORBA::Boolean corbaHas;
    413383
    414   // CORBA variables
    415   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    416   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    417 
    418   // Get ref from "naming service"
    419   ifstream in ("/tmp/account.objid");
    420   char ref[1000];
    421   in >> ref;
    422   in.close ();
    423 
    424   // startup corba
    425   static CORBA::Object_var obj = orb->string_to_object (ref);
    426 
    427   corbaiface_var lclient = corbaiface::_narrow( obj );
    428 
    429   // corbaCollectPtr = &corbaCollection;
    430   //corbatext_corbatext(collection, corbaCollectPtr);
     384  // get the corba client reference
     385  corbaiface_var lclient = this->getCorbaClient();
     386
     387  // convert all the requisite structures into their CORBA form
    431388  corbaconv_text_t::getCorbatext(collection,corbaCollection);
    432389 
     390  // execute the corba transaction
    433391  lclient->hasCollection(corbaCollection, corbaHas, corbaError);
    434392
     393  // convert the response back to normal form
    435394  hascollection = (corbaHas != 0);
    436395  err = noError;
    437 
    438396}
    439397
     
    442400  //  cout << "Corbaproto::Ping" << endl;
    443401
    444   char *dummyv[1] = {""};
    445   int   dummyc = 0;
    446   // CORBA variables
    447   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    448   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    449 
    450   // Get ref from "naming service"
    451   ifstream in ("/tmp/account.objid");
    452   char ref[1000];
    453   in >> ref;
    454   in.close ();
    455 
    456   // startup corba
    457   static CORBA::Object_var obj = orb->string_to_object (ref);
    458 
    459   corbaiface_var lclient = corbaiface::_narrow( obj );
    460 
    461402  corbatext_t corbaCollect;
    462403  corbaComError corbaError;
    463404  bool success;
    464405
     406  // get the corba client reference
     407  corbaiface_var lclient = this->getCorbaClient();
     408
     409  // convert all the requisite structures into their CORBA form
    465410  corbaconv_text_t::getCorbatext(collection,corbaCollect);
     411
     412  // execute the corba transaction
    466413  success = lclient->ping(corbaCollect, corbaError);
    467414 
    468   wassuccess = success;
    469   /* 
    470   wassuccess = (cservers.getcollectserver(collection) != NULL);
    471   err = noError;
    472   */
     415  // convert the response back to normal form
     416  wassuccess = (success != 0);
    473417}
    474418
     
    478422  //  cout << "Corbaproto::Collectinfo" << endl;
    479423
    480   char *dummyv[1] = {""};
    481   int   dummyc = 0;
    482 
    483   // CORBA variables
    484   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    485   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    486 
    487   // Get ref from "naming service"
    488   ifstream in ("/tmp/account.objid");
    489   char ref[1000];
    490   in >> ref;
    491   in.close ();
    492 
    493   // startup corba
    494   static CORBA::Object_var obj = orb->string_to_object (ref);
    495 
    496   corbaiface_var lclient = corbaiface::_narrow( obj );
    497 
    498424  corbatext_t          corbaCollection;
    499425  corbaComError        corbaError;
    500426  corbaColInfoResponse corbaCollectInfo;
    501427
     428  // get the corba client reference
     429  corbaiface_var lclient = this->getCorbaClient();
     430
     431  // convert all the requisite structures into their CORBA form
    502432  corbaconv_text_t::getCorbatext(collection,corbaCollection);
     433
     434  // execute the corba transaction
    503435  lclient->getCollectInfo(corbaCollection, corbaCollectInfo, corbaError);
    504436
     437  // convert the response back to normal form
    505438  collectinfo.isPublic = corbaCollectInfo.isPublic;
    506439  collectinfo.isBeta   = corbaCollectInfo.isBeta;
    507440  collectinfo.buildDate = corbaCollectInfo.buildDate;
     441  corbatext_corbaArrayToArray(corbaCollectInfo.ccsCols, &collectinfo.ccsCols);
    508442  corbatext_corbaArrayToArray(corbaCollectInfo.languages, &collectinfo.languages);
    509443  collectinfo.numDocs   = corbaCollectInfo.numDocs;
     
    516450
    517451  err = (comerror_t) corbaError; 
    518   /* 
    519   collectserver *cserver = cservers.getcollectserver (collection);
    520   if (cserver != NULL) cserver->get_collectinfo (collectinfo, err, logout);
    521   else err = protocolError;
    522   */
    523452}
    524453
     
    529458  //  cout << "Corbaproto::Filterinfo" << endl;
    530459
    531   char *dummyv[1] = {""};
    532   int   dummyc = 0;
    533   // CORBA variables
    534   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    535   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    536 
    537   // Get ref from "naming service"
    538   ifstream in ("/tmp/account.objid");
    539   char ref[1000];
    540   in >> ref;
    541   in.close ();
    542 
    543   // startup corba
    544   static CORBA::Object_var obj = orb->string_to_object (ref);
    545 
    546   corbaiface_var lclient = corbaiface::_narrow( obj );
    547 
    548460  corbatext_t corbaCollection;
    549461  corbatext_tset corbaResponse;
    550462  corbaComError corbaError;
    551463 
     464  // get the corba client reference
     465  corbaiface_var lclient = this->getCorbaClient();
     466
     467  // convert all the requisite structures into their CORBA form
    552468  corbaconv_text_t::getCorbatext(collection,corbaCollection);
    553469
     470  // execute the corba transaction
    554471  lclient->getFilterInfo(corbaCollection, corbaResponse, corbaError);
    555472
     473  // convert the response back to normal form
    556474  corbatext_corbaArrayToSet(corbaResponse, &response.filterNames);
    557475
    558476  err = (comerror_t) corbaError;
    559 
    560   /*
    561   collectserver *cserver = cservers.getcollectserver (collection);
    562   if (cserver != NULL) cserver->get_filterinfo (response, err, logout);
    563   else err = protocolError;
    564   */
    565477}
    566478
     
    570482                   comerror_t &err, ostream &logout) {
    571483  //  cout << "Corbaproto::Filteroptions" << endl;
    572 
    573   char *dummyv[1] = {""};
    574   int   dummyc = 0;
    575   // CORBA variables
    576   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    577   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    578 
    579   // Get ref from "naming service"
    580   ifstream in ("/tmp/account.objid");
    581   char ref[1000];
    582   in >> ref;
    583   in.close ();
    584 
    585   // startup corba
    586   static CORBA::Object_var obj = orb->string_to_object (ref);
    587 
    588   corbaiface_var lclient = corbaiface::_narrow( obj );
    589484
    590485  corbatext_t corbaCollection;
     
    596491  FilterOption_t *option;
    597492
     493  // get the corba client reference
     494  corbaiface_var lclient = this->getCorbaClient();
     495
     496  // convert all the requisite structures into their CORBA form
    598497  corbaconv_text_t::getCorbatext(collection,corbaCollection);
    599498  corbaconv_text_t::getCorbatext(request.filterName,filterName);
    600499
     500  // execute the corba transaction
    601501  lclient->getFilterOptions(corbaCollection, filterName, corbaResponse, corbaError);
    602502
     503  // convert the response back to normal form
    603504  for (i = 0; i < corbaResponse.names.length(); i ++)
    604505    {
     
    616517
    617518  err =  (comerror_t) corbaError;
    618   /*
    619   collectserver *cserver = cservers.getcollectserver (collection);
    620   if (cserver != NULL) cserver->get_filteroptions (request, response, err, logout);
    621   else err = protocolError;
    622   */
    623519}
    624520
     
    631527  corbaFilterRequest corbaRequest;
    632528  corbaFilterResponse corbaResponse;
    633 
    634   char *dummyv[1] = {""};
    635   int   dummyc = 0;
    636   corbatext_t_var corbaCollectPtr;
    637529  corbatext_t     corbaCollection;
    638530  corbaComError corbaError;
    639531
    640   // CORBA variables
    641   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    642   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    643 
    644   // Get ref from "naming service"
    645   ifstream in ("/tmp/account.objid");
    646   char ref[1000];
    647   in >> ref;
    648   in.close ();
    649 
    650   // startup corba
    651   static CORBA::Object_var obj = orb->string_to_object (ref);
    652 
    653   corbaiface_var lclient = corbaiface::_narrow( obj );
    654 
    655   corbaconv_text_t::fillUsString(collection,&corbaCollection.text);
    656 
    657   corbaconv_text_t::fillUsString(request.filterName,&corbaRequest.filter.text);
     532  // get the corba client reference
     533  corbaiface_var lclient = this->getCorbaClient();
     534
     535  // convert all the requisite structures into their CORBA form
     536  corbaconv_text_t::getCorbatext(collection,corbaCollection);
     537  corbaconv_text_t::getCorbatext(request.filterName,corbaRequest.filter);
    658538  corbatext_optionValueArrayToCorba(request.filterOptions, corbaRequest.filterOptions);
    659539  corbatext_arrayToCorbaArray(request.docSet, &corbaRequest.docSet);
     
    667547  corbaresponse_resultDocInfoToCorba(response.docInfo, corbaResponse.docInfo);
    668548
     549  // execute the corba transaction
    669550  lclient->filter (corbaCollection, corbaRequest, corbaResponse, corbaError);
    670551
     552  // convert the response back to normal form
    671553  response.numDocs = corbaResponse.numDocs;
    672554  response.isApprox = corbaResponse.isApprox;
     
    674556
    675557  err = (comerror_t) corbaError;
    676   /*
    677   collectserver *cserver = cservers.getcollectserver (collection);
    678   if (cserver != NULL) cserver->filter (request, response, err, logout);
    679   else err = protocolError;
    680   */
    681558  //  cout << "Corbaproto::Filter" << endl;
    682559
     
    689566  //  cout << "Corbaproto::Get Document" << endl;
    690567
    691   /*  collectserver *cserver = cservers.getcollectserver (collection);
    692   if (cserver != NULL) cserver->get_document (request, response, err, logout);
    693   else err = protocolError;
    694   */
    695 
    696   char *dummyv[1] = {""};
    697   int   dummyc = 0;
    698 
    699   // CORBA variables
    700   static CORBA::ORB_var orb = CORBA::ORB_init( dummyc , dummyv, "mico-local-orb" );
    701   static CORBA::BOA_var boa = orb->BOA_init( dummyc , dummyv, "mico-local-boa" );
    702 
    703   // Get ref from "naming service"
    704   ifstream in ("/tmp/account.objid");
    705   char ref[1000];
    706   in >> ref;
    707   in.close ();
    708 
    709   // startup corba
    710   static CORBA::Object_var obj = orb->string_to_object (ref);
    711 
    712   corbaiface_var lclient = corbaiface::_narrow( obj );
    713 
    714568  corbatext_t      corbaCollect;
    715569  corbaDocRequest  corbaRequest;
     
    717571  corbaComError    corbaError;
    718572
     573  // get the corba client reference
     574  corbaiface_var lclient = this->getCorbaClient();
     575
     576  // convert all the requisite structures into their CORBA form
    719577  corbaconv_text_t::getCorbatext(collection,corbaCollect);
    720578  corbaconv_text_t::getCorbatext(request.OID,corbaRequest.OID);
     
    722580  corbaconv_text_t::getCorbatext(request.docFormat,corbaRequest.docFormat);
    723581
     582  // execute the corba transaction
    724583  lclient->getDocument(corbaCollect, corbaRequest, corbaResponse, corbaError);
     584
     585  // convert the response back to normal form
    725586  corbaconv_text_t::setCorbatext(response.doc,corbaResponse.doc);
    726587
    727588  err = (comerror_t) corbaError;
    728589}
     590
Note: See TracChangeset for help on using the changeset viewer.