⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.cc

📁 MICO2.3.13 corba 环境平台
💻 CC
字号:
#include <mico/CCM.h>#include <mico/CCMContainer.h>#include <coss/CosNaming.h>#include "philo.h"using namespace std;intmain (int argc, char *argv[]){  CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);  MICO::CCM::register_all_factories (orb);  CORBA::Object_var obj = orb->resolve_initial_references ("NameService");  CosNaming::NamingContextExt_var nc =    CosNaming::NamingContextExt::_narrow (obj);  CORBA::ULong i=3;  if (argc >= 2 && *argv[1] > '1' && *argv[1] < '9') {    if ((i = atoi (argv[1])) == 0) {      i = 3;    }  }  cout << "creating Observer ... " << flush;  DiningPhilosophers::StatusInfoConsumer_var obco =    DiningPhilosophers::StatusInfoConsumer::_nil ();  try {    obj = nc->resolve_str ("ObserverHome");  } catch (...) {    obj = CORBA::Object::_nil ();  }  if (!CORBA::is_nil (obj)) {    DiningPhilosophers::ObserverHome_var obh =      DiningPhilosophers::ObserverHome::_narrow (obj);    DiningPhilosophers::Observer_var ob = obh->create ();    obco = ob->get_consumer_info ();    ob->configuration_complete ();    cout << "done." << endl;  }  else {    cout << "No Observer Home found." << endl;  }  cout << "Looking for TkObserver ... " << flush;  DiningPhilosophers::StatusInfoConsumer_var obgui =    DiningPhilosophers::StatusInfoConsumer::_nil ();  try {    obj = nc->resolve_str ("TkObserverHome");  } catch (...) {    obj = CORBA::Object::_nil ();  }  if (!CORBA::is_nil (obj)) {    DiningPhilosophers::ObserverHome_var obh =      DiningPhilosophers::ObserverHome::_narrow (obj);    DiningPhilosophers::Observer_var ob = obh->create ();    obgui = ob->get_consumer_info ();    ob->configuration_complete ();    cout << "done." << endl;  }  else {    obgui = DiningPhilosophers::StatusInfoConsumer::_nil ();  }  if (!CORBA::is_nil (obgui)) {    cout << "found." << endl;  }  else {    cout << "not found." << endl;  }  cout << "creating Forks ... " << flush;  obj = nc->resolve_str ("ForkHome");  DiningPhilosophers::ForkHome_var csh =    DiningPhilosophers::ForkHome::_narrow (obj);  DiningPhilosophers::ForkManager_var fm;  DiningPhilosophers::Fork_var* f = new DiningPhilosophers::Fork_var[i];  for (CORBA::ULong j1=0; j1<i; j1++) {    fm = csh->create ();    f[j1] = fm->provide_the_fork ();    fm->configuration_complete ();  }  cout << "done." << endl;  cout << "creating Philosophers ... " << flush;  obj = nc->resolve_str ("PhilosopherHome");  DiningPhilosophers::PhilosopherHome_var ph =    DiningPhilosophers::PhilosopherHome::_narrow (obj);  DiningPhilosophers::Philosopher_var* p = new DiningPhilosophers::Philosopher_var[i];  for (CORBA::ULong j2=0; j2<i; j2++) {    p[j2] = ph->create ();  }  cout << "done." << endl;  cout << "configuring Philosophers ... " << flush;  const char * philosophers[] = {    "Socrates", "Plato", "Aristotle", "Pythagoras", "Zeno",    "Heraclitus", "Democritus", "Descartes", "Kant", "Protagoras"  };  for (CORBA::ULong j3=0; j3<i; j3++) {    if (j3 < 10) {      p[j3]->name (philosophers[j3]);    }    if (!CORBA::is_nil (obco)) {      p[j3]->subscribe_info (obco);    }    if (!CORBA::is_nil (obgui)) {      p[j3]->subscribe_info (obgui);    }  }  for (CORBA::ULong j4=0; j4<i; j4++) {    p[j4]->connect_left (f[j4]);    p[j4]->connect_right (f[(j4+1)%i]);  }  cout << "done." << endl;  cout << "activating Philosophers ... " << flush;  for (CORBA::ULong j5=0; j5<i; j5++) {    p[j5]->configuration_complete ();  }  cout << "done." << endl;  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -