|  |  | WebLogic Server 6.1 Code Examples, BEA Systems, Inc. | 
Package examples.iiop.ejb.stateless.cppclient
WebLogic Server 6.1 Examples: Package examples.iiop.ejb.stateless.cppclient
#include "CosNaming_c.hh"
#include "client_c.hh"
USE_STD_NS
class TradeResultImpl : public virtual ::examples::iiop::ejb::stateless::OBV_TradeResult,
                  public virtual CORBA::DefaultValueRefCountBase
{
  public:
  TradeResultImpl() : OBV_TradeResult () {}
  virtual ~TradeResultImpl(){}
  CORBA_ValueBase* _copy_value() {
    return new TradeResultImpl ();
  }
};
class TradeResultFactory: public ::examples::iiop::ejb::stateless::TradeResult_init
{
  public:
  TradeResultFactory(){}
  virtual  ~TradeResultFactory(){}
  CORBA::ValueBase*  create_for_unmarshal() {
    return new TradeResultImpl();
  }
};
int main(int argc, char* const* argv)
{
  try {
    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
    // string to object
    CORBA::Object_ptr o;
    cout << "Getting name service reference" << endl;
    if (argc >= 2 && strncmp (argv[1], "IOR", 3) == 0)
      o = orb->string_to_object(argv[1]);
    else
      o = orb->resolve_initial_references("NameService");
    orb->register_value_factory("RMI:examples.iiop.ejb.stateless.TradeResult:8B2D783A25536FE8:216A41BD60B6E922", (CORBA::ValueFactory)new TradeResultFactory);
    // obtain a naming context
    cout << "Narrowing to a naming context" << endl;
    CosNaming::NamingContext_var context = CosNaming::NamingContext::_narrow(o);
    CosNaming::Name name;
    name.length(1);
    name[0].id = "TraderHome_iiop";
    name[0].kind = "";
    // resolve and narrow to RMI object
    cout << "Resolving the naming context" << endl;
    CORBA::Object_var object = context->resolve(name);
    cout << "Narrowing to the TraderHome" << endl;
    examples::iiop::ejb::stateless::TraderHome_var home =
      examples::iiop::ejb::stateless::TraderHome::_narrow(object);
     examples::iiop::ejb::stateless::Trader_ptr bean = home->create();
    CORBA::WChar* stocks[]={L"BEAS", L"MSFT", L"AMZN", L"HWP", 0};
    for (int i=0; i<4; i++) {
      int shares = (i+1) * 100;
      cout << "Buying " << shares << " shares of " << (char*)stocks[i] << endl;
      ::CORBA::WStringValue vl = ::CORBA::WStringValue(stocks[i]);
      examples::iiop::ejb::stateless::TradeResult_var tr = bean->buy(&vl, shares);
      cout << "Bought " << tr->numberTraded() << " shares of " <<
	(char*)(tr->stockSymbol()->_value()) << endl;
    }
  }
  catch(const CORBA::Exception& e) {
    cout << "Failure: " << e << endl;
  }
  return 0;
}
Copyright © 2001 BEA Systems, Inc. All Rights Reserved.
Copyright © 2001 BEA Systems, Inc. All Rights Reserved.