summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Notify/Notify_Factory.cpp
blob: 575f62c7fec5a42662842874e557049e476fc5a1 (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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// $Id$

#include "ace/Dynamic_Service.h"
#include "Notify_Factory.h"
#include "Notify_Default_CO_Factory.h"
#include "Notify_Default_POA_Factory.h"
#include "Notify_Default_Collection_Factory.h"
#include "Notify_Default_EMO_Factory.h"
#include "Notify_Event.h"

ACE_RCSID(Notify, Notify_Factory, "$Id$")

TAO_Notify_CO_Factory* TAO_Notify_Factory::co_factory_ = 0;
TAO_Notify_POA_Factory* TAO_Notify_Factory::poa_factory_ = 0;
TAO_Notify_Collection_Factory* TAO_Notify_Factory::collection_factory_ = 0;
TAO_Notify_EMO_Factory* TAO_Notify_Factory::emo_factory_ = 0;

void
TAO_Notify_Factory::init (CORBA::Environment &ACE_TRY_ENV)
{
  co_factory_ =
    ACE_Dynamic_Service <TAO_Notify_CO_Factory>::instance (TAO_NOTIFY_DEF_CO_FACTORY_NAME);

  if (co_factory_ == 0)
    {
      ACE_NEW_THROW_EX (co_factory_,
                        TAO_Notify_Default_CO_Factory (),
                        CORBA::NO_MEMORY ());
    }

  poa_factory_ =
    ACE_Dynamic_Service <TAO_Notify_POA_Factory>::instance (TAO_NOTIFY_DEF_POA_FACTORY_NAME);

  if (poa_factory_ == 0)
    {
      ACE_NEW_THROW_EX (poa_factory_,
                        TAO_Notify_Default_POA_Factory (),
                        CORBA::NO_MEMORY ());
    }

  collection_factory_ =
    ACE_Dynamic_Service <TAO_Notify_Collection_Factory>::instance (TAO_NOTIFY_DEF_COLLECTION_FACTORY_NAME);

  if (collection_factory_ == 0)
    {
      ACE_NEW_THROW_EX (collection_factory_,
                        TAO_Notify_Default_Collection_Factory (),
                        CORBA::NO_MEMORY ());
    }

  emo_factory_ =
    ACE_Dynamic_Service <TAO_Notify_EMO_Factory>::instance (TAO_NOTIFY_DEF_EMO_FACTORY_NAME);

  if (emo_factory_ == 0)
    ACE_DEBUG ((LM_DEBUG, "Unable to load Event Manager factory...\n"));
  else
    {
      ACE_DEBUG ((LM_DEBUG, "Loaded Event Manager factory...\n"));
      emo_factory_->print_values ();
    }
}

void
TAO_Notify_Factory::shutdown (void)
{
  // @@
}

TAO_Notify_CO_Factory*
TAO_Notify_Factory::get_channel_objects_factory (void)
{
  return TAO_Notify_Factory::co_factory_;
}

TAO_Notify_POA_Factory*
TAO_Notify_Factory::get_poa_factory (void)
{
  return TAO_Notify_Factory::poa_factory_;
}

TAO_Notify_Collection_Factory*
TAO_Notify_Factory::get_collection_factory (void)
{
  return TAO_Notify_Factory::collection_factory_;
}

TAO_Notify_EMO_Factory*
TAO_Notify_Factory::create_event_manager_objects_factory (void)
{
  ACE_DECLARE_NEW_CORBA_ENV;
  TAO_Notify_Default_EMO_Factory* local_emo_fact;
  ACE_NEW_THROW_EX (local_emo_fact,
                    TAO_Notify_Default_EMO_Factory (),
                    CORBA::NO_MEMORY ());

  local_emo_fact->init_instance ();
  // @@ check return value
  return local_emo_fact;
}

// ****************************************************************

#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)

template class ACE_Dynamic_Service<TAO_Notify_CO_Factory>;
template class ACE_Dynamic_Service<TAO_Notify_POA_Factory>;
template class ACE_Dynamic_Service<TAO_Notify_Collection_Factory>;
template class ACE_Dynamic_Service<TAO_Notify_EMO_Factory>;

#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)

#pragma instantiate ACE_Dynamic_Service<TAO_Notify_Resource_Factory>

#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */