diff options
Diffstat (limited to 'CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp')
-rw-r--r-- | CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp b/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp new file mode 100644 index 00000000000..088a426505c --- /dev/null +++ b/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp @@ -0,0 +1,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; + } + + + } + + + +} + |