From 950b78b4cd58c90f1c19769994ee37c7286b9804 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Tue, 23 Jun 2009 23:43:56 +0100 Subject: middleware: added corba example Signed-off-by: Manuel Traut --- frameworks/middleware/examples/corba/Receiver.cpp | 85 +++++++ frameworks/middleware/examples/corba/Supplier.cpp | 86 +++++++ frameworks/middleware/examples/corba/ping.idl | 15 ++ frameworks/middleware/examples/corba/ping.mpc | 15 ++ frameworks/middleware/examples/corba/ping_I.cpp | 24 ++ frameworks/middleware/handout_middleware.tex | 269 +++++++++++++++++++++- 6 files changed, 492 insertions(+), 2 deletions(-) create mode 100755 frameworks/middleware/examples/corba/Receiver.cpp create mode 100755 frameworks/middleware/examples/corba/Supplier.cpp create mode 100755 frameworks/middleware/examples/corba/ping.idl create mode 100755 frameworks/middleware/examples/corba/ping.mpc create mode 100644 frameworks/middleware/examples/corba/ping_I.cpp (limited to 'frameworks') diff --git a/frameworks/middleware/examples/corba/Receiver.cpp b/frameworks/middleware/examples/corba/Receiver.cpp new file mode 100755 index 0000000..45ac9dc --- /dev/null +++ b/frameworks/middleware/examples/corba/Receiver.cpp @@ -0,0 +1,85 @@ +/** + * \file Receiver.cpp + * \brief RTCORBA Server, holding one Object for receiving ping calls + * + * \author Manuel Traut + * \version 2009-06-23 + */ + +#include + +#include "pingI.h" + +#include "orbsvcs/CosNamingC.h" +#include + +int main(int argc, char* argv[]){ + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ServerORB"); + std::cout<<"ORB initialized"<resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb); + std::cout<<"RT Extensions OK"<resolve_initial_references("RootPOA"); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow(poa.in()); + + // activate POA Manager + PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); + poa_manager->activate(); + std::cout<<"root_poa OK"<create_priority_model_policy( + RTCORBA::CLIENT_PROPAGATED, RTCORBA::maxPriority); + + // create ObjectAdapter, assign Policy + PortableServer::POA_var ping_poa = + root_poa->create_POA("ping_poa", poa_manager.in(), ping_policy); + + std::cout<<"Policy assigned"<activate_object(&ping_i); + CORBA::Object_var ping_obj = ping_poa->id_to_reference(object_id.in()); + CORBA::String_var ior = orb->object_to_string(ping_obj.in()); + std::cout<<"Servant activated"<resolve_initial_references("NameService"); + + std::cout<<"bind\n"; + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(naming_obj.in()); + + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("Receiver"); + + naming_context->rebind(name, ping_obj.in()); + std::cout<<"Bound Receiver to NameService"<run(); + std::cout<<"ORB ready"<destroy(1,1); + orb->destroy(); + + } catch(CORBA::Exception &any) { + std::cout<<"Exception: "< +#include +#include +#include +#include + +#include "pingC.h" + +static Linutronix::Ping_var ping; +static std::string str; + +int main(int argc, char* argv[]) +{ + if (argc > 1) + str = argv[1]; + else + str = "no argument given"; + + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ClientORB"); + std::cout<<"ORB ok"<resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb.in()); + std::cout<<"RTORB ok"<resolve_initial_references("NameService"); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(naming_obj.in()); + + std::cout<<"NamingService ok"<resolve(name); + ping = Linutronix::Ping::_narrow(ping_obj.in()); + std::cout<<"TransferOjekt ok"<create_private_connection_policy(); + + CORBA::Object_var new_tran = + ping->_set_policy_overrides(pc_policy, CORBA::SET_OVERRIDE); + + ping = Linutronix::Ping::_narrow(new_tran.in()); + std::cout<<"PrivateConnection ok"<send((const char*)str.c_str()); + clock_gettime(CLOCK_MONOTONIC, &time_done); + std::cout<destroy(); + + } catch(CORBA::Exception &any) { + std::cout<<"Exception occured: "< +#include + +#include "pingI.h" + +// Implementation skeleton constructor +Linutronix_Ping_i::Linutronix_Ping_i (void) +{ +} + +// Implementation skeleton destructor +Linutronix_Ping_i::~Linutronix_Ping_i (void) +{ +} + +void Linutronix_Ping_i::send ( + const char * payload) +{ + // Add your implementation here + struct timespec time_rx; + clock_gettime(CLOCK_MONOTONIC, &time_rx); + std::cout< +#include + +#include "pingI.h" + +// Implementation skeleton constructor +Linutronix_Ping_i::Linutronix_Ping_i (void) +{ +} + +// Implementation skeleton destructor +Linutronix_Ping_i::~Linutronix_Ping_i (void) +{ +} + +void Linutronix_Ping_i::send ( + const char * payload) +{ + // Add your implementation here + struct timespec time_rx; + clock_gettime(CLOCK_MONOTONIC, &time_rx); + std::cout< + +#include "pingI.h" + +#include "orbsvcs/CosNamingC.h" +#include + +int main(int argc, char* argv[]){ + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ServerORB"); + std::cout<<"ORB initialized"<resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb); + std::cout<<"RT Extensions OK"<resolve_initial_references("RootPOA"); + PortableServer::POA_var root_poa = PortableServer::POA::_narrow(poa.in()); + + // activate POA Manager + PortableServer::POAManager_var poa_manager = root_poa->the_POAManager(); + poa_manager->activate(); + std::cout<<"root_poa OK"<create_priority_model_policy( + RTCORBA::CLIENT_PROPAGATED, RTCORBA::maxPriority); + + // create ObjectAdapter, assign Policy + PortableServer::POA_var ping_poa = + root_poa->create_POA("ping_poa", poa_manager.in(), ping_policy); + + std::cout<<"Policy assigned"<activate_object(&ping_i); + CORBA::Object_var ping_obj = ping_poa->id_to_reference(object_id.in()); + CORBA::String_var ior = orb->object_to_string(ping_obj.in()); + std::cout<<"Servant activated"<resolve_initial_references("NameService"); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(naming_obj.in()); + + CosNaming::Name name(1); + name.length(1); + name[0].id = CORBA::string_dup("Receiver"); + naming_context->rebind(name, ping_obj.in()); + std::cout<<"Bound Receiver to NameService"<run(); + std::cout<<"ORB ready"<destroy(1,1); + orb->destroy(); + + } catch(CORBA::Exception &any) { + std::cout<<"Exception: "< +#include +#include +#include +#include + +#include "pingC.h" + +static Linutronix::Ping_var ping; +static std::string str; + +int main(int argc, char* argv[]) +{ + if (argc > 1) + str = argv[1]; + else + str = "no argument given"; + + try{ + // initialize ORB + CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "ClientORB"); + std::cout<<"ORB ok"<resolve_initial_references("RTORB"); + RTCORBA::RTORB_var rt_orb = RTCORBA::RTORB::_narrow(rtorb.in()); + std::cout<<"RTORB ok"<resolve_initial_references("NameService"); + + CosNaming::NamingContext_var naming_context = + CosNaming::NamingContext::_narrow(naming_obj.in()); + + std::cout<<"NamingService ok"<resolve(name); + ping = Linutronix::Ping::_narrow(ping_obj.in()); + std::cout<<"TransferOjekt ok"<create_private_connection_policy(); + + CORBA::Object_var new_tran = + ping->_set_policy_overrides(pc_policy, CORBA::SET_OVERRIDE); + + ping = Linutronix::Ping::_narrow(new_tran.in()); + std::cout<<"PrivateConnection ok"<send((const char*)str.c_str()); + clock_gettime(CLOCK_MONOTONIC, &time_done); + std::cout<destroy(); + + } catch(CORBA::Exception &any) { + std::cout<<"Exception occured: "<