diff options
Diffstat (limited to 'TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp')
-rw-r--r-- | TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp b/TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp new file mode 100644 index 00000000000..cd599fd37e2 --- /dev/null +++ b/TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp @@ -0,0 +1,42 @@ +// $Id$ + +#include "CSD_Object_Adapter.h" +#include "CSD_Strategy_Proxy.h" +#include "CSD_POA.h" + +ACE_RCSID (CSD_Framework, + CSD_Object_Adapter, + "$Id$") + +TAO_CSD_Object_Adapter::TAO_CSD_Object_Adapter ( + const TAO_Server_Strategy_Factory::Active_Object_Map_Creation_Parameters &creation_parameters, + TAO_ORB_Core &orb_core) + : TAO_Object_Adapter (creation_parameters, orb_core) +{ + +} + +TAO_CSD_Object_Adapter::~TAO_CSD_Object_Adapter () +{ +} + +void +TAO_CSD_Object_Adapter::do_dispatch ( + TAO_ServerRequest& req, + TAO::Portable_Server::Servant_Upcall& upcall + ACE_ENV_ARG_DECL) +{ + TAO_Root_POA& poa = upcall.poa (); + TAO_CSD_POA* csd_poa = dynamic_cast<TAO_CSD_POA*> (&poa); + + if (csd_poa == 0) + { + ACE_THROW (CORBA::BAD_PARAM ()); + } + + TAO::CSD::Strategy_Proxy& proxy + = csd_poa->servant_dispatching_strategy_proxy (); + proxy.dispatch_request (req, upcall ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + |