1 : //=============================================================================
2 : // File <$/src/cpp/prod/CORBA/YAClientOrb.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 : // Portability
23 : #include "yaorb/config.h"
24 : #include "src/cpp/prod/port/port_time.h"
25 : #include "src/cpp/prod/port/port_stdc.h"
26 : #include "src/cpp/prod/port/port_socket.h"
27 : #include "src/cpp/prod/port/port_unistd.h"
28 :
29 : #include <sys/types.h>
30 : #include <sys/select.h>
31 : #include <rpc/types.h>
32 : #include <stdio.h>
33 :
34 : #include <yaorb/CORBA.h>
35 :
36 : #include "src/cpp/prod/CORBA/YAClientOrb.h"
37 : #include "src/cpp/prod/boot/boot.h"
38 : #include "src/cpp/prod/tool/DEVELOPMENT.h"
39 : #include "src/cpp/prod/tool/Assert.h"
40 : #include "src/cpp/prod/protocol/iop/iop.h"
41 : #include "src/cpp/prod/protocol/cdr/cdr_memory.h"
42 :
43 : // Max number of pending connect request on the _listning socket.
44 : const int NUMBER_OF_CONNECTIONS = 5 ;
45 :
46 : //==============================================================================
47 : // SERVICES
48 : //==============================================================================
49 : #define SERVICE_ROOT_POA (const char*)"RootPOA"
50 : #define SERVICE_POA_CURRENT (const char*)"POACurrent"
51 : #define SERVICE_INTERFACE_REPOSITORY (const char*)"InterfaceRepository"
52 : #define SERVICE_NAME_SERVICE (const char*)"NameService"
53 : #define SERVICE_TRADING_SERVICE (const char*)"TradingService"
54 : #define SERVICE_SECURITY_CURRENT (const char*)"SecurityCurrent"
55 : #define SERVICE_TRANSACTION_CURRENT (const char*)"TransactionCurrent"
56 : #define SERVICE_DYN_ANY_FACTORY (const char*)"DynAnyFactory"
57 :
58 : //==============================================================================
59 : // YAORB : Client only ORB.
60 : //==============================================================================
61 :
62 : YAClientOrb::YAClientOrb(
63 4 : const String & confFileName)
64 4 : : YAOrb(confFileName)
65 : {
66 4 : YAORB::StubMgr::RegisterAll() ;
67 0 : }
68 :
69 0 : YAClientOrb::~YAClientOrb()
70 0 : {}
71 :
72 0 : CORBA::Boolean YAClientOrb::workPending(void)
73 : {
74 0 : NON_DEV("workPending") ;
75 : return true ;
76 : }
77 :
78 0 : void YAClientOrb::performWork(void)
79 : {
80 0 : NON_DEV("performWork") ;
81 : }
82 :
83 0 : void YAClientOrb::shutdown(CORBA::Boolean waitForCompletion)
84 : {
85 0 : NON_DEV("shutdown") ;
86 : }
87 :
88 0 : void YAClientOrb::run(void)
89 : {
90 0 : NON_DEV("run") ;
91 : }
92 :
93 4 : const CORBA::ORB::ObjectIdList& YAClientOrb::listInitialServices(void) const
94 : {
95 8 : static CORBA::String_var data[6] ;
96 : static bool init = false ;
97 :
98 4 : if (! init)
99 : {
100 4 : data[0] = SERVICE_INTERFACE_REPOSITORY ;
101 4 : data[1] = SERVICE_NAME_SERVICE ;
102 4 : data[2] = SERVICE_TRADING_SERVICE ;
103 4 : data[3] = SERVICE_SECURITY_CURRENT ;
104 4 : data[4] = SERVICE_TRANSACTION_CURRENT ;
105 4 : data[5] = SERVICE_DYN_ANY_FACTORY ;
106 4 : init = true ;
107 : }
108 :
109 12 : static CORBA::ORB::ObjectIdList services(6, 6, data, false) ;
110 :
111 : return services ;
112 : }
113 :
114 : CORBA::Object_ptr
115 : YAClientOrb::resolveInitialReferences(
116 4 : const char * id)
117 : {
118 4 : CORBA::Object_ptr ref = CORBA::Object::_nil() ;
119 4 : String tmp(id) ;
120 :
121 4 : if (tmp == SERVICE_INTERFACE_REPOSITORY)
122 : {
123 0 : NON_DEV("SERVICE_INTERFACE_REPOSITORY") ;
124 : }
125 4 : else if (tmp == SERVICE_NAME_SERVICE)
126 : {
127 4 : ref = FindNamingService(this) ;
128 : }
129 0 : else if (tmp == SERVICE_TRADING_SERVICE)
130 : {
131 0 : NON_DEV("SERVICE_TRADING_SERVICE") ;
132 : }
133 0 : else if (tmp == SERVICE_SECURITY_CURRENT)
134 : {
135 0 : NON_DEV("SERVICE_SECURITY_CURRENT") ;
136 : }
137 0 : else if (tmp == SERVICE_TRANSACTION_CURRENT)
138 : {
139 0 : NON_DEV("SERVICE_TRANSACTION_CURRENT") ;
140 : }
141 0 : else if (tmp == SERVICE_DYN_ANY_FACTORY)
142 : {
143 0 : NON_DEV("SERVICE_DYN_ANY_FACTORY") ;
144 : }
145 : else
146 : {
147 0 : NON_DEV("Unknown service") ;
148 : }
149 :
150 4 : return ref ;
151 : }
152 :
153 4 : CORBA::Boolean YAClientOrb::IsLocalIOR(IOP::IOR &)
154 : {
155 : return FALSE ;
156 : }
157 :
158 0 : CORBA::Object_ptr YAClientOrb::ResolveLocalIOR(IOP::IOR &)
159 : {
160 0 : return CORBA::Object::_nil() ;
161 : }
162 :
|