#define USE_POA //#define NESTED #include <CORBA.h> #ifdef HAVE_ANSI_CPLUSPLUS_HEADERS #include <iostream> #else // HAVE_ANSI_CPLUSPLUS_HEADERS #include <iostream.h> #endif // HAVE_ANSI_CPLUSPLUS_HEADERS #include "bench.h" #include "bench_impl.h" #include <mico/os-misc.h> using namespace std; int main (int argc, char *argv[]) { CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "mico-local-orb"); #if defined(USE_POA) CORBA::Object_var poaobj = orb->resolve_initial_references ("RootPOA"); PortableServer::POA_var poa = PortableServer::POA::_narrow (poaobj); Bench_impl3 *mybench_serv = new Bench_impl3; PortableServer::ObjectId_var oid = poa->activate_object (mybench_serv); Bench_var mybench = mybench_serv->_this(); poa->the_POAManager()->activate(); #else CORBA::BOA_var boa = orb->BOA_init (argc, argv, "mico-local-boa"); Bench_ptr mybench = new Bench_impl; boa->impl_is_ready (CORBA::ImplementationDef::_nil()); #endif assert (argc == 2); CORBA::Object_var obj = orb->bind ("IDL:Bench:1.0", argv[1]); if (CORBA::is_nil (obj)) { cout << "cannot bind to " << argv[1] << endl; return 1; } Bench_var bench = Bench::_narrow (obj); #ifdef NESTED mybench->connect (bench, 2500); bench->connect (mybench, 2500); #endif OSMisc::TimeVal t1, t2; bench->sync(); t1 = OSMisc::gettime(); #ifdef NESTED bench->g (); #else for (int i = 0; i < 30000; ++i) { bench->f (); } bench->sync (); #endif t2 = OSMisc::gettime(); cout << (double)((t2.tv_sec-t1.tv_sec)*1000 + (t2.tv_usec-t1.tv_usec)/1000)/30000 << " ms per call" << endl; return 0; }