summaryrefslogtreecommitdiff
path: root/CIAO/tools/Config_Handlers/RT-CCM/OC_Handler.cpp
blob: 41c45ee7c969df8770929cf81b1a882f91b019ba (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
// $Id$

#include "OC_Handler.h"
#include "OR_Handler.h"
#include "PS_Handler.h"
#include "CIAOServerResources.hpp"

namespace CIAO
{
  namespace Config_Handlers
  {

    bool OC_Handler::orb_config (
                                 const ORBConfigs &src,
                                 ::CIAO::DAnCE::ORBConfigs &dest)
    {
      if (src.resources_p ())
        OR_Handler::orb_resources (src.resources (), dest.orb_resources);

      CORBA::ULong pos (dest.policy_set.length ());

      dest.policy_set.length (pos + src.count_policySet ());

      for (ORBConfigs::policySet_const_iterator i = src.begin_policySet ();
           i != src.end_policySet ();
           ++i)
        {
          PS_Handler::policy_set (*i, dest.policy_set[pos++]);
        }

      return true;
    }


    ORBConfigs OC_Handler::orb_config (
                                       const ::CIAO::DAnCE::ORBConfigs &src)
    {
      ORBConfigs oc;

      oc.resources(OR_Handler::orb_resources (src.orb_resources));

      size_t len = src.policy_set.length();
      for(size_t i = 0; i < len; i++)
        {
          oc.add_policySet (PS_Handler::policy_set (src.policy_set [i]));
        }

      return oc;
    }
  }
}