summaryrefslogtreecommitdiff
path: root/CIAO/ciao/Contexts/Context_Impl_Base_T.cpp
blob: a2a2dcaa838f9078853e3c1a0d3f6c7726abb191 (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// $Id$

#ifndef CIAO_CONTEXT_IMPL_BASE_T_C
#define CIAO_CONTEXT_IMPL_BASE_T_C

#include "ciao/Logger/Log_Macros.h"

namespace CIAO
{
  template <typename CONTAINER_TYPE>
  Context_Impl_Base_T<CONTAINER_TYPE>::Context_Impl_Base_T (
    ::Components::CCMHome_ptr home,
    typename CONTAINER_TYPE::_ptr_type  c,
    const char *instance_id)
    : container_ (CONTAINER_TYPE::_duplicate (c)),
      home_ (::Components::CCMHome::_duplicate (home)),
      ciao_instance_id_ (instance_id)
  {
  }

  template <typename CONTAINER_TYPE>
  Context_Impl_Base_T<CONTAINER_TYPE>::~Context_Impl_Base_T (void)
  {
  }

  // Operations from ::Components::CCMContext.
#if !defined (CCM_LW)
  template <typename CONTAINER_TYPE>
  Components::Principal_ptr
  Context_Impl_Base_T<CONTAINER_TYPE>::get_caller_principal (void)
  {
    throw CORBA::NO_IMPLEMENT ();
  }
#endif

  template <typename CONTAINER_TYPE>
  Components::CCMHome_ptr
  Context_Impl_Base_T<CONTAINER_TYPE>::get_CCM_home (void)
  {
    return Components::CCMHome::_duplicate (this->home_.in ());
  }

#if !defined (CCM_LW)
  template <typename CONTAINER_TYPE>
  CORBA::Boolean
  Context_Impl_Base_T<CONTAINER_TYPE>::get_rollback_only (void)
  {
    throw CORBA::NO_IMPLEMENT ();
  }
#endif

#if !defined (CCM_LW)
  template <typename CONTAINER_TYPE>
  Components::Transaction::UserTransaction_ptr
  Context_Impl_Base_T<CONTAINER_TYPE>::get_user_transaction (void)
  {
    throw CORBA::NO_IMPLEMENT ();
  }
#endif

#if !defined (CCM_LW)
  template <typename CONTAINER_TYPE>
  CORBA::Boolean
  Context_Impl_Base_T<CONTAINER_TYPE>::is_caller_in_role (const char * /* role */)
  {
    throw CORBA::NO_IMPLEMENT ();
  }
#endif

#if !defined (CCM_LW)
  template <typename CONTAINER_TYPE>
  void
  Context_Impl_Base_T<CONTAINER_TYPE>::set_rollback_only (void)
  {
    throw CORBA::NO_IMPLEMENT ();
  }
#endif

  template <typename CONTAINER_TYPE>
  CORBA::Object_ptr
  Context_Impl_Base_T<CONTAINER_TYPE>::resolve_service_reference(const char *service_id)
  {
    typename CONTAINER_TYPE::_var_type cnt_safe =
      CONTAINER_TYPE::_duplicate (this->container_.in ());
    if (::CORBA::is_nil (cnt_safe.in ()))
      {
        CIAO_ERROR (1,
                    (LM_ERROR,
                     CLINFO
                     "Context_Impl_Base_T::resolve_service_reference - "
                     "Error: Container is nil\n"));
        throw ::CORBA::INV_OBJREF ();
      }
    return cnt_safe->resolve_service_reference (service_id);
  }

  template <typename CONTAINER_TYPE>
  void
  Context_Impl_Base_T<CONTAINER_TYPE>::install_service_component_reference (
                                                      const char * service_id,
                                                      CORBA::Object_ptr objref)
  {
    typename CONTAINER_TYPE::_var_type cnt_safe =
      CONTAINER_TYPE::_duplicate (this->container_.in ());
    if (::CORBA::is_nil (cnt_safe.in ()))
      {
        CIAO_ERROR (1,
                    (LM_ERROR,
                     CLINFO
                     "Context_Impl_Base_T::install_service_component_reference - "
                     "Error: Container is nil\n"));
        throw ::CORBA::INV_OBJREF ();
      }
    return cnt_safe->install_service_component_reference (service_id, objref);

  }

  template <typename CONTAINER_TYPE>
  CORBA::Object_ptr
  Context_Impl_Base_T<CONTAINER_TYPE>::uninstall_service_component_reference (
                                                      const char * service_id)
  {
    typename CONTAINER_TYPE::_var_type cnt_safe =
      CONTAINER_TYPE::_duplicate (this->container_.in ());
    if (::CORBA::is_nil (cnt_safe.in ()))
      {
        CIAO_ERROR (1,
                    (LM_ERROR,
                     CLINFO
                     "Context_Impl_Base_T::uninstall_service_component_reference - "
                     "Error: Container is nil\n"));
        throw ::CORBA::INV_OBJREF ();
      }
    return cnt_safe->uninstall_service_component_reference (service_id);
  }

  template <typename CONTAINER_TYPE>
  const char *
  Context_Impl_Base_T<CONTAINER_TYPE>::_ciao_instance_id (void) const
  {
    return this->ciao_instance_id_.in ();
  }
}

#endif /* CIAO_CONTEXT_IMPL_BASE_T_C */