1 : //==============================================================================
2 : // File <$/test/cpp/app/server.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 <stdio.h>
23 : #include <iostream>
24 : #include <yaorb/CORBA.h>
25 : #include <yaorb/YAORB.h>
26 :
27 : #include <CosNaming.h>
28 :
29 : #include "src/cpp/prod/tool/Assert.h"
30 :
31 2 : int main(int argc, char *argv[])
32 : {
33 : try
34 : {
35 2 : int _argc = 5 ;
36 : char *_argv[] =
37 : {
38 : "server", "-ORBId", "App", "-ORBModel", "MultiThreadServer",
39 2 : } ;
40 :
41 2 : CORBA::ORB_var myOrb = CORBA::ORB_init(_argc, _argv) ;
42 :
43 : ASSERT( ! CORBA::is_nil(myOrb)) ;
44 :
45 : CORBA::ORB::ObjectIdList *services ;
46 :
47 1 : services = myOrb->list_initial_services() ;
48 :
49 1 : if (services != NULL)
50 : {
51 17 : for (unsigned int i = 0 ;
52 : i < services->length() ;
53 : i++)
54 : {
55 : std::cout << "Service[" << i << "]="
56 16 : << (*services)[i].in() << std::endl ;
57 : }
58 : }
59 :
60 : CORBA::Object_var obj ;
61 1 : obj = myOrb->resolve_initial_references("NameService") ;
62 :
63 : CosNaming::NamingContext_var inc ;
64 1 : inc = CosNaming::NamingContext::_narrow(obj) ;
65 :
66 1 : if (CORBA::is_nil(inc))
67 : {
68 1 : std::cout << "CosNaming::NamingContext::_narrow() failed !" ;
69 : }
70 :
71 : PortableServer::POA_var rootPOA ;
72 1 : obj = myOrb->resolve_initial_references("RootPOA") ;
73 :
74 1 : rootPOA = PortableServer::POA::_narrow(obj) ;
75 :
76 1 : if (CORBA::is_nil(rootPOA))
77 : {
78 0 : std::cout << "PortableServer::POA::_narrow() failed !" ;
79 : }
80 :
81 : PortableServer::POAManager_var myManager ;
82 :
83 : PortableServer::POA_var myPOA ;
84 : // myPOA = ???
85 :
86 : CORBA::PolicyList policies(2) ;
87 : policies.length(2) ;
88 :
89 : policies[0] = rootPOA->create_thread_policy(
90 1 : PortableServer::ORB_CTRL_MODEL) ;
91 :
92 : policies[1] = rootPOA->create_lifespan_policy(
93 1 : PortableServer::PERSISTENT) ;
94 :
95 1 : myPOA = rootPOA->create_POA("MyPOA", myManager, policies) ;
96 :
97 10 : for (int i=0; i<10; i++)
98 : {
99 10 : if (myOrb->work_pending())
100 : {
101 0 : myOrb->perform_work() ;
102 : }
103 : }
104 :
105 : return 0L ;
106 : }
107 2 : catch (CORBA::SystemException& e)
108 : {
109 1 : std::cerr << "System Exception :" << e.minor() << std::endl ;
110 1 : return -1 ;
111 : }
112 0 : catch (CORBA::UserException& e)
113 : {
114 0 : std::cerr << "User Exception" << std::endl ;
115 0 : return -2 ;
116 : }
117 2 : }
118 2 :
|