/**
*
* 2000-2007
* Ericsson AB, All Rights Reserved
*
*
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Initial Developer of the Original Code is Ericsson AB.
*
*/
/**
* This module gives an example how it is possible to setup a connection
* Orbix3.0.1 and Orber3.0.2
*/
#define USE_IIOP
#include
#include
#include
#include
#include "NamingService.hh"
#include "InitialReference.hh"
#include "InitialReferences.hh"
#include "stack.hh"
int main(int argc, char** argv) {
CORBA::Object_ptr nsRef, initRef, objRef;
InitialReference init;
Orber::InitialReferences_var initp;
CosNaming::NamingContext_var Ns;
CosNaming::NameComponent nc;
CosNaming::Name_var name;
StackModule::StackFactory_var stackFac;
StackModule::Stack_var stack;
if (argc < 3) {
cout << "usage: " << argv[0] << " " << " " << endl;
exit (-1);
}
string srvHost = argv[1];
long srvPort = atoi(argv[2]);
cout << "Using host: " << srvHost << " Port: " << srvPort << endl;
try
{
// Create Initial reference (objectkey "INIT").
const string s = init.stringified_ior(srvHost, srvPort);
initRef = CORBA::Orbix.string_to_object(s);
initp = Orber::InitialReferences::_narrow(initRef);
nsRef = initp->get("NameService");
Ns = CosNaming::NamingContext::_narrow(nsRef);
// Create a name component.
name = new CosNaming::Name(1);
name->length(1);
name[0].id = CORBA::string_dup("StackFactory");
name[0].kind = CORBA::string_dup("");
// Look up the Object in the NamingService.
objRef = Ns->resolve(name);
stackFac = StackModule::StackFactory::_narrow(objRef);
stack = stackFac->create_stack();
// push & pop
stack->push(8);
stack->push(7);
stack->push(6);
cout << "Stack: " << stack->pop()
<< " " << stack->pop()
<< " " << stack->pop() << endl;
} catch(...) {
cerr << "call failed" << endl;
cerr << "Unexpected exception " << endl;
exit(1);
}
cout << "Completed successfully" << endl;
return 0;
}