summaryrefslogtreecommitdiff
path: root/TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp
blob: cd599fd37e2927dcd793a54ce74f40acd163a9e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;
}