summaryrefslogtreecommitdiff
path: root/TAO/tao/RT_ORB_Loader.cpp
blob: b8e5f6df19db8275892aeb34e27f750b3d73b2ac (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
46
47
48
49
50
// $Id$

#include "RT_ORB_Loader.h"
#include "RT_ORB.h"
#include "RT_Current.h"

#include "tao/ORB_Core.h"
#include "tao/Priority_Mapping_Manager.h"

ACE_RCSID(TAO, RT_ORB_Loader, "$Id: ")

TAO_RT_ORB_Loader::TAO_RT_ORB_Loader (void)
{
}

CORBA::Object_ptr
TAO_RT_ORB_Loader::create_object (CORBA::ORB_ptr orb,
                                  int,
                                  char *[],
                                  CORBA::Environment &)
  ACE_THROW_SPEC (())
{
  /// Return RT_ORB
  CORBA::Object_ptr obj;
  ACE_NEW_RETURN (obj,
                  TAO_RT_ORB,
                  CORBA::Object::_nil ());

  /// Sets the RT_Current object and Priority_Mapping_Manager
  /// in the ORB.
  this->set_objects (orb->orb_core ());

  return obj;
}

void
TAO_RT_ORB_Loader::set_objects (TAO_ORB_Core *orb_core)
{
  /// Setup the RT_Current object in the ORB
  CORBA::Object_var current = new TAO_RT_Current (orb_core);
  orb_core->rt_current (current.in ());
}

ACE_FACTORY_DEFINE (TAO, TAO_RT_ORB_Loader)
ACE_STATIC_SVC_DEFINE (TAO_RT_ORB_Loader,
                       ACE_TEXT ("RT_ORB_Loader"),
                       ACE_SVC_OBJ_T,
                       &ACE_SVC_NAME (TAO_RT_ORB_Loader),
                       ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
                       0)