return to first page linux journal archive
keywordscontents

Listing 5. C++ in Client.C File

#include <iostream.h>
#include <fstream.h>
#include "PushString.hh"
int main(int argc, char ** argv)
{
  char tmpFilePath[1024];
  char *IOR = new char[1024];
  ifstream f_in("ior.out");
  if(!f_in)
  {
    cerr << 
     "\nCould not open ior.out for reading: "
      << "Things to check:" << endl;
    cerr << "1. Is server running?" << endl;
    cerr << "2. If so, is its ior.out file"
      << "accessible from the" << endl;
    cerr << "directory that client is running "
      << "from currently?" << endl;
    exit(-1);
  }
  f_in >> IOR;

  CORBA::ORB_ptr orb = 
      CORBA::ORB_init(argc,argv,"omniORB2");
  CORBA::BOA_ptr boa = 
      orb->BOA_init(argc,argv,"omniORB2_BOA");
  PushString_var pushStringVar;
  try {
    CORBA::Object_var obj = 
       orb->string_to_object(IOR);
    pushStringVar = PushString::_narrow(obj);
    CORBA::String_var src = 
       (const char *) "Hello World";
    CORBA::String_var dest;
    cerr << "client callint PushStr with string: "
     << src << endl;
    pushStringVar->pushStr(src); 
    // Call the remote object's pushStr function
    cerr << "client returned from PushStr call "
     << "without an exception" << endl;
  }
  catch( CORBA::COMM_FAILURE & ex) {
    cerr << "Caught system exception COMM_FAILURE"
     << endl;
    cerr << "We seem to be missing a server "
     << "object" << endl;
    cerr << "Make sure that (1) the server is "
     << "running and" << endl;
    cerr << "(2) that the ior.out file that "
     << "server writes" << endl;
    cerr << "out is accessible from this "
     << "client's" << endl;
    cerr << "present working directory"
     << endl;
  }
  catch( omniORB::fatalException & ex) {
    cerr << "Caught omniORB2 fatalException. "
     << "This is a bug in omniORB" << endl;
  }
}