LTP GCOV extension - code coverage report
Current view: directory - src/cpp/prod/services/naming - NameServer.cpp
Test: YAORB-0.2.info
Date: 2006-02-27 Instrumented lines: 52
Code covered: 78.8 % Executed lines: 41

       1                 : //=============================================================================
       2                 : // File <$/src/cpp/prod/services/naming/NameServer.cpp>
       3                 : // This file is part of YaOrb : Yet Another Object Request Broker,
       4                 : // Copyright (c) 2000-2003, Marc Alff.
       5                 : //
       6                 : // This program is free software; you can redistribute it and/or
       7                 : // modify it under the terms of the GNU General Public License
       8                 : // as published by the Free Software Foundation; either version 2
       9                 : // of the License, or (at your option) any later version.
      10                 : //
      11                 : // This program is distributed in the hope that it will be useful,
      12                 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13                 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14                 : // GNU General Public License for more details.
      15                 : //
      16                 : // You should have received a copy of the GNU General Public License
      17                 : // along with this program; if not, write to the Free Software
      18                 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
      19                 : //
      20                 : //=============================================================================
      21                 : 
      22                 : #include <signal.h>
      23                 : #include <iostream>
      24                 : 
      25                 : #include <yaorb/CORBA.h>
      26                 : #include <yaorb/YAORB.h>
      27                 : 
      28                 : #include "src/cpp/prod/services/naming/CosNamingImpl.h"
      29                 : 
      30               1 : static CORBA::ORB_var myOrb ;
      31                 : 
      32                 : void
      33               1 : OnSignal(int sig)
      34                 : {
      35               1 :    std::cerr << "Catching signal " << sig << std::endl ;
      36               1 :    if (sig == SIGTERM)
      37                 :    {
      38               1 :       if( ! CORBA::is_nil(myOrb))
      39                 :       {
      40               1 :          myOrb->shutdown(false) ;
      41                 :       }
      42                 :    }
      43                 : }
      44                 : 
      45               1 : int main(int argc, char* argv[])
      46                 : {
      47                 :    try
      48                 :    {
      49                 :       // FIXME :
      50               1 :       int _argc = 7 ;
      51                 :       char *_argv[] =
      52                 :       {
      53                 :          "NameServer",
      54                 :          "-ORBId", "NameServer",
      55                 :          "-ORBModel", "SingleServer",
      56                 :          "-ORBConfig", "NameServer.config"
      57               1 :       } ;
      58                 : 
      59               1 :       myOrb = CORBA::ORB_init(_argc, _argv) ;
      60                 : 
      61               1 :       if( CORBA::is_nil(myOrb))
      62                 :       {
      63               0 :          std::cerr << "CORBA::ORB_init failed." << std::endl ;
      64               0 :          throw CORBA::UNKNOWN() ;
      65                 :       }
      66                 : 
      67                 :       CORBA::Object_var obj ;
      68                 :       PortableServer::POA_var rootPOA ;
      69               1 :       obj = myOrb->resolve_initial_references("RootPOA") ;
      70                 : 
      71               1 :       rootPOA = PortableServer::POA::_narrow(obj) ;
      72                 : 
      73               1 :       if (CORBA::is_nil(rootPOA))
      74                 :       {
      75               0 :          std::cerr << "No RootPOA." << std::endl ;
      76               0 :          throw CORBA::UNKNOWN() ;
      77                 :       }
      78                 : 
      79                 :       PortableServer::POAManager_var theMgr ;
      80               1 :       theMgr = rootPOA->the_POAManager() ;
      81                 : 
      82                 :       PortableServer::POA_var ncPOA ;
      83                 :       PortableServer::POA_var itPOA ;
      84                 : 
      85                 :       CORBA::PolicyList policies(7) ;
      86                 :       policies.length(7) ;
      87                 : 
      88                 :       policies[0] = rootPOA->create_thread_policy(
      89               1 :          PortableServer::ORB_CTRL_MODEL) ;
      90                 : 
      91                 :       policies[1] = rootPOA->create_lifespan_policy(
      92               1 :          PortableServer::PERSISTENT) ;
      93                 : 
      94                 :       policies[2] = rootPOA->create_id_uniqueness_policy(
      95               1 :          PortableServer::MULTIPLE_ID) ;
      96                 : 
      97                 :       policies[3] = rootPOA->create_id_assignment_policy(
      98               1 :          PortableServer::USER_ID) ;
      99                 : 
     100                 :       policies[4] = rootPOA->create_implicit_activation_policy(
     101               1 :          PortableServer::NO_IMPLICIT_ACTIVATION) ;
     102                 : 
     103                 :       policies[5] = rootPOA->create_servant_retention_policy(
     104               1 :          PortableServer::NON_RETAIN) ;
     105                 : 
     106                 :       policies[6] = rootPOA->create_request_processing_policy(
     107               1 :          PortableServer::USE_DEFAULT_SERVANT) ;
     108                 : 
     109               1 :       ncPOA = rootPOA->create_POA("NC", theMgr, policies) ;
     110                 : 
     111               1 :       NamingContextImpl::Init("/tmp/test") ; // FIXME
     112                 : 
     113               1 :       NamingContextImpl *servant = new NamingContextImpl() ;
     114               1 :       ncPOA->set_servant(servant) ;
     115               1 :       theMgr->activate() ;
     116                 : 
     117                 :       // Find the Initial Naming Context
     118                 :       CORBA::Object_var inc ;
     119               1 :       inc = NamingContextImpl::resolveInitial(ncPOA) ;
     120                 : 
     121               1 :       CORBA::String_var incIOR ;
     122               1 :       incIOR = myOrb->object_to_string(inc) ;
     123                 : 
     124               1 :       std::cout << "Initial Naming Context IOR (begin)" << std::endl ;
     125               1 :       std::cout << incIOR.in() << std::endl ;
     126               1 :       std::cout << "Initial Naming Context IOR (end)" << std::endl ;
     127                 :       std::cout << std::flush ;
     128                 : 
     129                 :       sighandler_t oriHandler_TERM = NULL ;
     130               1 :       signal(SIGPIPE, OnSignal) ;
     131               1 :       oriHandler_TERM = signal(SIGTERM, OnSignal) ;
     132                 : 
     133               1 :       myOrb->run() ;
     134                 : 
     135               1 :       signal(SIGTERM, oriHandler_TERM) ;
     136                 : 
     137               1 :       myOrb = CORBA::ORB::_nil() ;
     138                 : 
     139                 :       // ncPOA->set_servant(NULL) ;
     140                 : 
     141               1 :       return 0L ;
     142                 :    }
     143               0 :    catch (CORBA::SystemException& e)
     144                 :    {
     145               0 :       std::cerr << "System Exception :" << e.minor() << std::endl ;
     146               0 :       return -1 ;
     147                 :    }
     148               0 :    catch (CORBA::UserException& e)
     149                 :    {
     150               0 :       std::cerr << "User Exception" << std::endl ;
     151               0 :       return -2 ;
     152                 :    }
     153               1 : }
     154               1 : 

Generated by: LTP GCOV extension version 1.4