#include <fstream.h>
#include "account.h"


int main( int argc, char *argv[] )
{
  assert(argc == 2);

  // ORB initialization
  CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB2");
  CORBA::BOA_var boa = orb->BOA_init(argc, argv, "omniORB2_BOA");

  ifstream istr;
  char buf[1024];

  cout << "Getting the stringified account object reference from file "
       << argv[1] << endl;
  istr.open(argv[1]);
  if (!istr) {
    cerr << "error: file " << argv[1] << " not readable" << endl;
    exit(1);
  }
  istr >> buf;
  CORBA::String_var ref = (const char *)buf;
  cout << "Making the account object reference" << endl;
  CORBA::Object_var obj = orb->string_to_object(ref);
  assert (!CORBA::is_nil(obj));
  SavingsAccount_var client = SavingsAccount::_narrow( obj );
  assert(!CORBA::is_nil(client));

  cout << "Made it here." << endl;

  client->deposit( 700 );
  client->withdraw( 250 );
  cout << "Balance is " << client->balance() << endl;

  client->creditInterest();
  cout << "With interest, balance is " << client->balance() << endl;

  return 0;
}
