9.2.3 _tie_Accountクラスを使用するためのサーバの変更(C++)

コードサンプル9-2に_tie_Accountクラスを使用する際に必要なServer.Cファイルの変更内容を示します。

コードサンプル9-2 _tieクラスを使用したサーバの例

#include "Bank_s.hh"
#include <math.h>
. . .
int main(int argc, char* const* argv) {
  try {
     // Initialize the ORB.
     CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);

     // get a reference to the rootPOA
     PortableServer::POA_var rootPOA =
           PortableServer::POA::_narrow(
           orb->resolve_initial_references("RootPOA"));

     CORBA::PolicyList policies;
     policies.length(1);
     policies[(CORBA::ULong)0] =
           rootPOA->create_lifespan_policy(
           PortableServer::PERSISTENT);

     // get the POA Manager
     PortableServer::POAManager_var poa_manager =
           rootPOA->the_POAManager();

     // Create myPOA with the right policies
     PortableServer::POA_var myPOA =
           rootPOA->create_POA("bank_agent_poa",
           poa_manager, policies);
     // Create the servant
     AccountManagerImpl managerServant(rootPOA);

     // Create the delegator
     POA_Bank_AccountManager_tie<AccountManagerImpl>
           tieServer(managerServant);

     // Decide on the ID for the servant
     PortableServer::ObjectId_var managerId =
           PortableServer::string_to_ObjectId("BankManager");

     // Activate the servant with the ID on myPOA
     myPOA->activate_object_with_id(managerId, &tieServer);

     // Activate the POA Manager
     poa_manager->activate();

     cout << myPOA->servant_to_reference(&tieServer) <<
           "is ready" << endl;

     // Wait for incoming requests
     orb->run();
  } catch(const CORBA::Exception& e) {
     cerr << e << endl;
     return 1;
  }
  return 0;
}