summaryrefslogtreecommitdiff
path: root/trunk/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp
blob: 088a426505c7f12762301fc419390c8bd2390750 (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
// $Id$

#include "PM_Handler.h"
#include "CIAOServerResources.hpp"
#include "ace/Auto_Ptr.h"

namespace CIAO
{
  namespace Config_Handlers
  {

    bool
    PM_Handler::priority_model_pd (const PriorityModelPolicyDef &src,
                                   ::CIAO::DAnCE::PriorityModelPolicyDef &dest)
    {
      switch (src.priority_model ().integral ())
        {
        case PriorityModel::SERVER_DECLARED_l:
          dest.priority_model = ::CIAO::DAnCE::SERVER_DECLARED;
          break;

        case PriorityModel::CLIENT_PROPAGATED_l:
          dest.priority_model = ::CIAO::DAnCE::CLIENT_PROPAGATED;
          break;

        default:
          ACE_ERROR ((LM_ERROR,
                      "Unknown priority model passed to priority_model_pd\n"));
          return false;
        }

      if (src.server_priority_p ())
        dest.server_priority = static_cast < ACE_INT32 > (src.server_priority ());
      else
        dest.server_priority = 0;

      return true;
    }


    PriorityModelPolicyDef
    PM_Handler::priority_model_pd (const ::CIAO::DAnCE::PriorityModelPolicyDef &src)
    {
      auto_ptr <PriorityModelPolicyDef> pmd;

      switch (src.priority_model)
        {
        case ::CIAO::DAnCE::CLIENT_PROPAGATED:
          pmd.reset (new PriorityModelPolicyDef (PriorityModel::CLIENT_PROPAGATED));
          break;

        case ::CIAO::DAnCE::SERVER_DECLARED:
          pmd.reset (new PriorityModelPolicyDef (PriorityModel::SERVER_DECLARED));
          break;

        default:
          ACE_ERROR ((LM_ERROR,
                      "Invalid priority model given to priority_model_pd\n"));
          throw 1;
        }

      pmd->server_priority (XMLSchema::int_ (src.server_priority));

      return *pmd;
    }


  }



}