summaryrefslogtreecommitdiff
path: root/TAO/tao/CSD_Framework/CSD_Object_Adapter.cpp
blob: ed74e7c413bc0dd17bda8b154be07a3f1b07b2f9 (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
43
44
45
// $Id$

#include "tao/CSD_Framework/CSD_Object_Adapter.h"
#include "tao/CSD_Framework/CSD_Strategy_Proxy.h"
#include "tao/CSD_Framework/CSD_POA.h"

ACE_RCSID (CSD_Framework,
           CSD_Object_Adapter,
           "$Id$")

TAO_BEGIN_VERSIONED_NAMESPACE_DECL

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;
}

TAO_END_VERSIONED_NAMESPACE_DECL